这是《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
规范:
- JSON 日志;
- 统一时间;
- 带 trace_id;
- 不打印密码;
- 设置日志级别;
- 控制体量;
- 保留告警上下文。
25.4 追踪
Client -> Gateway -> Order -> Payment -> DB
OpenTelemetry 统一采集:
- context propagation;
- service name;
- span attributes;
- 采样策略;
- 敏感信息脱敏。
25.5 Kubernetes 事件
kubectl get events -A --sort-by=.lastTimestamp
关注:
- FailedScheduling;
- Unhealthy;
- BackOff;
- FailedMount;
- Evicted;
- ScalingReplicaSet。
25.6 黄金指标
| 指标 | 说明 |
|---|---|
| Latency | 延迟 |
| Traffic | 流量 |
| Errors | 错误 |
| Saturation | 饱和度 |
服务 SLO 应围绕黄金指标和业务成功率建立。
本章小结
可观测性要能把告警定位到对象、事件、日志和调用链。指标发现异常,事件解释集群动作,日志给出错误细节,追踪还原请求路径。
思考题
- 指标、日志、追踪分别解决什么问题?
- 应用日志为什么推荐 stdout?
- trace_id 有什么作用?
- Kubernetes Events 能解释什么?
- 如何设计服务 SLO?