OBSERVABILITY 101 可观测性入门
可观测性是如今随处可见的流行术语之一。最近,我有机会花些时间去了解它——它的含义以及它为何重要。
从宏观层面来看,可观测性为我提供了一种审视应用程序的新方式。这不仅仅关乎代码,还涉及整个系统:基础设施、平台以及应用程序本身。目标很简单:你的应用程序应当始终如预期般正常运行。
构建弹性的应用程序意味着要摆脱纯粹的被动响应模式,转而采用主动的方法:在问题干扰业务之前对其进行检测、诊断和解决。
为什么监控至关重要
监控包括识别、测量和评估应用程序。监控生产系统并非易事——它需要时间、精力和人力。但为什么它如此重要呢?
- 及早发现故障和异常
- 确保业务连续性(BAU)
- 守护企业系统的健康和弹性
监控通常关注四个黄金信号:
- 延迟 — 完成操作所需的时间
- 吞吐量 — 系统正在处理的请求总量
- 失败量 — 失败请求数量
- 饱和度 — 资源接近其极限的程度
监控中的挑战……
让我们来看两个简单的例子。
1. 缓慢的Web应用程序
- 你收到一条警报,提示响应时间过长。
- 日志显示API超时。
- 指标显示数据库查询花费的时间比平时更长。
- 深入调查后,你发现一个后台批处理作业正在占用数据库资源。
2. 高API错误率
- 你收到了电话告警,因为支付API出现了故障。
- 日志显示“connection refused”错误。
- 指标显示网络延迟较高。
- 事实证明,你的应用程序和支付网关之间存在网络拥堵。
在这两种情况下,调试都需要关联多个工具中的日志、指标和系统知识。通常,这在很大程度上依赖于特定知识——这意味着只有具备该特定应用相关领域先前知识的人才能有效地进行调试。
这引发了一个担忧:大多数监控都是被动的。我们只是在事后解决问题。如果我们能够主动发现并解决未知问题,在它们影响用户或导致停机之前就处理好,会怎么样呢?
可观测性登场
可观测性是指通过分析系统产生的数据,深入了解系统内部状态的能力。
这不仅仅是关于告警——这还关乎:
- 系统行为的实时分析
- 丰富的上下文信息有助于更快地进行根本原因分析
- 检测“未知的未知”
- 预测单个故障在各组件间的连锁效应
可观测性的三大支柱
- 日志——事件记录,捕捉有关系统活动的详细信息
- 指标——代表系统健康状况和性能趋势的数值(有助于检测已知的未知情况)
- 跟踪——请求在多个组件间流转的端到端记录,用于显示问题发生的位置
可观测性的核心思想
分布式日志记录 → 从系统的所有部分收集日志并在一个地方进行分析。无需分别检查每台服务器,您就能获得事件(日志条目)的统一视图,从而大大加快调试速度。
分布式追踪 → 跟踪请求在不同微服务间的流转过程。这能让人轻松发现瓶颈、缓慢调用或故障点,无需猜测。
上下文传播 → 为每个请求添加唯一标识符,以便日志、指标和跟踪自动关联。这消除了手动关联的需求,使根本原因分析变得简单直接。
依赖映射 → 可视化服务之间的依赖关系,以预测一个故障如何影响其他故障
可观测性仪表板
要理解所有这些数据,你需要一个仪表盘。一个好的可观测性仪表盘应该:
- 将指标、日志和追踪数据整合到一个地方
- 提供有关应用程序和基础设施健康状况的实时洞察
- 提供跨分布式系统的集中可见性
- 支持主动监控和告警
- 实现指标、日志和追踪的轻松关联
- 提供丰富的可视化效果和上下文洞察
- 提供下钻能力,从全局视图深入到具体问题
我探索过的工具
- 开放遥测(OpenTelemetry) → 一个开源框架,它对遥测数据(指标、追踪和日志)的收集和导出方式进行了标准化。
- Prometheus → 一个流行的开源监控和告警工具,专注于指标收集和查询。
- Grafana → 一个强大的可视化和分析平台,支持多种数据源,包括Prometheus。
- Jaeger → 提供分布式追踪,有助于跨多个服务跟踪请求。
- Splunk → 一个广泛使用的日志分析平台,具有强大的搜索和监控功能。
- ELK Stack (Elasticsearch、Logstash、Kibana)→ 日志管理和分析的另一个热门选择。Logstash处理日志,Elasticsearch存储日志,Kibana将日志可视化。
这些工具共同构成了一个完整的可观测性栈:
- OpenTelemetry从应用程序收集遥测数据。
- 根据数据类型的不同,这些数据会被发送到Prometheus、Jaeger、Loki、Splunk或ELK。
- 最后,所有内容都汇总到Grafana或Kibana中进行可视化。
总结
可观测性并非意味着淹没在更多数据中,而是要在合适的位置获得正确的数据,并辅以恰当的背景信息。
我的探索告诉我,韧性并非完全杜绝失败,而是构建能够快速检测、适应和恢复的系统。
原文:https://medium.com/@harshini1813/observability-101-717a164d909c