首页 /文章 /LLM 服务可观测性——指标、追踪与告警设计

LLM 服务可观测性——指标、追踪与告警设计

LLM 服务的可观测性设计。说明传统 APM 的不足,提出三层信号模型与八项核心指标,涵盖追踪、日志、告警与成本归因,可用于搭建观测体系。

LLM服务可观测性指标追踪告警
分类:工程与基础设施 › MLOps / LLMOps 发布于 2026-09-22 14 次浏览

一 为什么传统 APM 不够用

LLM 服务的失败形态比传统微服务多了几个量级:延迟是分钟级且长尾严重(一次推理几十秒属正常)、失败可能"静默"(返回 200 但内容跑偏)、成本与质量是连续量而非布尔量。传统 APM 的"QPS / 错误率 / P99"三件套只能覆盖最外层,离"模型在干什么、花了多少钱、输出好不好"还有很远距离。LLM 可观测性(LLMOps/Observability)是在传统三件套之上补一层"模型语义"维度的度量。

核心转变:从"服务活没活"到"回答好不好、钱花得值不值、哪一步在拖慢全链"。可观测性单系统(OpenTelemetry GenAI 社区规范、Langfuse、LangSmith、Helicone 等)就是为这三问服务的。

二 三层信号模型

层信号回答什么
L1 基础设施GPU 利用率 / 显存 / 队列深度 / 网络超时 / 供应商状态资源够不够、供应商稳不稳
L2 服务行为请求量 / 延迟分布(TTFT / 总时长 / 生成速度)/ 错误率 / 重试率 / 各供应商份额服务性能与容量、成本敞口
L3 模型语义token 用量与单价 / 输出质量代理指标 / 工具调用成功率 / 拦截与降级次数 / 用户反馈(赞踩)回答好不好、钱花在哪、哪步拖慢

L3 是 LLM 特有的。L1/L2 沿用传统 APM 即可,L3 需要专门的埋点(trace 里记 prompt / completion / 工具调用 / token 数),是本节重点。

三 核心指标清单

指标定义工程意义
TTFT(Time to First Token)请求发出到首 token 返回用户感知的"响应快不快";长上下文与排队都拖它
TPS / ITL(生成速度 / 间隔)每秒生成 token 数 / token 间隔流式体验;低于阈值用户会以为卡了
P50/P95/P99 总延迟端到端时长分位容量规划基线;LLM 场景 P99 才是真痛点
Token 用量(输入/输出分开)按请求 / 按用户 / 按功能维度统计成本归因的第一手数据
成本 / 请求 / 用户 / 会话token 用量 × 单价单位经济核算;限流与降级策略的依据
错误与降级率重试 / 超时 / 供应商 5xx / 熔断次数占比系统韧性;供应商切换是否奏效
输出质量代理拦截器拦截率 / 结构校验失败率 / 用户踩率 / 抽样评估分唯一能替代"人读"的批量质量信号
工具调用成功率工具调用中 schema 合规 / 成功执行的比例Agent 链的核心健康度

关键设计原则:token 与成本必须按"可归因维度"打 tag(feature / user_tier / tenant / prompt_version / model)。没有这些 label 的成本数据是"一锅粥",无法做预算与优化。

四 Tracing:把"一句话进、一段话出"拆成步骤链

LLM 请求的真实形态是"编排链":检索 → 拼装 prompt → 模型调用(可能多轮)→ 工具调用 → 后处理。OpenTelemetry GenAI 社区规范(semantic conventions for gen_ai)定义了 span 的最小集:

  • gen_ai 调用 span:记录 model / 输入 token / 输出 token / 停止原因 / 耗时,parent 为编排 span
  • 工具调用 span:记录工具名 / 参数摘要 / 成功与否 / 耗时
  • 检索 span:记录 query / 命中数 / 延迟
  • 属性(attributes):gen_ai.system / gen_ai.prompt / gen_ai.completion 是否记录默认采样,不是全量——全量记录成本与隐私都扛不住,默认采样 + 条件全量(失败 / 慢请求 / 被踩)是主流做法

tracing 的价值在三个场景:慢请求归因(10 秒的请求里 8 秒花在检索而非模型,一目了然)、级联失败定位(第 3 轮模型调用超时导致整链回滚)、成本上钻(哪个 feature 的哪条链最烧钱)。采样策略建议:基础指标全量,内容属性 1%-10% 采样,失败 / P99+ / 负反馈 100% 捕获。

五 日志:小采样、大价值

  • 全量记"骨架":request_id / user 匿名 / feature / model / prompt_version / tokens / cost / 延迟 / 结果状态。不带 prompt 正文——骨架日志是全量成本的核算依据。
  • 采样记"内容":按 1%-10% 记录 prompt / completion,用于离线质量复盘与评估集扩充;失败请求 100% 记录。
  • 脱敏先行:prompt / completion 里可能含 PII,入库前过 PII 检测 + 掩码;采样比例与保留期写进数据合规策略。
  • 版本化字段:prompt_version 是关键字段——任何 prompt 大版本迭代都必须带版本标,否则线上问题无法关联回"哪个 prompt"。

