GCP观测性最佳实践技能Skill gcloud-usage

本技能提供Google Cloud Platform(GCP)观测性最佳实践指南,涵盖结构化日志、日志查询、指标与追踪区别、警报设计和成本优化,帮助开发者监控、调试和优化GCP应用。关键词:GCP, 观测性, 日志, 指标, 追踪, 警报, 成本优化。

GCP 0 次安装 0 次浏览 更新于 3/16/2026

name: gcloud-usage description: 当用户询问“GCloud日志”、“Cloud Logging查询”、“Google Cloud指标”、“GCP观测性”、“追踪分析”或“在GCP上调试生产问题”时,应使用此技能。

GCP 观测性最佳实践

结构化日志

JSON 日志格式

使用结构化 JSON 日志以提高可查询性:

{
  "severity": "ERROR",
  "message": "支付失败",
  "httpRequest": { "requestMethod": "POST", "requestUrl": "/api/payment" },
  "labels": { "user_id": "123", "transaction_id": "abc" },
  "timestamp": "2025-01-15T10:30:00Z"
}

严重性级别

使用适当的严重性进行过滤:

  • DEBUG: 详细的诊断信息
  • INFO: 正常操作,里程碑
  • NOTICE: 正常但重要的事件
  • WARNING: 潜在问题,性能下降
  • ERROR: 不停止服务的故障
  • CRITICAL: 需要立即行动的故障
  • ALERT: 人员必须立即采取行动
  • EMERGENCY: 系统不可用

日志过滤查询

常见过滤器

# 按严重性
severity >= WARNING

# 按资源
resource.type="cloud_run_revision"
resource.labels.service_name="my-service"

# 按时间
timestamp >= "2025-01-15T00:00:00Z"

# 按文本内容
textPayload =~ "error.*timeout"

# 按 JSON 字段
jsonPayload.user_id = "123"

# 组合
severity >= ERROR AND resource.labels.service_name="api"

高级查询

# 正则表达式匹配
textPayload =~ "status=[45][0-9]{2}"

# 子字符串搜索
textPayload : "connection refused"

# 多值
severity = (ERROR OR CRITICAL)

指标 vs 日志 vs 追踪

何时使用每种

指标: 随时间聚合的数值数据

  • 请求计数,延迟百分位数
  • 资源利用率(CPU,内存)
  • 业务 KPI(订单/分钟)

日志: 详细的事件记录

  • 错误详情和堆栈跟踪
  • 审计追踪
  • 调试特定请求

追踪: 跨服务的请求流

  • 按服务分解延迟
  • 识别瓶颈
  • 分布式系统调试

警报策略设计

警报最佳实践

  • 避免警报疲劳: 仅对可操作问题发出警报
  • 使用多条件警报: 减少瞬态峰值噪音
  • 设置适当的时间窗口: 大多数指标 5-15 分钟
  • 包括运行手册链接: 帮助响应者快速行动

常见警报模式

错误率:

  • 条件:错误率 > 1% 持续 5 分钟
  • 适用于:服务健康监控

延迟:

  • 条件:P99 延迟 > 2 秒持续 10 分钟
  • 适用于:性能下降检测

资源耗尽:

  • 条件:内存 > 90% 持续 5 分钟
  • 适用于:容量规划触发

成本优化

减少日志成本

  • 排除过滤器: 在摄取时丢弃冗长日志
  • 采样: 仅记录高容量事件的百分比
  • 缩短保留期: 减少默认 30 天保留期
  • 降级日志: 路由到更便宜的存储桶

排除过滤器示例

# 排除健康检查
resource.type="cloud_run_revision" AND httpRequest.requestUrl="/health"

# 排除生产中的调试日志
severity = DEBUG

调试工作流程

  1. 从指标开始: 识别问题开始时间
  2. 与日志关联: 过滤问题时间附近的日志
  3. 使用追踪: 跟踪跨服务的特定请求
  4. 检查资源日志: 查找基础设施问题
  5. 比较基线: 对照已知良好时期检查