数据库可观测性与监控相关联,但却是不同的实践。监控侧重于跟踪预定义的指标和警报,以检测已知问题,而可观测性则强调通过分析系统的输出来理解其内部状态,使团队能够诊断意外或复杂的问题。监控通过检查阈值来回答“出问题了吗?”,而可观测性则通过提供更深入的上下文来回答“为什么会出问题?”。
监控通常涉及为特定指标设置仪表盘和警报,例如查询延迟、CPU 使用率或错误率。例如,开发人员可能会配置监控工具,在数据库响应时间超过 500 毫秒时触发警报。这种方法对于已知的故障模式非常有效,但在处理新问题时却力不从心。如果突然出现慢查询激增,监控可以标记出问题,但无法解释是由于索引不佳的表、配置错误的连接池还是来自其他服务的级联故障所导致。监控工具通常依赖于预先埋点的数据,这限制了对根本原因的可见性。
另一方面,可观测性结合了指标、日志、分布式追踪和上下文元数据,以实现探索性分析。例如,当发生超时错误时,可观测性工具可以关联特定 SQL 查询的执行计划(来自日志),追踪其通过微服务的路径(通过追踪),并将其与资源利用率趋势(指标)关联起来。这种整体视图有助于开发人员重构事件并识别未预定义的模式。像 OpenTelemetry 这样的工具就体现了这一点,它捕获细粒度的请求级数据,使团队能够调试仅靠监控可能遗漏的问题,例如间歇性死锁或复制延迟。可观测性需要结构化的、高基数的数据以及支持即席查询的工具,这使得它在诊断不可预测的场景时更加灵活。
总之,监控是被动的、基于规则的,而可观测性是主动的、调查性的。监控确保您知道数据库何时超出预期限制,但可观测性使您能够理解其发生的原因以及如何修复它,即使在复杂、分布式环境中也是如此。