六 告警设计:不等 P1 才响

告警条件级别处置
成本失控分钟级成本突增 > 3σ 或超过预算阈值P2自动限流 / 降级到小模型 / 人工确认
质量下滑结构校验失败率 / 拦截率上升 > 2 倍基线P2关联 prompt_version 回滚 / 切备用 prompt
延迟劣化P95 总延迟或 TTFT 持续 > 阈值 5 minP2检查队列深度 / 供应商状态 / 上下文长度分布
供应商异常某供应商错误率 > 5% 或 5xx 带 P99P1按路由策略切备用供应商(见 LLM 网关)
静默失败200 响应但输出长度异常(< N 或 >> M)/ 重复生成 / 输出全空P2自动重试一次 + 标记待人工抽审
容量接近上限队列深度 / 并发 token 利用率 > 80%P3扩容预案启动 / 提前限流排队

LLM 告警的特殊性:"静默失败"——HTTP 200 但内容空 / 重复 / 乱码 / 跑题,传统错误率告警完全覆盖不到。必须加输出侧校验(长度分布、重复 n-gram 比例、结构 schema 校验)作为告警源,这是 LLM 可观测性与传统 APM 的最大差异点。

七 成本归因与单位经济

  • 成本公式:单次成本 = (输入 token × 输入单价 + 输出 token × 输出单价);批处理 / 缓存命中 / 特价渠道要单独记价(cached token 单价通常 1/10)。
  • 归因维度:tenant / feature / user_tier / prompt_version 四个 label 是标配,缺一个就少一类优化抓手。
  • 单位经济核算:把"每请求成本"折算到"每付费会话 / 每解决工单 / 每产出件",才能回答"这个 feature 值不值得继续跑"。
  • 成本看板:预算消耗图表(按天 / 按 feature),超预算 80% 提前预警,而不是月底对账单才发现。

八 离线评估:把"质量"从感觉变成曲线

  • 黄金集(golden set):人工标注的 50-500 条查询-期望对,每次 prompt / 模型变更后跑一遍,产出"通过率 + 逐条 diff"。这是 prompt 版本管理的核心评测手段。
  • LLM-as-judge:用强模型做批量评估(rubric 明确的 5-10 分制),人工抽检 10% 校准 judge 的偏差;成本低,但要知道 judge 不是神,只适合监控趋势,不适合做绝对质量判定。
  • 用户反馈闭环:赞踩 / 重新生成 / 编辑输出这三个行为是最真实的"隐式评估",按 prompt_version 与 feature 聚合,喂回黄金集扩充。
  • 质量基线:把"通过率 / 踩率 / 重新生成率"画成时间序列,与告警联动——离线评估是"体检",线上指标是"监护仪",两者缺一不可。

九 选型与落地清单

选项适合说明
OpenTelemetry GenAI 原语 + 自建看板已有 OTel 栈、想深度定制规范已落地主流 SDK,埋点成本可控
Langfuse(开源)想要 prompt 管理 + 评估 + 追踪一体自部署灵活,社区评估器丰富
LangSmith / Helicone / 云厂商 AI 服务监控托管、不想维护观测系统接入快,但有锁定与合规边界
PG / ClickHouse 自建已有数据栈、成本敏感骨架日志 + 采样内容日志存 ClickHouse,成本最低
  • 第一步:把 token / cost / 延迟按 feature × model × prompt_version 打 label——没有这个,后续所有优化都没抓手
  • 第二步:接入 OTel GenAI 的 span 语义,把"每轮模型调用 + 每次工具调用"进 trace
  • 第三步:加输出侧校验(结构 / 长度 / 重复),补"静默失败"告警
  • 第四步:建 50 条黄金集,跑通 prompt 变更 → 自动评估 → 通过率门槛的流程
  • 第五步:成本看板 + 预算阈值告警上线,月度复盘单位经济

成熟度判据:能回答"昨天哪个 feature 烧了多少钱、哪些请求变慢了、哪版 prompt 的质量掉了"——三个问题 5 分钟内用看板回答,可观测性才算建成。

十 一次完整事故的复盘示例

把前三章串起来看一个真实链路:09:01 调用 P95 延迟突破 30s 告警,Trace 显示慢段全在第一个 LLM 节点且伴随重试;09:02 模型节点的 provider 侧指标(状态码 429 计数飙升)定位到是供应商限流;09:10 网关熔断切到备用模型,P95 回落;全程处理时长与损失请求数从评估集和日志里都能复算。"延迟告警 → Trace 慢段 → provider 指标 → 熔断动作 → 事后复算"这条链走通,可观测性才算真正在业务工作。单看任何一环(只有延迟没有 Trace,只有 Trace 没有 provider 指标)都断在中间。

引用

关键词 LLM服务可观测性指标追踪告警 000054