监控经常被理解成上线前补齐的三件套:日志、指标、链路。

但我越来越觉得,可观测性的起点不是工具,而是一种不太舒服的承认:

我现在对系统的判断,可能是错的。

我认为 MQTT 已连接,实际连接已经失效;我认为任务正在运行,它只是数据库状态没有更新;我认为设备离线,真正中断的是中间的一层转发;我认为规则没有触发,最后发现告警已经产生,只是设备标识没有对齐。

如果系统只输出“成功”和“失败”,它只是在重复我们的判断。真正有用的信息应该允许后来的人推翻它。

例如,与其记录:

设备离线

不如保留形成结论的事实:

device_guid=...
last_message_at=...
check_at=...
threshold=90s
source=mqtt

前者是结论,后者是证据。

同样,告警阈值需要版本,任务状态要有更新时间,重试要记录次数和最后错误,跨服务请求需要统一标识。这样当业务说“页面显示不对”时,我们不是围绕各自的直觉争论,而是沿着证据重新计算一次答案。

可观测性不是让系统永远不出错。它让错误发生以后,我们有机会比原来的自己更接近事实。