跳到内容
sigiro
简体中文
Esc
导航打开⌘J预览
本页内容

将 agent 自身的遥测数据发送到 sigiro

Claude Code 和 Codex 都会发出关于自身会话的 OpenTelemetry 数据。将它们指向 sigiro,即可用 SQL 读取 token 数量、工具调用和会话延迟。

本指南介绍如何记录 agent 的行为,而不是你的服务的行为。Claude Code 和 Codex 都会发出关于自身会话的 OpenTelemetry 数据。将这些遥测数据指向 sigiro,会话就会 变成可供查询的数据行。

这与用 agent 为你的代码埋点是两项不同的任务,后者 是把 你的服务 指向 sigiro。如果两者都需要,就都做一遍。

开始之前

你需要一台 sigiro 服务器。用 sigiro serve 启动,或使用 快速上手中的 Docker 命令启动。

在下面的配置中,两个 agent 都通过 OTLP gRPC 从 4317 端口导出数据。自托管服务器 不需要密钥。

Claude Code

Claude Code 从环境变量中读取遥测配置。请在启动 Claude Code 的环境中设置这些 变量。可以使用 shell 配置文件、.envrc 文件或包装脚本:

export CLAUDE_CODE_ENABLE_TELEMETRY=1
export CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_TRACES_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

如果使用托管服务,请额外添加 OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ${SIGIRO_API_KEY}"。切勿将密钥 提交到任何文件中。

Codex

Codex 从自己的配置文件读取遥测配置,而不是从环境变量读取。请编辑 ~/.codex/config.toml

[otel]
environment = "dev"
log_user_prompt = false
exporter = "otlp-grpc"

[otel.exporter."otlp-grpc"]
endpoint = "http://localhost:4317"

如果使用托管服务,请额外添加 headers = { authorization = "Bearer ${SIGIRO_API_KEY}" }。并在启动 Codex 的环境 中设置 SIGIRO_API_KEY

两者共有的一个限制

以上配置只覆盖 agent 进程本身,不覆盖 agent 运行的命令。agent 通过其 shell 工具 启动的应用程序并不总能继承这些变量,因此已埋点的服务仍需要自己的导出器配置。这种 情况请参阅用 agent 为你的代码埋点

确认配置生效

启动 agent,运行一次提示词,然后查询 sigiro 收到了哪些服务:

curl http://localhost:9999/v1/services

agent 会把自己上报为一个服务。等它出现之后,再查询会话:

curl -X POST http://localhost:9999/v1/query \
  --data "SELECT service_name, span_name, count(*) AS n
          FROM sigiro_spans
          WHERE timestamp > now() - INTERVAL '1 hour'
          GROUP BY 1, 2 ORDER BY n DESC"

agent 还会上报计数器和仪表值,这些数据会落到 sigiro_metrics_* 系列表中,而不是 sigiro_spans 表。关于这些表说明了各系列表分别存放 什么数据,以及每个系列描述的是哪一台机器。

下一步

这个页面有帮助吗?