APMPlusExporter 将 span 数据以 OTLP(gRPC)协议上报至火山引擎 APMPlus 平台。除追踪链路外,它还会通过内置的指标上报器采集模型调用次数、token 用量、操作耗时、异常次数、工具耗时以及技能下载与加载次数等指标,写入 APMPlus 的指标面板。
启用内容追踪时,模型输出中的推理内容以
reasoning 类型标注,与普通文本内容区分,便于在 APMPlus 中单独查看推理过程。token 用量指标按
input、output 和 cache_read 三个维度分别记录。cache_read 表示命中的缓存输入 token 数量,是 input 的子集而非额外用量。技能下载与加载次数通过
gen_ai_skill_download_count 和 gen_ai_skill_load_count 两个 OTEL 计数器记录,单位为 1。gen_ai_skill_download_count 统计技能包下载次数(含缓存命中与失败),维度包括 skill_source、skill_id、skill_name、skill_version 和 skill_space_id。gen_ai_skill_load_count 统计技能指令成功加载次数,维度与下载计数器一致。技能下载过程同时生成 download_skill {skill_name} span,标注技能来源、ID、名称、版本、空间、消费者、结果与缓存命中等属性;结果(success 或 error)仅记录在 Span 上,不作为计数器维度。技能指令加载成功时将既有工具 Span 命名为 load_skill {skill_name},并添加技能来源、ID、名称、版本、空间与消费者属性。何时使用
- 需要在火山引擎 APMPlus 平台上统一观测智能体的调用链路;
- 需要模型级别的指标分析,如 token 消耗、调用延迟与错误率;
- 生产环境中需要成本追踪与性能监控。
接入前准备
先完成安装和模型配置,再设置以下环境变量。占位符需要替换为有权限访问的实际资源和凭证;在启动 Python 前完成配置使用示例
保存为app.py,运行 python app.py。示例复用已有资源,完成一次模型调用后刷新待导出的链路数据
app.py
APMPlusExporterConfig 显式传入连接参数:
参数
构造参数
APMPlusExporter 的连接参数由 config 字段承载,类型为 APMPlusExporterConfig;不传时各字段自动从对应环境变量读取。
APMPlus 连接配置
config 为 APMPlusExporterConfig,各字段默认从 APMPlusConfig 读取,环境变量如下:
AppKey 按以下优先级解析:先读取非空的
OBSERVABILITY_OPENTELEMETRY_APMPLUS_API_KEY,再读取非空的 TENANT_APMPLUS_APPKEY,两者均未设置时根据云服务商自动获取 APMPlus 令牌(火山引擎模式使用 open.volcengineapi.com,BytePlus 模式使用 open.byteplusapi.com,因此需要配置对应云服务商的有效凭证:火山引擎使用 VOLCENGINE_ACCESS_KEY / VOLCENGINE_SECRET_KEY,BytePlus 使用 BYTEPLUS_ACCESS_KEY / BYTEPLUS_SECRET_KEY;使用临时凭证时还需提供对应的 Session Token)。解析为懒加载,成功取到的值会在每个 APMPlusConfig 实例上缓存;解析失败不会缓存,也不会返回空 Key,而是抛出脱敏后的错误。endpoint 使用 gRPC 协议、以非加密方式连接。endpoint 的默认值根据云服务商与地域动态生成。火山引擎模式下,地域依次取自 REGION 环境变量与默认值 cn-beijing;BytePlus 模式下,地域依次取自 BYTEPLUS_REGION 环境变量与默认值 ap-southeast-1。云服务商由 AGENTKIT_CLOUD_PROVIDER 或 CLOUD_PROVIDER 环境变量决定,默认为火山引擎。Agent 依据环境变量自动挂载 APMPlus 导出器,无需显式构造:
如果初始化
OpentelemetryTracer 时已存在全局 TracerProvider,VeADK 将复用该 provider,并跳过 APMPlusExporter 的链路注册。导出器对象仍在列表中;已有 provider 不一定配置了 APMPlus,需要自行确认上报目标。可通过 apmplus_managed_externally 属性确认此状态,详见可观测概述。全局
MeterProvider 已由应用配置时,VeADK 会直接复用,不会将其指标导出目标自动改为 APMPlus。需在已有 provider 中配置指标上报;链路与指标使用各自的 provider,两者应分别核对验证与排查
运行后在目标平台按本次 Trace ID 查询。模型回复成功只说明智能体完成了调用,不代表链路上传成功;找不到数据时依次检查端点和地域、凭证权限、目标资源以及进程退出前是否调用tracer.force_export()