用途
aio-telemetry-instrument 是一个交互式指南技能,用于为 Adobe App Builder runtime action 添加遥测插桩(telemetry instrumentation),基于 @adobe/aio-lib-telemetry 库。它一次只处理一个 action,从可观测性目标出发,添加所需的最小代码。
主要能力
该技能按阶段引导用户完成插桩:
- Phase 0:发现 action — 读取项目根目录的 app.config.yaml 及 ext.config.yaml,解析已声明的 actions,询问要插桩哪一个;若配置文件中未声明 action,则请用户直接指向 action 文件。
- Phase 1:理解 action — 系统阅读 action 源码,查找 instrumentEntrypoint,追踪从 main 开始的调用图,识别外部调用、业务逻辑与错误路径,并按主要模式对 action 分类(API 代理、事件处理器、数据管道、编排器、CRUD 处理器或简单型),同时检查已有插桩与自动插桩覆盖情况。
- Phase 2:发现可观测性目标 — 询问缺失的输入,包括深度(Essential、Standard、Comprehensive)、信号类型(traces、metrics、logs 或全部,默认 traces)、集成方式(仅当 action 匹配 commerceWebhooks() 或 commerceEvents() 时询问),以及核心问题“当此 action 失败或变慢时,你需要看到什么?”
- Phase 3:提出方案 — 以表格形式呈现计划,包含序号、内容、信号、API、原因,并限定在所选深度级别内,每项都需关联 Phase 2 的可观测性目标。
- Phase 4:实现 — 按顺序实现:指标定义(模块级 defineMetrics())、函数包装(instrument())、span 增强(属性与事件)、日志(getLogger() 或 getInstrumentationHelpers().logger)、传播(出站调用中的 contextCarrier)。
使用方式
该技能为交互式引导,用户需先确认 @adobe/aio-lib-telemetry 已安装且项目已有 defineTelemetryConfig 调用,否则会路由到 aio-telemetry-setup。对于单轮实现任务,优先给出具体代码而非建议。实现后检查每个 instrument() 调用是否使用命名函数或提供 spanConfig.spanName,并检查导入路径是否仅来自 @adobe/aio-lib-telemetry、@adobe/aio-lib-telemetry/otel 和 @adobe/aio-lib-telemetry/integrations。
最小模式示例:
const fetchProductData = instrument(async function fetchProductData(productId) {
return commerceClient.getProduct(productId);
});
适用场景
适用于需要为 Adobe App Builder runtime action 添加遥测插桩的开发者,尤其是希望以最小代码改动实现可观测性、需要按 action 逐个处理、或需要根据可观测性目标选择合适信号类型与插桩深度的场景。
限制
- 每次会话只处理一个 action;若用户要求多个 action 或“整个项目”,需先选择第一个 action 并逐个继续。
- 需先满足前置条件(已安装 @adobe/aio-lib-telemetry 且已有 defineTelemetryConfig 调用),否则需先完成 setup。
- 并非所有自动插桩在 App Builder runtime 中都能可靠工作。
- 若遇到设置问题,建议使用 aio-telemetry-setup 技能;若实现后出现运行时错误或异常行为,建议使用 aio-telemetry-troubleshooting 技能。
- 关于收费、价格、平台支持等具体信息,资料中暂未提供。