如何配置跨项目集中日志:创建跨项目日志 sink 并将多项目日志路由到中心存储桶

发布时间:2026/9/15 18:13:21

如何配置跨项目集中日志:创建跨项目日志 sink 并将多项目日志路由到中心存储桶 如何配置跨项目集中日志创建跨项目日志 sink 并将多项目日志路由到中心存储桶【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills这篇文章解决的任务是把多个源项目source project产生的日志统一路由到一个中心项目central project中的日志存储桶log bucket让所有日志无论从哪个项目产生都存在同一个地方、可以用同一条查询路径读取。文中所有命令来自 skills 仓库的 跨项目日志配置文档使用gcloudCLI 完成配置并用测试日志验证路由是否生效。该文档给出了两种跨项目日志架构集中存储Centralized Storage即日志路由本文主题和读取时聚合Read-Time Aggregation基于 Log Scopes。文档的决策矩阵指出集中存储可扩展到数千个项目规模日志集中在单个 log bucket 中便于通过 Observability Analytics 做统一 SQL 分析访问控制通过中心 bucket 上的 Log Views 收敛代价是如果没配置排除规则可能出现日志重复存储的成本。读取时聚合则适合 375 个项目以下的规模。如果你要的是日志真正落到一个中心存储桶就走本文的日志路由路径。准备条件已安装gcloudCLI 并完成认证。仓库的 单项目日志配置文档 指出如果缺少gcloud可执行文件需要先按 Google Cloud CLI 安装指南安装。确定两个角色存放中心日志桶的中心项目以及一个或多个要路由日志的源项目。以下命令中的花括号占位符需要替换为你自己的资源值文档不提供默认值占位符替换对象{central_project_id}中心项目 ID{source_project_id}源项目 ID每个源项目执行一次{source_organization_id}源组织 ID仅组织级 sink 使用{bucket_id}中心日志桶名称文档架构图中的示例名为central-logs-bucket{region}日志桶所在区域例如us-central1{retention_days}日志保留天数例如365单项目文档给出的示例值{sink_name}sink 名称源项目和中心项目的 sink 可以同名{test_log_id}验证用的测试日志 ID文档的架构图示例使用了central-logs-bucket位于us-central1作为中心桶可直接作为命名参考。第一步在中心项目创建中心日志桶创建自定义日志桶并启用 Log Analyticsgcloud logging buckets create {bucket_id} \ --project{central_project_id} \ --location{region} \ --retention-days{retention_days} \ --enable-analytics两个约束需要注意必须使用区域性日志桶例如把--location设为us-central1不要用global。文档说明这是为了兼容 Observability Analytics 和 SQL 查询。仓库的单项目日志文档同时指出日志桶在被 sink 路由进日志之前不产生存储或摄入费用。创建后可以查看桶配置来核对位置、保留天数等设置是否正确gcloud logging buckets describe {bucket_id} \ --location{region} \ --project{central_project_id}第二步在中心项目创建指向中心桶的 sink在中心项目创建一个项目级 sink指向刚建的中心日志桶。这个 sink 负责把落到中心项目日志路由器log router的日志写入中心桶gcloud logging sinks create {sink_name} \ logging.googleapis.com/projects/{central_project_id}/locations/{region}/buckets/{bucket_id} \ --project{central_project_id}第三步在每个源资源创建跨项目 sink要路由日志必须在每个源组织、文件夹或项目上创建一个指向中心项目的 sink。文档的推荐做法是用排除规则过滤掉审计日志把所有非审计日志路由到中心项目然后到目的地用自定义 Log Views 分区或限制访问而不是在 sink 上按业务细粒度过滤。sink 也支持用--log-filter参数只路由日志的一个子集文档将其作为可选手段。组织级 sink用--include-children覆盖组织及其子资源下的日志gcloud logging sinks create {sink_name} \ logging.googleapis.com/projects/{central_project_id} \ --organization{source_organization_id} \ --include-children \ --exclusionfilterLOG_ID(cloudaudit.googleapis.com/activity) \ --exclusionfilterLOG_ID(externalaudit.googleapis.com/activity) \ --exclusionfilterLOG_ID(cloudaudit.googleapis.com/system_event) \ --exclusionfilterLOG_ID(externalaudit.googleapis.com/system_event) \ --exclusionfilterLOG_ID(cloudaudit.googleapis.com/access_transparency) \ --exclusionfilterLOG_ID(externalaudit.googleapis.com/access_transparency)项目级 sink每个源项目执行一次gcloud logging sinks create {sink_name} \ logging.googleapis.com/projects/{central_project_id} \ --project{source_project_id} \ --exclusionfilterLOG_ID(cloudaudit.googleapis.com/activity) \ --exclusionfilterLOG_ID(externalaudit.googleapis.com/activity) \ --exclusionfilterLOG_ID(cloudaudit.googleapis.com/system_event) \ --exclusionfilterLOG_ID(externalaudit.googleapis.com/system_event) \ --exclusionfilterLOG_ID(cloudaudit.googleapis.com/access_transparency) \ --exclusionfilterLOG_ID(externalaudit.googleapis.com/access_transparency)第四步授予 sink 写者身份 IAM 权限sink 由服务账号写日志必须把写者身份writer identity显式授权到中心项目否则日志不会落地。这一步会修改 IAM 访问控制策略文档将其列为安全敏感操作要求执行前向用户确认——在手动执行时同样适用先核对--member的账号和--project目标无误再运行。给源 sink 的写者身份授权先取出源 sink 的writerIdentitygcloud logging sinks describe {sink_name} \ --project{source_project_id} \ --formatvalue(writerIdentity)输出的serviceAccount:...值记为{source_writer_identity}然后在中心项目授予roles/logging.logWriter允许源 sink 把日志写入中心项目的路由器gcloud projects add-iam-policy-binding {central_project_id} \ --member{source_writer_identity} \ --roleroles/logging.logWriter给中心 sink 的写者身份授权取出中心项目里那个 sink 的writerIdentitygcloud logging sinks describe {central_sink_name} \ --project{central_project_id} \ --formatvalue(writerIdentity)这里{central_sink_name}就是第二步在中心项目创建的 sink 名称。输出的{central_writer_identity}用于授予roles/logging.bucketWriter允许它把日志写入中心日志桶gcloud projects add-iam-policy-binding {central_project_id} \ --member{central_writer_identity} \ --roleroles/logging.bucketWriter可选在中心桶上创建自定义 Log Views所有源日志最终都落在同一个中心桶里。如果需要按日志 ID 或来源项目做分区、或按视图收敛访问权限可以在中心桶上创建自定义 Log Views按日志 ID 过滤gcloud logging views create {view_id} \ --bucket{bucket_id} \ --location{region} \ --project{central_project_id} \ --log-filterLOG_ID({log_id})按来源项目过滤{view_id}是新建视图的 IDgcloud logging views create {view_id} \ --bucket{bucket_id} \ --location{region} \ --project{central_project_id} \ --log-filterproject_id{source_project_id}验证确认日志已路由到中心桶在源项目写一条测试日志gcloud logging write {test_log_id} Test log entry for verification \ --severityWARNING \ --project{source_project_id}从中心日志桶读取这条测试日志。对区域性日志桶必须带--view参数默认的_Default视图只包含匹配默认过滤器的日志应查询中心桶的_AllLogs视图或你刚创建的自定义视图gcloud logging read logName:projects/{source_project_id}/logs/{test_log_id} \ --bucket{bucket_id} \ --location{region} \ --view_AllLogs \ --project{central_project_id}如果这条测试日志能从中中心桶读出说明源项目到中心桶的路由链路已经打通。日志没有出现在中心桶时文档把排查收敛为两个检查点按顺序走核对源资源上 sink 的过滤条件。两个已知的坑标准过滤表达式如logName:abc或logNameprojects/{project_id}/logs/abc在 log sink 里可能匹配失败文档要求精确匹配时始终使用LOG_ID(abc)形式。检查排除过滤器exclusion是否意外把目标日志丢弃了。核对并补授写者身份权限——文档标注这是最常见的原因。源 sink 的写者身份服务账号必须显式获得中心资源上的权限先用上面的gcloud logging sinks describe ... --formatvalue(writerIdentity)拿到身份再对 Cloud Logging 桶授予roles/logging.bucketWritergcloud projects add-iam-policy-binding {central_project_id} \ --member{writer_identity} \ --roleroles/logging.bucketWriter文档同时列出其他目的地类型的对应角色GCS 桶为roles/storage.objectCreator、Pub/Sub 主题为roles/pubsub.publisher、BigQuery 数据集为roles/bigquery.dataEditor本文的路由目标是 Cloud Logging 桶只需bucketWriter。完成路由之后文档的决策矩阵给出的延伸方向是中心桶启用了 Log Analytics可以通过 Observability Analytics 对集中存储的日志做统一的 SQL 查询如果不希望日志在中心桶和项目默认桶中重复存储这是集中存储方案的主要成本项可以回头在源 sink 上收紧排除规则但注意排除规则会直接丢弃匹配的日志属于不可逆操作。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 18:13:21

