3. 可观测性三大支柱在AI系统中的映射

传统微服务的可观测性三支柱——日志(Logs)、指标(Metrics)、追踪(Traces)——在AI系统中依然成立,但它们的采集对象、语义和关联方式发生了明显变化。AI系统不是单一服务,而是由数据管道、特征存储、训练作业、模型注册、推理服务、向量检索等多个环节组成的链路。若直接套用Web服务的埋点方式,往往只能看到“服务是否存活”,却看不到“模型为什么变差”。本节先厘清三支柱在AI场景中的映射关系,再给出可落地的采集与关联方法。

一、三支柱在AI系统中的角色重定义

在AI系统中,三支柱各自承担不同的观测职责,且必须通过统一的关联键(如 run_id、request_id、model_version、feature_view)串联起来,否则会形成信息孤岛。

  • 日志:记录离散事件与上下文,例如训练作业启动参数、数据校验失败原因、推理请求的输入摘要与异常堆栈。AI日志的特点是“结构化字段多、单条体积大”,需要区分系统日志、数据日志、模型日志三类。
  • 指标:记录可聚合的数值时间序列,例如训练 loss/learning rate、推理 QPS/延迟分位数、特征新鲜度、数据管道吞吐。指标适合做告警和趋势判断,但难以解释单次异常。
  • 追踪:记录一次请求或一次作业在多个组件间的调用路径与耗时,例如一次推理请求经过网关、特征服务、向量检索、模型服务、后处理的完整链路。追踪是定位“慢在哪、错在哪”的关键。
三支柱不是三套独立系统,而是同一观测对象在“事件—数值—链路”三个视角下的表达。AI场景中,关联键的统一比采集工具的选择更重要。

二、训练、推理、特征与数据管道的映射差异

不同环节对三支柱的依赖程度不同,采集重点也不同。下表给出一个可参考的映射框架(示例参数为教学假设,非实测值)。

环节日志重点指标重点追踪重点
数据管道批次ID、源表、校验规则、失败行样例吞吐、延迟、空值率、schema漂移计数批次内各算子耗时、上下游依赖
特征工程特征视图版本、回填范围、缺失特征名特征新鲜度、覆盖率、分布偏移特征读取→计算→写入的链路
模型训练超参、数据版本、checkpoint路径、异常堆栈loss、学习率、GPU利用率、吞吐样本/秒数据加载→前向→反向→保存的算子级耗时
推理服务请求ID、模型版本、输入摘要、降级原因QPS、P50/P95/P99延迟、错误率、token数网关→特征→检索→模型→后处理的完整span

可以看到,数据管道和特征工程更偏“批处理+数据质量”,训练更偏“长周期+资源”,推理更偏“低延迟+高并发”。因此,三支柱的采集频率、保留策略和告警阈值必须按环节分别设计,不能一刀切。

三、统一关联键:让三支柱真正联动

AI系统可观测性最常见的失败模式是:日志里有 request_id,指标里只有服务名,追踪里只有 trace_id,三者无法互查。解决方法是定义一组贯穿全链路的关联键,并在所有采集点注入。

# 推荐的统一关联键(示例)
run_id        # 一次训练或一次批处理作业
request_id    # 一次推理请求
trace_id      # 一次分布式调用链
model_version # 模型注册表中的版本号
feature_view  # 特征视图名称与版本
dataset_ver   # 训练/评估数据集版本

在推理服务中,网关生成 request_id 与 trace_id,并透传到特征服务和模型服务;模型服务在日志中写入 model_version 与 feature_view;指标按 model_version 打标签。这样,当 P95 延迟升高时,可以先看指标定位到某个 model_version,再用 trace_id 找到慢 span,最后用 request_id 查日志确认输入特征是否异常。

四、从采集到判读:一个推理链路的观测示例

假设某推荐推理服务出现 P95 延迟从 120ms 升至 480ms。按三支柱联动排查:指标显示延迟升高集中在 model_version=v7;追踪显示耗时集中在“向量检索”span,从 30ms 升至 350ms;日志显示该时段检索请求的 top_k 从 50 被改为 200。结论是参数变更导致检索耗时上升,而非模型本身变慢。这个例子说明:指标负责“发现异常”,追踪负责“定位环节”,日志负责“解释原因”。

AI系统可观测性三支柱映射与联动 日志 Logs 离散事件 · 上下文 · 异常原因 指标 Metrics 数值时间序列 · 告警 · 趋势 追踪 Traces 调用链路 · 耗时 · 定位环节 数据管道 批次ID · 校验规则 吞吐 · 空值率 · schema漂移 特征工程 特征视图版本 · 回填范围 新鲜度 · 覆盖率 · 分布偏移 模型训练 超参 · 数据版本 · checkpoint loss · 学习率 · GPU利用率 推理服务 请求ID · 模型版本 · 降级原因 QPS · P95延迟 · 错误率 统一关联键:run_id · request_id · trace_id · model_version · feature_view · dataset_ver 贯穿数据管道 → 特征 → 训练 → 推理,使三支柱可互查 联动排查示例:P95 延迟 120ms → 480ms ① 指标发现异常 定位 model_version=v7 ② 追踪定位环节 向量检索 span 30→350ms ③ 日志解释原因 top_k 由 50 改为 200

五、落地要点与常见误区

第一,日志要结构化。训练日志中至少包含 run_id、dataset_ver、超参摘要;推理日志中至少包含 request_id、model_version、输入摘要与降级标记。非结构化日志在AI场景中几乎无法用于关联分析。

第二,指标要带维度标签。仅记录“推理延迟”意义有限,应带上 model_version、endpoint、feature_view 等标签,才能按版本、按接口、按特征视图下钻。但标签基数要控制,避免 request_id 这类高基数键进入指标标签。

第三,追踪要覆盖异步与批处理。训练作业和Spark管道不是典型HTTP请求,需要用作业级 trace 或 span 手动埋点,记录数据加载、特征计算、模型保存等阶段耗时。

常见误区:把三支柱当成三套独立工具分别建设,导致日志、指标、追踪之间没有共同关联键。排查时需要在三个系统间手工比对时间戳,效率极低。正确做法是先定义关联键规范,再选择采集与存储方案。

第四,保留策略要分层。推理日志和追踪采样率可设为 1%~10%(高流量场景),但错误请求应全量保留;训练日志和指标可按 run_id 长期保留,便于回溯模型退化原因。特征新鲜度、数据漂移等指标建议保留至少一个完整训练周期,以便对比。

综上,三支柱在AI系统中的适配核心是:日志提供“发生了什么”,指标提供“是否异常、趋势如何”,追踪提供“在哪一环、耗时多少”。三者通过统一关联键联动,才能覆盖从数据管道到推理服务的完整可观测链路。实际落地时,先统一关联键,再按环节设计采集内容与保留策略,最后用一次真实异常演练验证联动是否有效。