在微服务环境中,了解应用程序内部发生的情况至关重要。 可观察性不仅仅是简单的监控,它还允许您询问系统问题并获得可靠的答案。
可观察性的三大支柱
- 结构化日志,JSON格式的事件记录,方便查询。
- 指标,随时间变化的数值(延迟、错误率、CPU 使用率)。
- 分布式跟踪,跟踪跨多个服务的请求。
实施策略
- **使用 Elastic Stack(Filebeat → Logstash → Elasticsearch → Kibana)或 CloudWatch Logs 等托管服务来集中日志。
- 将指标导出到 Prometheus 并在 Grafana 中查看它们。
- 仪器代码 使用 OpenTelemetry,将跨度发送到 Jaeger 或 Zipkin。
可观察性检查表
- 配置 JSON 记录器(例如:Winston、Bunyan)。
- 在所有日志中设置 3 和 4 。
- 导出标准指标(556)。
- 使用 [OpenTelemetry10 检测 HTTP 客户端和服务器。
- 创建延迟、错误率和吞吐量仪表板。
- 定义 SLA 警报(例如延迟 > 500 毫秒,错误 > 1%)。
- 文档 ID 关联(778)。
JSON 记录器示例 (Node.js)
0
使用 Prometheus (Node.js) 的自定义指标示例
1
使用 OpenTelemetry (Node.js) 进行跟踪示例
2
结论
实施可观察性需要纪律,但会带来立竿见影的回报:及早发现故障、缩短 MTTR(平均恢复时间)以及扩展关键系统的信心。
您如何监控您的服务?分享您最喜欢的工具!
另请阅读
- [OpenTelemetry 的可观察性:指标、日志和分布式跟踪11
- [超越日志的可观察性:OpenTelemetry 在实践中发生了什么变化12
- [Workers:调试、日志和 Workers Tail — 无需日志服务器即可在边缘进行观察13
- [应用程序架构:可扩展系统完整指南14
- [站点可靠性工程指标:定义和监控 SLI、SLO 和 SLA15
- [边缘计算架构:分布式处理策略16
