关于 doca-telemetry-exporter
doca-telemetry-exporter 为构建 DOCA 应用并向外部消费者发布结构化遥测数据的开发者提供指引,涵盖事件与指标发布、生命周期顺序、传输检查和故障排查。
主要功能
- 01Schema 与 source 生命周期指引
- 02类型化及不透明事件发布
- 03Metrics、OTLP 日志和 NetFlow 接口
- 04传输状态检查与错误诊断
适用场景
- 01发布应用计数器和测量值
- 02从 DOCA 程序发送结构化事件
- 03选择遥测发布接口
- 04排查报告未到达消费者的问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nvidia/ skills --skill doca-telemetry-exporter安装后在 Claude Code 中输入/doca-telemetry-exporter确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdCAPABILITIES.mdskill-card.mdskill.oms.sigSKILLCARD.yamlTASKS.mdevals/evals.json详细介绍
DOCA Telemetry Exporter
示例
- “从我的 DOCA 应用发布计数器。”——这属于本指南的范围。按先架构、后数据源的顺序进行;不要在此处配置 DTS。
- “报告事件时出现 BAD_STATE。”——先检查生命周期顺序,再修改报告调用。
说明
遵循下文的加载顺序。需要配置/发布/调试时,打开任务配套文件。需要了解发布方式时,打开功能配套文件。不要打开所有配套文件。
从哪里开始:本技能假设 DOCA 已安装,且用户正在实际操作 telemetry-exporter——从使用 DOCA 的程序向外部使用方发送结构化应用遥测数据(计数器/事件)。如果用户想要执行某项操作(配置/构建/修改并重新构建/运行/测试/调试),请打开任务配套文件;如果用户想了解此安装中的导出器能表达什么,请打开功能配套文件。如果用户尚未安装 DOCA,请先转到 doca-setup/SKILL.md。
如果用户不确定自己需要的是此库还是 DOCA Telemetry Service(接收端),请先阅读功能配套文件中的导出器与服务规则,再进行任何配置。
**此库不是 DOCA Core 上下文。**导出器没有
doca_ctx_start(),也没有针对每个doca_devinfo的能力查询系列(其doca_caps转储是桩实现)。其生命周期为schema_init→ 配置导出器 → 注册类型 →schema_start→source_create→source_start→ 报告 → 刷新 → 销毁。
此技能擅长回答的示例问题
此技能旨在回答以下类别的 telemetry-exporter 问题,每类附带一个完整示例。Agent 应将类别视为核心内容——完整示例只是其中一个实例。
- “我需要哪个库——exporter 还是 telemetry 服务?”——完整示例:“我想让 DOCA Flow 程序向下游收集器发布每秒处理的数据包计数器——应该链接哪个 DOCA 组件?” 由 ## Capabilities and modes 中的角色划分表 + 路径选择要点回答,两者都指出
doca-telemetry-exporter是应用程序要链接的发布方,并将接收 / 消费端引导至此技能范围之外。 - “如何从 DOCA 程序发出我的第一个结构化事件?”——完整示例:“从我的 DOCA Flow 应用发出一条
packets_processed事件记录”。由 ## Capabilities and modes 中的 schema → source 生命周期对象表 + ## configure + ## run 第 3 步(批量操作前先进行文件写入冒烟测试)中的工作流回答,从telemetry_export/示例开始。 - “我需要哪种发布方式——类型化事件、指标、OTLP 日志还是 NetFlow?”——完整示例:“我想要带标签的每接口数据包计数器和带宽仪表”。由 ## Capabilities and modes 中的发布方式表回答(该需求对应 Metrics API——
_metrics_add_counter/_add_gauge——以及telemetry_export_metrics/示例),并由 ## modify 中的示例映射提供补充说明。 - “我的 report 调用返回
DOCA_ERROR_BAD_STATE——我哪里做错了?”——完整示例:“doca_telemetry_exporter_source_report第一次调用就返回BAD_STATE”。由 ## Error taxonomy 中的BAD_STATE行回答(source 从未启动,或者写入 / 刷新时缺少 OTLP context)+ ## configure 中的生命周期顺序说明。请注意,此 API 不会返回DOCA_ERROR_AGAIN,也不会返回DOCA_ERROR_NOT_FOUND。 - “程序报告了,但 DTS / 收集器什么也没收到——我该从哪里开始排查?”——完整示例:“我的 report 返回成功,但 DTS 日志是空的”。由 ## Safety policy 中先启动接收方的分阶段流程 + ## test 中的文件写入冒烟测试和
check_ipc_status步骤回答(先通过文件写入验证发布端,再确认 IPC 状态为CONNECTED且接收方已启动)。 - “如何确认 exporter 已安装且传输正常?”——完整示例:“我的 DOCA 3.x 安装中是否有 exporter,IPC 是否真的已连接到 DTS?”。由 ## Version compatibility 中的版本兼容性补充说明回答(交叉链接到
doca-version/SKILL.md中的检测流程),并遵循 ## Capabilities and modes 中准确的内省规则(使用doca_telemetry_exporter_check_ipc_status,而不是设备能力查询)。
受众
本技能面向通过 DOCA Telemetry Exporter 构建可发出结构化遥测数据的应用程序的外部开发者,也就是说,其应用代码会调用 doca_telemetry_exporter_*(直接使用 C/C++,或通过其他语言的 FFI/绑定),将其使用 DOCA 的程序中的计数器、量表和事件发布到外部遥测数据使用方。本技能不面向为 DOCA Telemetry Exporter 本身做贡献的 NVIDIA 开发者,也不面向构建遥测数据接收/聚合服务的用户(DOCA Telemetry Service 是独立的 DOCA 服务,有自己的公开指南,可通过 doca-public-knowledge-map/SKILL.md 查阅)。
**语言范围。**DOCA Telemetry Exporter 以 C 库的形式提供,pkg-config 模块名称为 doca-telemetry-exporter。随附的示例使用 C 编写。C 和 C++ 使用者是典型场景;任务配套材料中的详细示例也假设使用这一路径。其他语言的使用者(Rust、Go、Python,等等)通过 FFI 或特定语言绑定使用相同的 *.so;在这种情况下,本技能的作用是确保以下内容不受语言影响:区分 exporter 与 service、schema → source 生命周期、通过传输而非 caps 进行发现的规则、权限规则(与应用使用相同的用户)、基于缓冲和刷新进行交付的模型,以及错误分类指导;并引导 Agent 将公开的 C ABI 视为权威接口,任何包装层最终都会调用该接口。
何时加载此技能
当用户正在使用任意语言进行 DOCA Telemetry Exporter 实际开发时,加载此技能。具体包括:
- 为应用将要发出的事件定义
doca_telemetry_exporter_schema(字段名称和字段类型),并在发布任何事件之前,先将其注册到 exporter。 - 创建一个或多个
doca_telemetry_exporter_source实例,以表示应用中不同的逻辑遥测数据源(例如,每个工作线程/每个流水线阶段各一个数据源)。 - 根据应用要报告的内容,选择合适的发布接口——类型化结构化事件(
_source_report)、不透明事件(_source_opaque_report)、Metrics API(计数器/量表/直方图)、OTLP 日志,或 NetFlow 关联 API。 - 确认 exporter 的安装和传输状况(此库没有
doca_devinfocaps 查询系列,也没有doca_caps数据):使用doca_telemetry_exporter_check_ipc_status检查 IPC 是否存活,使用_source_get_opaque_report_max_data_size获取不透明负载大小上限,并使用_schema_get_*配置 getter。 - 排查 exporter 调用返回的
DOCA_ERROR_*(BAD_STATE生命周期顺序问题、INVALID_VALUE类型/标签不匹配、NO_MEMORY、INITIALIZATION、UNKNOWN后端错误),以及返回给应用的每次调用状态。 - 在 Telemetry Exporter 与相邻选项之间做出选择(如果 stdout/结构化日志转发已足够,则使用
doca_log;如果用户需要非 DOCA 感知型接收端,则使用 Prometheus 客户端库;如果用户需要向应用内实时订阅事件,则使用doca-comch/SKILL.md——exporter 仅支持发布,且为单向传输)。 - 设计或扩展封装 exporter C ABI 的非 C 绑定(Rust、Go、Python,等等),确保遵守 exporter 与 service 的区分、schema → source 生命周期、权限策略、基于缓冲和刷新的交付模型,以及传输探查和错误处理规则。
对于一般性的 DOCA 入门、安装 DOCA 本身、接收遥测数据的服务(DOCA Telemetry Service 有自己的公开指南,可通过 doca-public-knowledge-map/SKILL.md 查阅),或非 exporter 库相关问题,不要加载此技能。对于这些情况,请使用 doca-public-knowledge-map/SKILL.md。
此技能提供的内容
这是一个轻量加载器。正文仅保留用于判断下一步应查看哪个文件的指引。实质性的导出器专属内容位于两个配套文件中:
- capabilities 配套文件——说明此安装中的导出器能够表达什么:导出器与服务的职责划分规则、对象族(
doca_telemetry_exporter_schema→_type/_field→_source,包含 schema → source 的生命周期)、四种发布方式(类型化事件 / 不透明事件 / Metrics API / OTLP 日志)以及 NetFlow 同级 API、传输而非能力的内省规则(check_ipc_status、_get_opaque_report_max_data_size、_schema_get_*——不含doca_caps数据,不进行设备能力查询)、导出器错误分类(映射到跨库的DOCA_ERROR_*集合,并注明此接口没有AGAIN,也没有NOT_FOUND)、可观测性接口(每次调用的状态 + IPC 状态 + 文件写入检查 + 接收端作为端到端信号)、对应用相同用户权限的安全策略以及先启动接收端的分阶段流程,还有避免使用doca_log和doca-comch的路径选择规则。 - tasks 配套文件——针对六个适用的导出器动词提供分步工作流:
configure、build、modify(之后重新构建)、run、test、debug。此外还有一个Deferred task verbs区块,将范围外的问题指向合适的后续技能。
此技能假定主机已在标准位置安装 DOCA,应用以能够写入导出器所配置遥测传输的用户身份运行,并且可访问的遥测接收端已在导出器启动前启动。它不涵盖安装 DOCA——安装流程请参阅 doca-setup/SKILL.md——也不涵盖配置或运行遥测接收服务;该服务是独立的 DOCA 服务,有自己的公开指南。
此技能有意不提供的内容
此技能提供的是Agent 指引,而不是示例或模板合集。为明确范围,此技能有意不包含以下内容,且不应通过拉取请求添加:
- 任何语言编写的预先完成的 DOCA Telemetry Exporter 应用源代码。 已验证的导出器源代码是随产品提供的 C 示例,位于
/opt/mellanox/doca/samples/doca_telemetry_exporter/。Agent 的职责是引导用户找到这些文件,并通过doca-programming-guide/SKILL.md中通用的示例修改工作流,对其进行最小差异修改,再叠加## modify中针对导出器的专属覆盖规则。 - 遥测使用者 / 收集器 / 接收服务。 DOCA Telemetry Service 是独立的 DOCA 服务,有自己的公开指南;请通过
doca-public-knowledge-map/SKILL.md转到相应指南。本技能仅涉及发布端。 - 存放在技能目录中的独立构建清单(
meson.build、CMakeLists.txt、Cargo.toml等)。Agent 应在用户的项目目录中,针对用户已安装的 DOCA 构建清单,其中pkg-config --modversion doca-telemetry-exporter是事实依据。 - 任何类型的
samples/、bindings/或reference/子目录。 即使在此技能目录树中放置的模拟或不完整工件标注为“reference”,也会造成误导:用户会将其视为可构建内容。
加载顺序
- 首先阅读此技能,确认用户的问题属于适用范围。
- 有关导出器与服务的区分规则、对象系列、schema → source 生命周期、四种发布方式 + NetFlow、传输层而非容量的自省规则、错误分类(注意:没有
AGAIN,也没有NOT_FOUND)、可观测性、安全策略,以及避开doca_log/ comch 的路径选择规则,请参阅 capabilities 配套技能。 - 有关分步工作流——配置、构建、修改、重新构建、运行、测试、调试,请参阅 tasks 配套技能。
两个配套文件相互交叉链接;它们还会链接到 doca-version/SKILL.md,以获取规范的版本处理规则;并会在正确答案是“查阅公开文档或已安装的软件包布局”而非“导出器专属指南”时,链接到 doca-public-knowledge-map/SKILL.md。
相关技能
doca-public-knowledge-map/SKILL.md— 所有公开 DOCA 文档来源及已安装 DOCA 软件包磁盘布局的路由表。导出器的公开指南 URL 为https://docs.nvidia.com/doca/sdk/DOCA-Telemetry-Exporter/index.html; 磁盘上的示例位于/opt/mellanox/doca/samples/doca_telemetry_exporter/下。DOCA Telemetry Service(即接收方,不在此处的范围内)是单独的指南,可通过同一张路由表找到。doca-setup/SKILL.md— 环境准备、 安装验证、传输侧可达性检查,以及使用公开 NGC DOCA 容器的我还没有安装路径。此技能假设其前置条件均已满足(尤其是应用程序用户能够写入遥测传输)。doca-version/SKILL.md— 规范的 DOCA 版本处理规则。此技能中的## Version compatibility会链接到四方匹配规则 + 检测链,并补充导出器专属的叠加规则。doca-structured-tools-contract/SKILL.md— 此套件的结构化工具优先级规则(检测 / 优先使用 / 回退 / 报告)。tasks 配套技能中的 Command 附录遵循此约定。doca-programming-guide/SKILL.md— 适用于每个库的通用 DOCA 编程模式:规范的pkg-config+ meson 构建模式、通用的“先修改已提供的示例”首个应用程序工作流、通用生命周期、跨库的DOCA_ERROR_*错误分类,以及程序侧调试顺序。此技能在此基础上补充导出器专属内容。doca-comch/SKILL.md— 当用户需要将实时事件订阅发送回应用程序内部时(主机 ↔ DPU 控制平面消息传递),应使用的正确原语。导出器仅支持发布 / 单向传输;若实际需求是订阅,此技能的路径选择规则会将用户引导至此处。doca-debug/SKILL.md— 跨领域调试步骤(安装 / 版本 / 构建 / 链接 / 运行时 / 程序 / 驱动程序)。导出器专属的调试问题(接收方未启动、生命周期顺序BAD_STATE、类型 / 标签INVALID_VALUE、未启用不透明路径)会叠加在这些步骤之上。