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
调试工作流程
- 从指标开始: 识别问题开始时间
- 与日志关联: 过滤问题时间附近的日志
- 使用追踪: 跟踪跨服务的特定请求
- 检查资源日志: 查找基础设施问题
- 比较基线: 对照已知良好时期检查