Docker KubernetesNotes

第 25 章:可观测性

zjc 于 2026-01-25 发布

这是《Docker 与 Kubernetes 零基础实战指南》的独立章节版。本章从概念、实操和生产排查三个视角展开,代码块保留了原书可直接运行的版本。 云原生系统故障传播快、动态性强,必须同时具备指标、日志、追踪和事件观测。

25.1 三支柱

类型 回答
Metrics 系统是否异常,趋势如何
Logs 具体错误是什么
Traces 请求经过哪些服务,耗时在哪
Events Kubernetes 为什么操作对象

25.2 指标

常用监控栈:

Prometheus / VictoriaMetrics
  -> kube-state-metrics
  -> node-exporter
  -> application metrics
  -> Alertmanager

核心指标:

指标
Node CPU、内存、磁盘、网络
Pod restarts、CPU、内存、网络
Workload replicas、ready、unavailable
控制面 API 延迟、etcd、leader
业务 QPS、错误率、延迟、成功率

25.3 日志

推荐 stdout/stderr,由采集器集中处理:

container stdout -> Fluent Bit -> Kafka/Loki/ES

规范:

  1. JSON 日志;
  2. 统一时间;
  3. 带 trace_id;
  4. 不打印密码;
  5. 设置日志级别;
  6. 控制体量;
  7. 保留告警上下文。

25.4 追踪

Client -> Gateway -> Order -> Payment -> DB

OpenTelemetry 统一采集:

  1. context propagation;
  2. service name;
  3. span attributes;
  4. 采样策略;
  5. 敏感信息脱敏。

25.5 Kubernetes 事件

kubectl get events -A --sort-by=.lastTimestamp

关注:

  1. FailedScheduling;
  2. Unhealthy;
  3. BackOff;
  4. FailedMount;
  5. Evicted;
  6. ScalingReplicaSet。

25.6 黄金指标

指标 说明
Latency 延迟
Traffic 流量
Errors 错误
Saturation 饱和度

服务 SLO 应围绕黄金指标和业务成功率建立。

本章小结

可观测性要能把告警定位到对象、事件、日志和调用链。指标发现异常,事件解释集群动作,日志给出错误细节,追踪还原请求路径。

思考题

  1. 指标、日志、追踪分别解决什么问题?
  2. 应用日志为什么推荐 stdout?
  3. trace_id 有什么作用?
  4. Kubernetes Events 能解释什么?
  5. 如何设计服务 SLO?