ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

skills 仓库实战指南:用 gcloud 配置单项目 Cloud Logging(日志桶、日志视图、日志指标与成本优化)

skills 仓库实战指南:用 gcloud 配置单项目 Cloud Logging(日志桶、日志视图、日志指标与成本优化) skills 仓库实战指南用 gcloud 配置单项目 Cloud Logging日志桶、日志视图、日志指标与成本优化【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills本篇基于 cloud-logging-configuration-basics 技能文档系统讲解在单一 Google Cloud 项目中如何用gcloudCLI 完成 Cloud Logging 的完整配置创建带保留期与 Observability Analytics 的区域日志桶、通过日志 sink 路由日志、创建 logs-based 指标、用日志视图和带 IAM 条件的 Logs View Accessor 限制敏感日志可见性以及通过 sink 排除与sample()采样控制日志成本。读完本文你可以按“安全确认分级”的规范安全地让 AI Agent 或直接手动完成一套合规、可审计、可控成本的单项目日志配置。技能定位与适用边界该技能定义于 skills/cloud/cloud-logging-configuration-basics/SKILL.md其元数据中明确声明了覆盖范围配置单项目single-project的 Cloud Logging 资源区域日志桶regional log buckets、日志 sink、日志视图log views在默认视图_Default的过滤器中排除或隐藏敏感日志针对日志视图的 IAM 权限roles/logging.viewAccessor与 IAM conditionslogs-based metrics、log exclusions、采样sampling。技能 front matter 中同时给出了明确的不适用边界跨项目或组合日志配置请改用仓库中的姊妹技能 cloud-logging-cross-project-configuration该技能覆盖中央日志桶路由与读时聚合log scopes场景。仓库根目录 index.json 中对这两个技能的描述也体现了同样的边界划分可据此快速判断需求归属。另外文档针对受限沙箱环境给出了一条关键约束在评测或网络受限环境中不得运行网络发现类命令去探测项目 ID、资源名或组织 ID而应直接使用提示中给定的确切项目 ID 或{project_id}等占位符直接执行配置命令——否则发现命令会挂起直至超时。安全确认分级Safety TiersAgent 执行 gcloud 命令前的强制规则这是该技能最有价值的设计之一所有 Cloud Logging 的变更操作被划分为四个安全级别TierAgent 必须在执行命令前对号入座。从源码结构看这套分级在 cloud-logging-cross-project-configuration 中也以相同方式复用并与 gcloud 技能 中“IAM 变更禁止自主执行、破坏性操作必须显式授权”的通用红线一致。级别含义典型命令执行规则Tier R只读仅读取状态或查询日志gcloud logging read、gcloud logging buckets list无需确认可立即执行以收集信息Tier M非计费变更不产生直接存储/计费成本、不影响资源安全与访问策略的配置修改或元数据创建gcloud logging views create、gcloud logging views update、gcloud logging scopes create、gcloud logging buckets create无需确认可立即执行以应用配置Tier B计费与安全敏感变更高危创建产生计费的资源/集成或修改安全与 IAM 访问控制策略存在权限提升风险gcloud logging metrics create、gcloud logging links create、gcloud projects add-iam-policy-binding必须交互式确认须向用户展示逐字命令并获得确认后方可执行严禁在与用户确认的同一轮直接执行Tier D不可逆数据丢失永久丢弃或删除日志的操作例如 sink 排除gcloud logging buckets delete、gcloud logging sinks update --add-exclusion必须显式键入确认例如 Yes, discard logs暂停执行直到用户回复这条分级规则的意义在于日志桶、日志视图这类“纯元数据”资源本身不计费可以放手让 Agent 自动化而 sink 路由、指标创建、IAM 授权会持续产生费用或改变访问面sink 排除则可能直接导致日志不再落盘必须逐层加码确认强度。前置条件技能文档说明若本机缺少gcloud可执行文件需先按 Google Cloud SDK 官方安装指南安装 Google Cloud CLI安装方式参见 README 中提到的技能安装渠道之外的官方文档。执行本文全部命令的前提是已完成gcloud登录且当前账号对目标项目具备相应 IAM 权限。仓库中的 gcloud 技能 还给出了 Agent 侧的通用执行约束每条命令显式携带--project{project_id}避免命中错误项目、为执行类命令附加--quiet防止交互挂起、优先通过gcloud help leaf_command校验叶子命令语法。创建日志桶合规与分析场景Tier M为监管合规创建指定保留期、启用 Observability Analytics 的区域日志桶gcloud logging buckets create {bucket_id} \ --project{project_id} \ --location{region} \ --retention-days{retention_days} \ --enable-analytics参数说明{bucket_id}日志桶 ID例如my-custom-bucket{region}例如us-central1。要启用 Observability Analytics 必须使用区域regional日志桶不能使用global位置{retention_days}保留天数例如365一天一删到期日志自动清除。两个关键事实来自文档原文计费特性日志桶本身在没有任何日志被 sink 路由进来之前的存储与摄入均不产生费用——费用发生在“路由”这一步强制降级警告一旦日志桶升级为使用 Observability Analytics就无法再降级移除分析能力。文档要求在给出任何成本优化或排除日志的建议时都必须显式附带这句警告。验证日志桶Tier Rgcloud logging buckets describe {bucket_id} \ --location{region} \ --project{project_id}检查输出中的保留期、位置与 Analytics 配置以确认合规项达标。将日志路由到日志桶Tier B计费动作Tier B将日志条目路由到桶会产生与存储数据量成正比的持续费用。执行前必须获得用户的交互式确认。日志条目只有当某个 sink 的过滤器匹配条目并指向该桶时才会被存储到该桶。路由命令gcloud logging sinks create {sink_id} \ projects/{project_id}/locations/{region}/buckets/{bucket_id} \ --log-filter{filter_expression} \ --project{project_id}这里 sink 的目标是一个完整的路径资源名projects/{project_id}/locations/{region}/buckets/{bucket_id}--log-filter用 Logging Query Language 表达式圈定要路由的日志子集。若需要用自然语言生成这段 filter可参考仓库中同属CloudObservabilityAndMonitoring分类的 cloud-logging-query-generation 技能它专门负责生成 LQL 查询并强调字符串字面量必须用双引号、布尔运算符大写AND/OR/NOT等语法规范。Logs-Based Metrics从日志生成监控指标Logs-based metrics 统计匹配某个过滤器的日志条目数量可用于跟踪错误率并搭建告警策略。1. 创建计数器指标Tier B计费动作Tier B创建 logs-based 指标会按上报的数据点数量持续计费执行前必须获得交互式确认。例如统计 “OutOfMemory” 错误出现次数gcloud logging metrics create {metric_name} \ --log-filter{filter_expression} \ --description{description} \ --project{project_id}参数示例{metric_name}oom_error_count{filter_expression}textPayload:OutOfMemory{description}Count of log entries about OOMs。文档同时提示指标的各字段存在取值限制需参照 Cloud Logging REST 参考中的projects.metricsLogMetric资源定义来约束字段配置。2. 验证指标Tier Rgcloud logging metrics describe {metric_name} \ --project{project_id}用describe确认指标存在并检查其过滤器与配置是否符合预期。限制敏感日志的访问安全场景背景事实任何对该项目拥有roles/logging.viewer的人都可以通过项目的_Default日志视图看到_Default日志桶中的日志。要收窄敏感日志的可见面分四步进行Agent 歧义处理规则如果用户只说“排除/隐藏/移除”敏感日志而没有说明是否要停止存储必须默认走第 1 步——从默认视图中排除。这是一个安全的、非破坏性的 Tier M 操作只有当用户明确使用“停止存储stop storing”“永久丢弃permanently discard”“sink 排除sink exclusion”这类破坏性措辞时才执行下文“从存储中丢弃敏感日志”一节的操作。1. 从默认视图排除敏感日志Tier M更新_Default日志视图的过滤器把敏感日志显式排除在默认访问面之外gcloud logging views update _Default \ --bucket_Default \ --locationglobal \ --project{project_id} \ --log-filterNOT LOG_ID(cloudaudit.googleapis.com/data_access) AND NOT LOG_ID(externalaudit.googleapis.com/data_access) AND NOT LOG_ID({sensitive_log_id})该过滤器同时排除了云审计数据访问日志cloudaudit.googleapis.com/data_access、externalaudit.googleapis.com/data_access与指定的{sensitive_log_id}。注意过滤器中统一使用LOG_ID(...)而不是logName匹配——姊妹技能 cross-project 文档 的排障章节也专门指出logName:abc这类标准写法在 sink 过滤器中可能匹配失败精确匹配时应始终使用LOG_ID(abc)。2. 创建包含敏感日志的专用日志视图Tier M例如创建一个只有安全团队可见的security-logs-view其过滤器只放行{sensitive_log_id}gcloud logging views create security-logs-view \ --bucket_Default \ --locationglobal \ --project{project_id} \ --log-filterLOG_ID({sensitive_log_id}) \ --descriptionSensitive logs3. 用 IAM 条件把 Logs View Accessor 授权限定到该视图Tier B安全动作Tier B授予 IAM 权限会改变访问控制策略执行前必须由用户显式确认。为{security_group_email}对应的安全组授权使其只能访问_Default桶中的security-logs-viewgcloud projects add-iam-policy-binding {project_id} \ --membergroup:{security_group_email} \ --roleroles/logging.viewAccessor \ --conditionexpressionresource.nameprojects/{project_id}/locations/global/buckets/_Default/views/security-logs-view,titleRestricted to Specific Log View,descriptionOnly allows access to the specified log view要点授予roles/logging.viewAccessor时必须附带把授权限定到特定日志视图的 IAM conditioncondition 表达式中的resource.name需要与视图真实资源名完全一致其中{location}按日志桶所在位置替换例如global或区域位置us-central1。4. 验证敏感日志限制Tier Rgcloud logging views describe {view_id} \ --bucket{bucket_id} \ --location{region} \ --project{project_id}确认输出中filter块包含预期的限制表达式。从存储中丢弃敏感日志Tier D不可逆若组织合规策略要求完全不留存某些敏感日志可以在日志写入磁盘之前通过 sink 排除将其丢弃gcloud logging sinks update _Default \ --project{project_id} \ --add-exclusionnameexclude-sensitive,filterLOG_ID({sensitive_log_id})破坏性动作Tier D对_Defaultsink 的排除会立即且不可逆地删除匹配的日志条目。文档为该步骤设定了最严格的执行规则必须先向用户请求显式键入确认例如 I confirm I want to exclude{sensitive_log_id}logs from storage并且在询问确认的同一轮禁止执行gcloud logging sinks update命令——必须立即停止工具执行等待用户回复后再进行。成本优化排除与采样Tier DCloud Logging 的成本由摄入与存储的数据量决定。降低成本的思路是排除高吞吐、低价值的日志或对其采样。每一个把日志路由到独立日志桶的 sink 都是成本构成点也就是优化候选。破坏性动作Tier D本节的排除操作会立即停止部分日志条目的存储执行前必须获得显式键入确认例如 I confirm I want to exclude load balancer logs。完全排除某一类高吞吐日志Tier D对路由日志进目标桶的 sink 添加排除gcloud logging sinks update {sink_id} \ --project{project_id} \ --add-exclusionname{exclusion_name},filter{exclusion_filter}参数示例{sink_id}_Default{exclusion_name}exclude-lb-logs{exclusion_filter}resource.typehttp_load_balancer。对高吞吐日志采样Tier D若还需要保留一部分日志用于分析可在排除过滤器中使用sample()函数sample(field, fraction)会匹配fraction比例的日志当它出现在排除过滤器中时被匹配的日志会被丢弃。要排除 90% 的日志即只保留 10%就写sample(insertId, 0.9)。例如排除 90% 的DEBUG级别日志gcloud logging sinks update _Default \ --project{project_id} \ --add-exclusionnamesample-debug-logs,filterseverityDEBUG AND sample(insertId, 0.9)验证排除与成本优化配置Tier R列出 sink 详情并检查exclusions字段确认过滤器已生效。以_Defaultsink 为例gcloud logging sinks describe _Default --project{project_id}技能文档中引用的官方参考主题原技能文档末尾列出了三类 Cloud Logging 官方参考本文不输出外部链接仅按主题列出便于读者按名检索Cloud Logging 计数器指标Counter Metrics——对应上文 logs-based metrics 一节Cloud Logging 自定义日志视图Custom Log Views——对应_Default视图过滤与专用视图创建Cloud Logging 日志路由与排除Routing and Exclusions——对应 sink 路由与排除配置。小结与延伸围绕 cloud-logging-configuration-basics 这条主线可以把单项目日志配置归纳为一条可执行链路gcloud logging buckets createTier M区域位置 保留期 --enable-analytics注意 Analytics 不可降级gcloud logging sinks createTier B路由日志开始计费gcloud logging views update/createTier M用_Default过滤器与专用视图划分敏感日志可见面gcloud projects add-iam-policy-bindingroles/logging.viewAccessor IAM conditionTier B把访问权限钉死到具体视图gcloud logging metrics createTier B把日志模式变成可告警的指标gcloud logging sinks update --add-exclusion/sample()Tier D显式键入确认后做排除与采样全程用describe类 Tier R 命令闭环验证。若日志规模扩展到多项目应切换到 cloud-logging-cross-project-configuration 技能处理集中式存储或读时聚合所有gcloud命令的执行细节语法校验、数据缩减、非交互约束则可参照 gcloud 技能 与 skills/cloud/gcloud/references/cli-usage.md 中的规范。仓库通过 README 提供的npx skills add google/skills方式安装上述技能后即可在 Agent 工作流中复用。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表