news 2026/9/25 2:04:21

可观测性开箱即用:Archestra中OpenTelemetry追踪、Prometheus指标与日志体系全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
可观测性开箱即用:Archestra中OpenTelemetry追踪、Prometheus指标与日志体系全解析

可观测性开箱即用:Archestra中OpenTelemetry追踪、Prometheus指标与日志体系全解析

【免费下载链接】archestraEnterprise AI Platform with guardrails, MCP registry, gateway & orchestrator项目地址: https://gitcode.com/gh_mirrors/ar/archestra

Archestra 是企业级 AI 平台(带 AI 护栏、MCP 注册中心、网关与编排器),它的可观测性开箱即用:内置 OpenTelemetry 分布式追踪、Prometheus 指标暴露与 OTLP 日志导出,配合官方 Grafana 仪表盘,无需自研监控代码,就能看清每一次 LLM 调用的延迟、Token 消耗与成本。本文带你完整走查这套 可观测性体系 的三大支柱。

为什么 AI 平台需要一套完整的可观测性

传统 Web 应用看 QPS 和错误率就够了,但 AI 平台多了一个"钱袋子"和"黑盒子":

  • 💰成本不可见:一次对话可能触发多轮 LLM 调用和 MCP 工具执行,不追踪就不知道哪个 Agent 在烧钱
  • 🐢延迟难归因:用户抱怨"慢",到底是模型首 Token 慢,还是平台自身的鉴权、护栏、工具调度慢?
  • 🔍行为难审计:Agent 调用了哪些工具、传了什么参数、模型回了什么,出问题时拿不出证据

Archestra 用 OpenTelemetry(OTel)+ Prometheus + Loki 这套业界标准组合回答了以上三个问题,且全部以标准协议导出——你可以接 Jaeger、Tempo、Grafana Cloud 等任意 OTLP 兼容后端。

一张图看懂:指标、追踪、日志三条管道