SolidWorks到Simscape模型错位原因与修复指南

1. 错位这个事,先别急着怪软件做机械臂仿真或者多体动力学分析的人,应该都有过这么一段痛苦经历:SolidWorks里模型明明装配得好好的,一到Simscape里就“原形毕露”。我拿自己手上那套六轴机械臂来说。在SolidWorks里所有的同心配合…

2026/9/15 18:08:20

DINOv3 卫星图像分析:零样本分类 81.1%,分割 75.0%

DINOv3 卫星图像分析:零样本分类 81.1%,分割 75.0% 【免费下载链接】dinov3 Reference PyTorch implementation and models for DINOv3 项目地址: https://gitcode.com/GitHub_Trending/di/dinov3 DINOv3 是 Meta AI 推出的自监督视觉基础模型&am…

2026/9/15 18:23:24

Automatisch 集成 Twitter:OAuth 1.0a 连接配置完全指南

Automatisch 集成 Twitter:OAuth 1.0a 连接配置完全指南 【免费下载链接】automatisch The open source Zapier alternative. Build workflow automation without spending time and money. 项目地址: https://gitcode.com/GitHub_Trending/au/automatisch 本…

2026/9/15 18:18:24

PHP会员发布版游戏站源码部署与安全加固实战

简介:一套基于PHP开发的98游戏发布站会员版源码,面向游戏站长和PHP初中级开发者,可快速搭建支持会员上传、游戏分类、下载管理、评论评分等功能的在线发布平台,无需从零开发。压缩包共242个文件,以84个PHP脚本为核心&a…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码