logging,级别、格式与追踪关联方式见应用日志。
核心概念
span
span 是一次可被追踪的执行单元,记录名称、起止时间、属性以及父子关系。VeADK 会为一次完整请求生成一棵 span 树,覆盖智能体运行、模型调用、工具执行等节点,并遵循生成式 AI 语义规范标注gen_ai.operation.name、gen_ai.span.kind 等属性。
追踪器 OpentelemetryTracer
OpentelemetryTracer 是统一的追踪入口。它持有一组导出器,初始化时将每个导出器接入追踪管线,并自动附加一个内存导出器用于本地留存与落盘。
导出器 exporter
导出器负责把 span 数据发送到具体的后端平台。每个导出器对应一个后端,可单独或组合使用。VeADK 内置以下导出器:给智能体挂载追踪器
追踪能力通过Agent 的 tracers 字段接入。构造对应后端的导出器,交给 OpentelemetryTracer,再把追踪器挂到智能体上即可:
追踪器参数
OpentelemetryTracer 接受以下字段:
InMemoryExporter 由 OpentelemetryTracer 自动管理,用于记录全部 span。请勿手动加入 exporters 列表,否则初始化会报错。复用全局 TracerProvider
默认情况下,OpentelemetryTracer 初始化时会创建并设置全局 TracerProvider。如果在初始化之前已存在一个全局 TracerProvider(例如由其他库或应用主程序设置),VeADK 将复用该 provider 而不再覆盖它。
此时,VeADK 会自动从导出器列表中移除 APMPlusExporter,因为已存在的 provider 被视为已负责 APMPlus 的链路数据上报。其他导出器(如 CozeloopExporter、TLSExporter)仍会被正常注册到该 provider。VeADK 的内存导出器也会正常附加。
此行为同样适用于通过
ENABLE_APMPLUS=true 自动创建导出器的场景:如果全局 TracerProvider 已存在,自动创建的 APMPlusExporter 也会被移除。apmplus_managed_externally 属性判断当前追踪器是否检测到了外部 provider:
通过环境变量启用导出器
除显式构造导出器外,Agent 会根据以下环境变量在运行时自动挂载对应导出器(值为 true 时启用)。若智能体未显式提供 tracers,会自动创建一个 OpentelemetryTracer:
内容追踪
默认情况下,span 会记录智能体、模型与工具的输入输出内容。在涉及敏感数据的场景中,可关闭内容采集,仅保留非内容的 span 结构与耗时信息。该行为由OpenTelemetryConfig.trace_content 控制。
本地落盘
OpentelemetryTracer 内置的内存导出器会按 session_id 留存 span,可调用 dump 将当前会话的 span 导出为本地 JSON 文件,用于离线分析:
span_id、trace_id、起止时间、属性以及父 span 关系。更多细节参见内存导出器。