Skip to content

Observability

很多 AI 系统刚上线时,最难受的一种状态不是直接报错,而是:

  1. 结果开始变差了
  2. 延迟开始波动了
  3. 成本开始升高了
  4. 但你第一时间看不出到底哪里不对

这类问题真正的起点,往往不是先去调 Prompt,而是把系统看见。

这就是 Observability 的意义。

1. Observability 到底是什么

Observability 直接看成可观测性。

放在 AI 系统里,它关心的是:

当系统正在运行时,你能不能及时看到关键状态、关键异常和关键变化。

它最常回答的问题通常是:

  1. 请求量是不是异常波动
  2. 成功率和错误率有没有下降
  3. Token 消耗是不是突然升高
  4. 哪个模型、哪个工具调用最慢
  5. 哪类请求最近最容易失败

2. 为什么 AI 系统比普通接口更需要它

因为 AI 链路天然更长,也更容易漂。

一条请求背后,可能已经经过:

  1. 上下文组装
  2. 检索召回
  3. 工具调用
  4. 多轮生成
  5. 结果校验

只要其中某一层开始出问题,用户最终看到的就可能只是:

  1. 回答不稳了
  2. 首字更慢了
  3. 成本更高了
  4. 偶尔会失败

如果没有可观测性,这些变化往往只能靠用户反馈倒逼发现。

3. 一套最小可观测链路怎么理解

mermaid
flowchart LR
    A[用户请求] --> B[系统执行]
    B --> C[记录指标]
    C --> D[聚合监控面板]
    D --> E[发现异常]

这条线虽然简单,但已经说明了可观测性的核心:

  1. 把数据采出来
  2. 再把数据汇起来
  3. 最后让异常能够被及时看到

4. AI 场景里最常看的指标有哪些

更贴近工程一点,通常会重点看下面这些指标:

  1. 请求量
  2. 成功率 / 错误率
  3. 平均响应时间和 P95 / P99 延迟
  4. Token 输入输出量
  5. 工具调用次数和失败率
  6. 检索命中率或空召回比例
  7. 单请求平均成本

不同系统关注点会不一样,但这些通常是比较基础的一层。

5. Observability 不等于 Tracing

这两个词很容易混在一起。

可以这样分:

  1. Observability 更偏看整体状态和趋势
  2. Tracing 更偏追单次请求走过的完整链路

也就是说:

  1. 可观测性更像告诉你“最近哪里不对”
  2. 链路追踪更像告诉你“这一次到底卡在哪”

所以它们通常是配合关系,不是替代关系。

6. 只做日志,为什么还是不够

因为日志更多是在记录事件,而可观测性更关注:

  1. 指标有没有持续异常
  2. 异常是不是成片出现
  3. 波动是不是集中在某个模型、工具或场景

没有指标和聚合视角,日志很容易变成“出了问题再去翻”,而不是平时就能看到系统状态。

7. 最容易踩的几个坑

7.1 只关心接口成不成功

AI 系统里,“成功返回”不代表体验和结果真的正常。

7.2 指标很多,但没有重点

不是所有指标都要一开始就堆满。更重要的是先抓最能反映系统健康度的那几项。

7.3 看到了波动,但没有继续接上追踪和评估

如果只有可观测性,没有 TracingEvaluation,你通常只能知道系统不对,却很难知道为什么不对、改完后有没有变好。

8. 一段更稳的总结

Observability 解决的是“系统运行时,你能不能及时看到异常和变化”这个问题。它让团队不用等用户来报错,自己就能先发现系统哪里开始飘。很多 AI 系统后面越跑越乱,不是没有优化能力,而是连最基本的系统状态都看不清。

基于 VitePress 构建的个人技术笔记。