news 2026/10/6 2:49:16

47.LangfuseOpenTelemetry与Prometheus分别监控什么

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
47.LangfuseOpenTelemetry与Prometheus分别监控什么

Langfuse、OpenTelemetry 与 Prometheus:分别监控什么?

码海寻道 · 大模型、智能体与 RAG 工程组件系列第 47 篇

三者都能出现在 AI 应用的监控架构里,但职责不同:Langfuse 更关注 LLM 调用和评估,OpenTelemetry 负责统一采集和传播遥测信号,Prometheus 擅长指标时序和告警。

一、先按观测对象区分

一次用户问答 ├── Langfuse:Prompt、模型、Token、评估分数 ├── OpenTelemetry:跨服务 Trace、Span、Logs、Metrics └── Prometheus:QPS、错误率、延迟、资源和告警指标

它们可以互补,不是简单的三选一。

二、Langfuse 适合看什么?

适合 LLM 应用层的细节:

  • 一次会话和一次运行;
  • Prompt、模型、参数和输出;
  • Embedding、检索、Reranker 和工具调用;
  • 输入输出 Token 和成本;
  • 用户反馈与评估分数;
  • Prompt 版本和实验对比。

当用户说“答案不对”时,Langfuse 可以帮助查看该请求实际使用了哪个 Prompt、召回了哪些内容、调用了几次模型。

三、OpenTelemetry 适合看什么?

OpenTelemetry 提供统一的 Traces、Metrics 和 Logs 采集规范与 SDK/Collector 生态。它更关心请求如何穿过多个服务:

API Gateway → FastAPI → Redis → Milvus → Embedding Provider → LLM Provider

通过trace_id和 Span,可以看到每一段耗时、错误和父子关系。它不限定你最终使用哪种后端存储。

四、Prometheus 适合看什么?

Prometheus 以时间序列保存指标,适合:

  • 请求量和错误率;
  • P50/P95/P99 延迟;
  • 队列积压;
  • CPU、内存、连接池;
  • Redis、PostgreSQL、Milvus 状态;
  • 告警规则和容量趋势。

例如:

http_requests_total{service="rag-api",status="500"} rag_request_duration_seconds{route="/chat"} rag_queue_depth{queue="embedding"}

五、三者如何组合?

应用代码 ├── OpenTelemetry SDK → Collector → Trace/Logs/Metrics 后端 ├── Langfuse SDK → LLM 观测与评估平台 └── Prometheus endpoint → Prometheus → Alertmanager/Grafana

可以把同一个trace_id写入业务日志和 Langfuse 观测,发生问题时从系统指标跳转到具体 LLM 调用。

建议统一一组低基数的业务字段,例如service_name、environment、model_name、route、status和tenant_tier;将run_id、文档版本、检索参数和错误详情放入 Trace 属性或日志。OpenTelemetry 负责跨服务传播上下文,Langfuse 记录模型调用细节,Prometheus 只保留适合聚合和告警的指标,三者不要各自生成一套无法关联的 ID。

六、不要把完整 Prompt 无控制地写入监控

Prompt 和输出可能包含个人信息、商业秘密和用户上传文档。应支持:

  • 脱敏;
  • 采样;
  • 敏感字段屏蔽;
  • 租户访问隔离;
  • 保留周期;
  • 调试环境和生产环境不同策略。

观测系统本身也是数据副本,需要遵守权限和合规要求。

生产环境应设置采样、保留和删除策略:成功请求可以低比例采样,错误、超时和高风险操作提高采样率;Prompt、文档片段、用户问题和模型输出按字段脱敏或哈希化。观测平台的访问权限应与业务数据隔离,排障人员不应因为能看 Trace 就自动获得原文下载权限。

七、指标命名和标签设计

指标标签要低基数,避免把user_id、query、完整document_id直接作为 Prometheus label:

推荐:service、route、status、model、environment 谨慎:tenant_id、document_id、trace_id 禁止:原始问题、完整 Prompt、长文本

高基数数据应放在日志或 Trace 属性中,并控制采样。

八、建议的核心观测指标

业务层

  • 问答成功率;
  • 空结果率;
  • 引用命中率;
  • 用户点赞/点踩;
  • 转人工率。

链路层

  • Embedding、检索、Reranker、LLM 各阶段延迟;
  • 工具调用错误率;
  • 超时和取消率;
  • Trace 缺失率。

基础设施层

  • CPU、内存、磁盘和网络;
  • 数据库连接池;
  • 队列深度;
  • Redis 命中率;
  • Milvus 查询延迟。

九、告警要面向行动

好的告警应该回答:哪里坏了、影响谁、应该怎么处理。例如:

RAG 检索 P95 延迟连续 10 分钟超过 800ms,影响 production,检查 Query Node 和过滤条件。

不要为每个瞬时抖动发送告警。设置持续时间、分级和维护窗口,避免告警疲劳。

每条告警要绑定 Runbook 或处理动作,例如“P95 检索延迟升高”对应检查向量库负载、索引版本和降级开关;“越权拦截率异常”对应冻结高风险工具、保留审计证据并启动安全排查。没有处理路径的指标不应直接升级成紧急告警。

结语

Langfuse 观察 LLM 应用细节,OpenTelemetry 连接跨服务可观测链路,Prometheus 管理指标和告警。三者组合后,既能知道系统是否变慢,也能追到某次回答为什么错误、花了多少 Token。

下一篇将具体拆解 RAG 的召回率、忠实度、相关性和答案准确率。

参考资料

  1. Langfuse 官方文档:Observability
  2. OpenTelemetry 官方文档:Semantic Conventions
  3. Prometheus 官方文档:Overview

本文为“码海寻道”原创技术文章。监控标签、采样和数据保留策略需要结合系统规模、隐私和成本要求设计。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 2:48:11

怎么让 AI 引擎引用你的内容?抓取、理解、引用三阶段讲清楚

AI 引擎引用你的内容,本质上要过三道关:爬虫抓得到、模型读得懂、答案愿意引;三关缺一,内容就只是躺在服务器上的文本。本文把这三阶段拆开讲清楚,每一步给出可落地的配置位置和自查方法。 第一阶段:抓取—…

作者头像 李华
网站建设 2026/10/6 2:48:10

学Simulink——基于滑模变结构控制(SMC)的双向DC-AC逆变器鲁棒控制仿真

目录 手把手教你学Simulink——基于滑模变结构控制(SMC)的双向DC-AC逆变器鲁棒控制仿真 一、 引言:当“参数漂移”遇上“模式切换”——滑模控制如何化身双向变流器的“金刚不坏之身”? 二、 问题本质:双向DC-AC的“核心挑战”与“SMC协同逻辑” 1. 核心挑战 2. 协同逻…

作者头像 李华
网站建设 2026/10/6 2:46:42

SpringMvc——注意事项

在实际开发中 spring 会扫描包 springmvc也会去扫描controller的包,所以在写扫描路径的时候,需要将springmvc扫描路径写成 com.xxx.controller 然后spring也去写具体的路径,或者将springmvc扫描的controller排除如果是按照上面的方法&#x…

作者头像 李华