跳至主要内容

可观测性是什么意思:系统出问题时为什么要看得见

可观测性是什么意思:系统出问题时为什么要看得见

摘要

可观测性是指系统运行后,外部能通过日志、指标、追踪和状态记录理解内部发生了什么。它不是给系统加几个图表,而是在问题出现时,能快速判断哪里出错、影响多大、原因可能是什么、应该如何恢复。

没有可观测性就只能猜

系统正常时,很多问题看不出来。

页面能打开,接口能返回,任务能运行,发布能成功。可一旦出错,如果没有日志、指标和状态记录,维护者就只能猜。

猜测会消耗时间,也会增加风险。

你不知道是认证失败、网络问题、接口限流、数据格式错误,还是本地状态没有同步。每种原因都可能对应不同处理方式。

可观测性的价值,是让排查从猜测变成证据驱动。

日志记录发生了什么

日志是可观测性的基础。

它应该记录关键事件:什么时候开始,调用了什么,成功还是失败,失败原因是什么,相关 ID 是什么。

好的日志不是越多越好。

如果日志充满无意义信息,真正出事时反而更难找。关键是记录能帮助恢复和判断的信息。

比如发布系统里,文章 slug、目标博客、远端 post id、返回 URL、错误状态,都比一堆泛泛的“开始处理”更有价值。

日志应该服务问题定位,而不是制造噪音。

指标反映整体状态

日志关注事件,指标关注趋势。

比如请求成功率、接口延迟、错误数量、任务积压、发布失败次数、重试次数。

指标能帮助你发现系统是否正在变差。

单次失败可以靠日志查,持续变慢或错误率上升,就需要指标看整体。

好的指标要能回答:系统现在健康吗?问题是偶发还是持续?影响范围是在扩大还是缩小?

没有指标,很多问题要等用户抱怨才知道。

追踪连接一次完整请求

复杂系统里,一个操作可能经过多个环节。

用户点击发布,系统要读取文件、渲染 Markdown、调用 Blogger API、回写 front matter、同步 registry。

如果中间某一步失败,只看单点日志可能不够。

追踪的作用,是把一次完整流程串起来。

它让你知道一个请求经过了哪些步骤,每一步花了多久,在哪一步出错。

对小系统来说,不一定要上复杂平台,但至少要有能串起流程的 ID 和状态记录。

可观测性也包括业务状态

很多人以为可观测性只是工程指标。

其实业务状态也很重要。

一篇文章现在是 draft、published,还是远端已发布但本地 registry 没同步?一个任务现在归谁?最后一次同步是什么时候?

这些状态不清楚时,系统就会出现“看起来成功,其实没闭环”的问题。

可观测性要让技术状态和业务状态都可见。

这样维护者才能判断:系统是否真的完成了用户关心的事情。

不要等出事才补

可观测性最好在系统设计时就考虑。

等事故发生后再补日志,往往已经错过最关键的信息。

可以在每个关键流程里提前问:

  • 如果这里失败,我需要知道什么?
  • 谁会受到影响?
  • 有没有可恢复的状态记录?
  • 错误信息能不能让人看懂?

这些问题会让系统更可靠。

结论

可观测性是什么意思?它是系统出问题时还能被理解的能力。

日志告诉你发生了什么,指标告诉你整体是否健康,追踪告诉你流程在哪里断,业务状态告诉你结果是否闭环。

一个可观测的系统,不一定永远不出错,但出错时更容易恢复。

延伸阅读

评论

此博客中的热门博文

尝试解构一段幽默

  天龙八部里有这么一段情节: 乌老大脸上肌肉牵搐,又“啊啊”了几声,突然指着虚竹骂道:“臭贼秃,瘟和尚,你十八代祖宗男的都是乌龟,女的都是娼妓,你日后绝子绝孙,生下儿子没屁股,生下女儿来三条胳臂四条腿……”越骂越奇,口沫横飞,当真愤怒已极,骂到后来牵动伤口,太过疼痛,这才住口。 虚竹叹道:“我是和尚,自然绝子绝孙,既然绝子绝孙了,有什么没屁股没胳臂的?”

《微信公开课》上张小龙的公开演讲

 微信是一款现象级的互联网产品,至少以互联网产品普遍的生命周期看来,微信是一款跨越了生命周期的互联网产品。要想理解微信在产品实践的一些观念,最好的方法莫过于直接和他们对话,阅读他们的书就是一种最直接的精神交流。 前几年流传着一本奇书《微信背后的产品观》,互联网产品从业者都给出了极高的评价,书里的内容大致上来自于 2012 年微信团队内部的一次分享会。而在现在,微信依然是一个具有生命力和健康生态的互联网产品,我们又该用什么方式来继续更新对微信的认识呢? 我的方法是:从微信张小龙过去几年的公开课中学习微信的产品观

你日常爱用的词语,竟有这么多在压抑自我!为什么“夹带私货”是一种很愚蠢的说法?所谓“精致利己主义者”其实很粗糙|心理|哲学|历史|自我成长