可观测老兵洞察:AI潜力“令人陶醉”

2 阅读12分钟

人工智能正彻底改变软件可观测性:它助力检测、遥测数据处理、异常发现及故障排查。AI能减轻认知负担,提高效率,使系统洞察的消费模式更直观,但需确保确定性。

译自:An Observability Veteran on AI's 'Intoxicating' Potential

作者:Michele Mancioppi

软件故障排查需要可观测性:我们需要收集和分析遥测数据,以形成、推翻或验证关于软件为何行为异常的假设。

生成式AI正在伴随我们一路前行,并有可能接管更多繁重工作——尤其是在故障排查方面。

可观测性的迭代特性

一个系统是可观测的,如果我们可以根据它发出的数据(遥测数据)来弄清楚它正在做什么。遥测数据有许多类型,称为信号。最常用的是日志、指标和跟踪

遥测数据并非凭空产生。我们的系统必须在正常运行期间生成它。承载我们应用程序的运行时可以配置为开箱即用地生成大量遥测数据,我们的容器编排、操作系统等也是如此。我们还可以向应用程序添加专门的逻辑,称为检测(instrumentations),以创建额外的遥测数据。我将其视为我们预先支付的应用程序逻辑,用于调试其他应用程序逻辑。

系统故障排查的迭代过程。

系统故障排查的迭代过程。

我们的应用程序生成的遥测数据并非总是完美的,需要进行处理:我们需要(垃圾)过滤遥测数据,因为其中很多数据实际上并不那么有用。我们需要为遥测数据添加上下文,因为生成遥测数据的应用程序可能无法访问足够的信息来正确提供所有必要的元数据。我们还可能需要确保将正确的遥测数据转发到正确的可观测性后端,以防我们根据用例或信号使用不同的后端。

一旦遥测数据到达可观测性后端,我们必须通过寻找系统异常的迹象来检测异常。当检测到异常时,我们必须对系统进行故障排查。

在这些步骤中的每一步,AI要么已经是一个有用的、强大的伙伴,要么有巨大的潜力成为这样的伙伴。

人工智能在检测中的应用

AI编码助手在将可观测性视为系统应有的第一类功能需求方面具有巨大潜力。不幸的是,迄今为止,这种潜力似乎尚未被有效挖掘。

并非AI无法添加检测:当你要求时,它做得还不错。然而,代码助手工具通常不会默认添加检测,而且它们似乎不知道对于它们所处理的应用程序类型来说,哪些遥测数据是有用的。

从某种意义上说,这种发明正在模仿发明者可疑的习惯:人类编写的源代码很少将可观测性作为一项功能需求。这在很大程度上解释了为什么我们有许多方法可以在运行时通过添加检测来自动从应用程序收集遥测数据。自动检测完全没问题:我们使用的许多技术相关的检测不必每次都重新发明。世界只需要一套关于Java垃圾回收的指标,以及一套关于如何描述HTTP请求和响应的元数据。

换句话说,大约80%到90%的自动、开箱即用的通用检测是很好的,也是开始你的可观测性之旅的最佳起点,但其余部分应该是反映系统业务方面的即时、特定于应用程序的遥测数据。

人工智能在遥测数据处理中的应用

遥测数据生成后,必须进行处理并路由以供分析。在遥测数据处理方面,AI可以帮助做以下几件事:

  • 过滤(垃圾)遥测数据: 并非所有遥测数据都具有同等价值。特别是,自动检测生成的遥测数据并非始终有用,往往只有在解释其他地方检测到的异常时才变得不可或缺。我尚未见过有系统使用AI来选择短期存储之外要保留哪些遥测数据,但我非常期待它的出现。
  • 修订信息: 很少有系统从未通过日志或遥测元数据发送敏感数据。AI应该能够检测到许多此类情况并采取相应行动,尽管我尚未在实践中看到这一点。
  • 改进遥测数据: 添加缺失的上下文,填充元数据空白(例如修复日志中缺失的严重性),并将重要信息提取为可单独排队的属性(例如,通过自动检测日志模式)。
  • 聚合遥测数据: 指标并非万灵药:它们是一种节俭地(用相对较少的数据点)表示系统重要方面的方式,但在此过程中会丢失大量信息。遥测数据收集是可观测性中最有可能让AI大放异彩的领域。今天我们所看到的可观测性很大程度上是由于我们人类的局限性:与软件相比,我们速度慢,一次主要做一件复杂的事情,并且一次只能在一个地方。我们收集大量的遥测数据,但能分析的数据量有限。我们可能需要几秒钟或几分钟才能意识到出了问题。我们可能直到下周才有时间处理一个bug,所以我们会长时间存储大量遥测数据。

但软件的扩展能力远超人类。如果(这是一个很大的“如果”)AI能够自主编写和操作我们的系统,我们将看到遥测数据收集方式和存储时间的转变。我们将大大减少对指标和其他预聚合信息的依赖,而更多地使用事件型遥测数据(日志、Span等)。我们将看到更多按需收集,遥测数据存储时间也会大大缩短。

然而,人类和AI消费遥测数据之间存在一个质的区别:AI需要更高的_一致性_。作为人类,我们可以记住我们弄错了元数据,并以三种不同的方式称呼同一个东西。如果在同一次故障排查中遇到team.idteam.identifier,我们就知道有问题了。

AI只相信表面的信息,因为它缺乏直觉,而且在很大程度上也缺乏积累经验的能力。此外,AI通常不会提出澄清问题,尽管这种情况可能会改变。这就是为什么语义约定对AI代理如此重要的原因:它们通常没有内置经验丰富的开发人员通过一次次失望积累起来的对人类错误倾向的健康现实主义。