Archestra 的可观测性数据流向如下:

  1. Web 进程在http://localhost:9050/metrics暴露 Prometheus 格式指标;独立的Worker 进程(Helm 部署默认形态)在:9000/metrics暴露任务队列与知识库流水线指标
  2. 追踪与日志统一通过 OTLP 协议发到 OpenTelemetry Collector(默认http://localhost:4318,追踪走/v1/traces,日志走/v1/logs)
  3. Collector 将追踪写入Grafana Tempo、日志写入Loki,再由 Grafana 统一呈现

仓库里附带了一套开箱即用的开发环境编排,一条命令拉起 Tempo、Loki、OTel Collector、Prometheus、Grafana 全家桶:

  • 编排文件:docker-compose.observability.yml
  • Prometheus 抓取配置:prometheus.yml(每 10 秒抓取一次 Archestra 指标)
  • Collector 管道配置:otel-collector-config.yaml

Prometheus 指标全解:LLM 成本与延迟一眼看清

核心 LLM 指标(建议优先关注)

指标名含义
llm_request_duration_secondsLLM 请求耗时,可按 provider、model、agent、状态码细分
llm_tokens_totalToken 消耗(input/output 分开计数)
llm_cost_total美元成本估算,真实计费口径用sum(llm_cost_total{billing_mode="metered"})
llm_time_to_first_token_seconds首 Token 时间(TTFT),挑低延迟模型的好依据
llm_time_to_first_byte_seconds首字节时间,含平台自身鉴权/护栏开销,与 TTFT 对比即可分离"平台慢"还是"模型慢"
llm_tokens_per_second输出吞吐(tokens/s)
llm_active_users24h/7d 活跃用户数(跨副本聚合请用max()而非sum())

💡 小技巧:llm_cache_tokens_total、llm_cache_savings_total还能单独追踪提示词缓存省了多少钱,对重度使用长 System Prompt 的团队很实用。

其他值得接入告警的指标组

  • MCP 指标:mcp_tool_calls_total、mcp_tool_call_duration_seconds追踪工具调用成功率与耗时;mcp_server_deployment_status可统计自托管 MCP 服务器处于 running / hibernated 等状态的数量
  • RAG / 知识库指标:rag_connector_syncs_total、rag_embedding_batches_total、rag_query_duration_seconds覆盖同步、向量化到检索的全链路
  • 任务队列指标:task_queue_tasks_dead_total(进入死信队列)是最该告警的信号
  • 应用层指标:HTTP 请求直方图、Node.js 事件循环滞后(nodejs_eventloop_lag_seconds)、V8 堆内存、进程 CPU/内存

OpenTelemetry 分布式追踪:LLM 调用的全链路视角

只需一个环境变量开启

ARCHESTRA_OTEL_EXPORTER_OTLP_ENDPOINT=http://your-collector:4318

支持 Bearer / Basic 认证(ARCHESTRA_OTEL_EXPORTER_OTLP_AUTH_*系列变量),不配置则匿名导出。

默认追踪什么

默认只采集 GenAI 相关的"干净"追踪,避免噪音:

  • LLM API 调用——专属 Span 记录模型、Token、耗时,命名如chat gpt-4o-mini
  • MCP 工具调用——execute_tool {tool_name},含被护栏拦截(mcp.blocked=true)的决策记录
  • 知识库操作——Embedding / Rerank 调用同样有 Span 与成本追踪
  • Skill 沙箱执行——Rust 原生运行时导出service.name=archestra-sandbox-rs的 Span
  • 需要看 HTTP 路由等基础设施细节时,设置ARCHESTRA_OTEL_VERBOSE_TRACING=true

会话级统一追踪:一次对话一棵树

内置 Chat 的每轮对话会生成一棵统一的追踪树:

chat {agentName} ← 父 Span ├── chat {model} ← LLM 调用 ├── execute_tool {工具名} ← MCP 工具执行 └── chat {model} ← 工具结果后的追问

通过X-Archestra-Session-Id头传入会话 ID,即可按gen_ai.conversation.id把同一 Agent 会话的所有调用聚合到一条时间线上;无论入口是 Chat UI、A2A 协议、MS Teams 还是 Email,route.category与archestra.trigger.source都能帮你按渠道过滤。

两个实用特性

  • 📸内容捕获:默认把 Prompt / Completion / 工具参数与结果记录为 Span 事件(单事件截断至 10,000 字符),便于完整审计;可用ARCHESTRA_OTEL_CAPTURE_CONTENT=false关闭。若启用了静态内容加密,该项默认自动关闭,防止密文数据库的内容以明文外泄
  • 🔗指标跳追踪(Exemplars):所有 LLM 与 MCP 指标都携带追踪示例点,在 Grafana 中点击某个指标数据点可直接跳转到 Tempo 中对应的 Trace——从"发现异常"到"定位请求"只需一次点击

日志体系:从 OTel Collector 到 Loki 的闭环

Archestra 的日志不走"各容器 stdout 各自为政"的老路:OTel Collector 统一接收 OTLP 日志并转发到 Loki(Loki 3.x 原生支持 OTLP 摄取),开发环境的管道在 otel-collector-config.yaml 中定义。Grafana 数据源配置还开启了traces-to-logs 双向跳转:从一条追踪按service.name标签直接捞出相关日志,见 datasources.yml。

真用户监控(RUM):把"用户怎么用"也变成日志

除基础设施遥测外,Archestra 还支持Real User Monitoring(企业版功能):浏览器端事件经后端转发为你的 OTLP 日志记录,只需设置

ARCHESTRA_RUM_EXPORTER_OTLP_ENDPOINT=http://your-collector:4318

捕获的事件是封闭白名单——session.start、page_view、Core Web Vitals(LCP/CLS/INP)、主线程长任务、客户端错误指纹、API 请求耗时等,且不包含聊天内容、姓名、原始 URL 等敏感信息,隐私友好。在 Grafana + Loki 中按{service_name="Archestra Web"}查询即可搭建用量看板:

5 个官方 Grafana 仪表盘,克隆即用

平台内置 5 个覆盖全场景的仪表盘 JSON,位于 platform/dev/grafana/dashboards/:

仪表盘关注点
GenAI ObservabilityLLM 请求、Token、成本、延迟与追踪
MCP Monitoring工具调用成功率、错误率、耗时
Agent Sessions会话级审计,可下钻 LLM 调用 / 工具调用 / 关联日志
Application MetricsHTTP 流量、Node.js 健康、任务队列、PostgreSQL
RAG & Knowledge Base连接器同步、Embedding 管道、检索性能

配合 install-dashboards.sh 脚本可一键导入全部仪表盘(幂等,可重复执行),并通过--postgres-provider适配 OTel Collector / Cloud SQL / Azure 等不同数据库指标来源。

快速上手:三步搭好最小可观测性环境

  1. 启动全家桶:运行docker compose -f platform/dev/docker-compose.observability.yml up -d,Grafana 监听 3002 端口
  2. 指向 Collector:给 Archestra 后端设置ARCHESTRA_OTEL_EXPORTER_OTLP_ENDPOINT(本地开发时默认http://localhost:4318即可)
  3. 验证闭环:发起一次 Chat 对话 → 打开 Grafana 的 GenAI Observability 面板 → 点击llm_request_duration_seconds的某个数据点 → 通过 Exemplar 直达 Tempo 中的完整追踪 → 再按 trace ID 捞出 Loki 日志

🎯 生产环境(Helm 部署)提醒:worker 是独立进程,请确保抓取配置同时覆盖 web 的:9050与 worker 的:9000两个指标端点,否则任务队列与知识库流水线指标会缺失。

小结

Archestra 把企业级 AI 平台最头疼的"看得见、算得清、查得到"做成了默认能力:Prometheus 指标回答"花了多少钱、快不快",OpenTelemetry 追踪回答"这次调用到底发生了什么",Loki 日志与 RUM回答"用户和产品实际表现如何"。三者共享同一套 OTLP 管道与 Grafana 呈现层,标准协议意味着你可以随时替换后端,而不必改动一行平台代码。

📖 更多细节请查阅官方文档:platform-observability.md,部署相关环境变量见 platform-deployment.md 的Observability & Metrics章节。

【免费下载链接】archestraEnterprise AI Platform with guardrails, MCP registry, gateway & orchestrator项目地址: https://gitcode.com/gh_mirrors/ar/archestra

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

C语言怎么练?六大高频题型与刷题路线全拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 2:02:29

UART、I2C、SPI、I2S四大串行总线本质区别与工程选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 2:02:19

C# TCP服务端生产实践:工业级高可靠通信实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 2:02:18

Verilog三种描述方式:门级、RTL级与行为级详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 2:01:29

YOLOv8模型部署到RK3568:从ONNX到RKNN的完整量化与推理指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华