GCP 日志实战:Cloud Logging 查询、导出与成本治理
GCP Cloud Logging 中文实战:Log Explorer 查询语言、日志条目结构(jsonPayload/severity/resource)、Sinks 导出到 BigQuery/GCS/Pub/Sub、基于日志的指标、保留期与成本治理、GKE/GCE 采集,以及与观测云平台联动的落地方案。
Cloud Logging(原 Stackdriver Logging)是 Google Cloud 的统一日志服务:所有 GCP 资源的日志自动汇入,配合 Log Explorer 查询、Sink 导出、日志指标构成完整体系。本文讲解核心能力与生产实践,并给出与观测云联动的落地方案。
核心要点速览
- 日志条目是结构化文档:每条含 timestamp、severity、resource、jsonPayload/textPayload、labels——GCP 日志天生结构化。
- Log Explorer 查询语言是核心技能:按资源、级别、字段过滤,支撑全部排障场景。
- Sink 决定日志出路:实时路由到 BigQuery(分析)、GCS(归档)、Pub/Sub(流式外送)。
- 成本要早治理:默认 30 天保留 + 按量计费,排除规则与路由策略是控费关键。
1. 日志条目结构
{
"timestamp": "2026-08-25T14:55:22.123Z",
"severity": "ERROR",
"resource": {"type": "k8s_container", "labels": {"namespace": "prod", "pod_name": "order-xxx"}},
"jsonPayload": {"msg": "扣款失败", "order_id": 1024},
"labels": {"compute.googleapis.com/resource_name": "..."},
"trace": "projects/xxx/traces/4bf92f..."
}
severity 八级:DEBUG/INFO/NOTICE/WARNING/ERROR/CRITICAL/ALERT/EMERGENCY。应用写 stdout 的 JSON 会被自动解析进 jsonPayload(GKE/Cloud Run 天然如此);trace 字段把日志与 Cloud Trace 链路关联。
2. Log Explorer 查询
resource.type="k8s_container"
resource.labels.namespace="prod"
severity>=ERROR
jsonPayload.order_id=1024
查询语言支持字段比较、正则(=~)、时间窗、子句组合。几个高频模式:按 trace ID 串联(trace="projects/...")、按 Pod 查(labels.pod_name)、统计某错误出现频率(配合直方图视图)。
3. Sink:日志路由与导出
创建 Sink 把匹配的日志实时导出:
- BigQuery:SQL 分析、长周期趋势——分析型需求首选;
- Cloud Storage:廉价归档,配合生命周期策略进 Coldline/Archive;
- Pub/Sub:流式外送到第三方平台或自建管道。
Sink 带过滤条件(同一查询语言),可以"只导出 prod 命名空间的 ERROR 日志到 BigQuery"。
4. 基于日志的指标与告警
Log-based metrics 把日志模式转成时序指标(如"每分钟 ERROR 条数""5xx 计数"),接 Cloud Monitoring 告警策略。这实现了"日志驱动告警"的完整闭环。
5. 成本治理
- 排除规则(Exclusions):
_Default桶加过滤器丢弃低价值日志(如健康检查); - 保留期:
_Default30 天、_Required400 天(审计类,免费);自定义桶可设 1 天到 10 年; - 量控制:应用侧级别纪律 + GKE 节点日志采集范围裁剪。
观测云落地:GCP 日志与统一观测
对同时使用多云/混合云的团队,观测云可作为统一日志平台:
- 外送通道:Pub/Sub Sink → 推送订阅到观测云 HTTP 日志接收端(或 DataKit 中继);GCE 主机直接装 DataKit;GKE 以 DaemonSet 部署 DataKit 采集容器日志。
- 解析标准化:jsonPayload 字段自动解析,severity 映射标准
status,timestamp 解析为time,trace ID 保留用于关联。 - 统一视图:GCP 日志与自有 IDC、其他云的日志在同一日志查看器中检索,一套告警规则(钉钉/企业微信/飞书)全覆盖。
- 成本对比策略:高价值日志(ERROR/审计)在观测云标准索引长保留;海量访问日志在 GCP 侧排除 + 观测云低频索引,双端成本同时可控。
常见问题(FAQ)
Cloud Logging 和 Cloud Monitoring 什么关系?
同属 Google Cloud Observability(原 Stackdriver):Logging 管日志、Monitoring 管指标、Trace 管链路。基于日志的指标是两者的桥梁。
GKE 应用日志需要装 Agent 吗?
不需要——GKE 节点自动收集容器 stdout/stderr 进 Cloud Logging。要控量可在集群级调整日志采集范围(仅 System/Workloads/都不采)。
BigQuery 导出和直接查 Log Explorer 怎么分工?
实时排障用 Log Explorer(秒级可见);长周期分析(月度错误趋势、审计报表)用 BigQuery——Log Explorer 保留期短且查询不是为大规模分析设计的。
日志里的 trace 字段从哪来?
应用按 X-Cloud-Trace-Context 头或 OpenTelemetry 生成 trace ID,写日志时以 logging.googleapis.com/trace 标签带上(客户端库有现成集成)。接入观测云 APM 后,同一 trace ID 也可在观测云中关联。
系列阅读
- 上一篇:Vercel 日志实战
- 下一篇:Azure 日志实战
- 相关阅读:AWS 日志体系入门 | 降低日志成本七步法