可观测能力用于记录一次智能体调用中的 HTTP 请求、Runner 调用、模型调用、工具调用、错误、延迟和 token 使用量。VeADK Go 基于 OpenTelemetry 提供 observability.NewPlugin()、observability.ADKTelemetryOptions()、HTTP middleware、导出器配置和有界关闭能力。
何时使用
- 需要定位模型、工具、知识库或记忆链路的耗时和错误。
- 需要把智能体服务接入 APMPlus、Cozeloop、TLS、OTLP Collector、stdout 或文件。
- 需要在 AgentKit Server App、Simple App 或自定义 ADK launcher 中保留同一条 trace 链路。
- 需要在退出进程前尽量 flush 已排队的 spans 和 metrics。
在 Runner 或 launcher 中启用
如果你直接使用 ADK launcher 或自己组装 runner.PluginConfig,需要显式注册 VeADK Go 的可观测插件,并把 ADK telemetry 绑定到同一个 OpenTelemetry provider。
observability.NewPlugin() 会根据全局配置或环境变量初始化 exporter。没有任何 exporter 配置时,它会返回一个空插件,业务调用仍可继续执行。
在 App 服务中启用
通过 apps.Run 启动 Simple App、A2A App 或 AgentKit Server App 时,RunConfig 默认会追加可观测插件和 ADK telemetry options。只有在你需要完全自行管理 provider 和插件生命周期时,才设置 DisableObservability: true。
App 服务还会在 HTTP API handler 外层安装 observability.HTTPMiddleware,用于把 HTTP 请求和后续 ADK 调用关联到同一条链路。
配置导出器
VeADK Go 支持两类配置方式:环境变量和 config.yaml。环境变量适合容器、CI 和 AgentKit Runtime;config.yaml 适合本地开发或固定部署包。
stdout
stdout 适合本地确认 span 结构,不需要外部服务。
文件导出适合本地调试或离线排查。
OTLP
标准 OTLP 适合接入 OpenTelemetry Collector。OTEL_TRACES_EXPORTER=otlp 会启用标准 OTLP trace exporter;HTTP protobuf 默认使用 http://localhost:4318/v1/traces,gRPC 默认使用 http://localhost:4317。
如果需要传完整 trace URL,使用 trace-specific 变量:
APMPlus
APMPlus 需要 endpoint、API Key 和 service name。配置 APMPlus API Key 后,VeADK Go 会启用 GenAI 指标和 APMPlus 自定义指标。
Cozeloop
Cozeloop 使用独立 endpoint、API Key 和 service name。
TLS
TLS 导出需要 endpoint、region、topic ID 和 AK/SK。AK/SK 应由环境变量或平台 Secret 注入。
config.yaml 示例
环境变量会覆盖对应配置。运行中的 provider 不会因为后续环境变量变化而重新初始化,应在服务启动前设置完整配置。
配置项
采集内容
VeADK Go 会围绕以下对象记录 trace 和指标:
开启 prompt、工具输入、工具输出或模型响应采集前,应确认这些内容是否包含用户数据、文件内容、凭证或其他敏感信息。生产环境建议先制定脱敏和保留策略,再接入外部观测平台。
生命周期
observability.Init 只会初始化一次;NewPlugin 首次运行时会触发初始化。服务退出前应调用 observability.Shutdown(ctx) 或依赖 apps.Run 的默认关闭流程。Shutdown 和 ForceFlush 会受调用方 deadline 和内部五秒上限约束,超过期限的排队 spans 可能丢失。
常见问题