AI在异常检测中的应用

在可观测性方面,我们正生活在一个引人入胜的时代。AI有望彻底改变我们生成和消费关于系统问题洞察的方式。这是一场超越“AI为你排查故障”的范式转变。在十年的未兑现承诺之后,它终于感觉真实了。

长期以来,AI在检测异常方面做得相当不错,我预计这不会有太大改变。异常检测是一个深刻的分析性、统计性且很大程度上是确定性的领域。

生成式AI在这里的潜力主要在于通过运行临时、额外的健全性检查来减少误报。这与下一步,也就是目前大家都很兴奋的事情——故障排查,融合在一起。

AI在故障排查中的应用

故障排查是AI真正解锁可观测性新境界的地方。现代模型通过检索增强生成(RAG)和先进的、确定性诊断工具,可以在几分钟内调试出一个让一些最有才华的技术人员困惑半小时的问题。

生成式AI可以生成查询、仪表板或告警,减轻人类操作员在中断期间的认知负担。这可以使故障排查民主化:它大大降低了门槛,使所有开发人员都能更有效地解决问题。当问题可以在不占用最有经验的开发人员处理其他工作的情况下解决时,这可以为他们腾出时间。

AI在故障排查中承担大量繁重工作的潜力不容小觑。但最令人兴奋的部分是,我们拥有了一个全新的消费可观测性洞察的范式。

可观测性工具的仪表板会以鲜艳的颜色呈现大量数字和图表,争夺你的注意力。这总是令人应接不暇。自定义仪表板只稍微灵活一些。这正是生成式AI对话式方面的最佳体现:如果运用得当,它可以用简单的语言准确地告诉用户他们需要知道什么。我渴望有一天能打开我的仪表板并读到:

“产品目录服务自2分钟前,即12:45的上次部署以来一直存在问题。FindProduct API持续未能检索少数产品ID的信息。这似乎不是数据库问题。它平均每分钟影响1024名独立用户,并阻止他们完成结账用户流程。”

想象一下,阅读完这些,接着是一个动态生成的相关可视化列表,以逻辑顺序作为支持证据呈现。它还可以展示已制定和已放弃的假设,并附带只需点击一下鼠标即可查看的解释其推理的旁白。那个未来并不遥远。

这并不意味着仪表板将完全消失,但在一个关于正在发生的问题的叙述已经可用的世界里,静态仪表板似乎是过去的遗物。

它甚至可以让可观测性在手机的小屏幕上获得良好的体验。因为生成式AI可以顺序解释事物,我们将像阅读事后分析博客一样消费故障排查报告。

一旦建立了可靠性记录,我们甚至最终可能会信任AI独立进行更改。

AI时代的可观测性设计思考

有趣的是,在为可观测性设计AI与改进人类的可观测性体验之间,存在着意想不到的协同效应。

AI像人类一样排查故障,但规模是工业级的。大型语言模型因为经过人类内容的训练,所以模仿了我们做事的方式。它们只是能做得无限多。这意味着如果人类拥有更好的排查问题原语,AI在排查故障方面就会做得更好。(在当前的AI世界中,这些原语通常是模型上下文协议(MCP)服务器中的工具。)但反之亦然:如果我们的可观测性工具中缺少某些高级功能,人类可能也会错过它们。

AI是超级用户。 排查复杂系统的问题几乎总是落到少数有知识的人身上,这使得他们需求量很大(且压力大)。AI有潜力解释、赋能和教育人们,以进一步传播高级知识。

AI可以减少认知负荷。 AI可以呈现简洁的分析,理想情况下是用简单的语言,并按需提供支持证据,而不是充满图表和数字的仪表板。

因此,可观测性工具也必须为AI作为消费者进行设计:

AI的可访问性。 越来越多的可观测性工具正在引入内置AI代理,有些基于模型上下文协议(MCP)服务器构建,有些使用外部无法访问的专有API。

未来,我们可能会拥有专业代理网络,它们协同工作(例如,使用A2A协议)来解决问题:可观测性代理进行故障排查,与GitHub代理协作以打开拉取请求,并与Linear代理协作以记录处理事件的进展。

我非常好奇,作为一个行业,我们将在代理世界中将何种开放程度视为“入场券”。答案可能比当前API的状态更倾向于开放:与“普通”软件相比,AI代理使用新工具的集成成本实际上为零,因此人们对代理式AI将积极使用其可用API的期望会高得多。

AI驱动的故障排查必须基于确定性。 大型语言模型并非如此。在给定相同输入的情况下,它们会生成不同的输出,这会导致幻觉。然而,可观测性具有帮助人类应对复杂系统雪崩式遥测数据的结构:我们有信号、语义约定、文档以及能够大规模有效部署数学的数据分析能力。我们提供给生成式AI越先进、确定性越强的工具,例如通过MCP服务器,发生不良情况的概率就越低。

个人回顾

在过去的二十年里,我一直从事可观测性领域的工作。我曾见证过激动人心的时刻,比如Prometheus和OpenTelemetry的兴起,或者当Google向世界展示了持续生产剖析在大规模环境下既可行又实用时。

然而,与AI在推动可观测性实践、消除我们已接受的诸多限制并接管我们一直以来感到厌倦的繁重工作方面所展现的现实而务实的潜力相比,其他一切都显得微不足道。

AI的潜力令人陶醉。