Azure Monitor OpenTelemetry 导出器
为 Python 自定义 OpenTelemetry 管道提供发送遥测数据到 Application Insights 的低层导出能力。
文档明确建议使用 DefaultAzureCredential、限制生产凭据链、避免直接使用 instrumentation key,并说明遥测会发送到 Application Insights;但未说明遥测内容可能包含敏感数据、数据保留/脱敏、最小 RBAC 权限、用户确认、外部网络影响或恢复边界,因此扣分。未发现恶意行为、凭据窃取、隐蔽外传或破坏性默认设置。
安装、认证、三类导出器、离线存储和关闭流程说明形成了合理的快乐路径,且给出部分失败重试配置;但没有该技能专属测试、版本兼容矩阵、异常输入处理或可诊断错误反馈。文档要求退出时 flush/shutdown,却多数示例未实际展示,因而扣分。静态校准限制分数不超过10。
名称、触发词、Python 用户群体和低级导出器定位清晰,并区分 distro 与自定义管线;但未明确不适用场景、输入/输出契约、语义触发边界或中文使用说明,也未讨论中国大陆网络、Azure 区域与代理环境适配,因此扣分。
Front matter 提供 MIT 许可证、作者和 1.0.0 版本,目录分出主文档与参考场景,且仓库 README、许可证、CI 和安全报告路径提供了一定治理信号;但缺少 changelog、依赖版本、维护负责人/更新流程、常见故障排查和完整限制说明,引用路径与内容存在重复,因而扣分。
示例覆盖 trace、metric、log、AAD、采样、离线存储和主权云,能直接帮助用户搭建核心导出流程;但缺少完整依赖安装、敏感遥测治理、统一 shutdown 示例和可验证的代表性运行结果,用户仍需审查和补全,故未给高于静态上限7的分数。
文档包含具体 API、环境变量和配置示例,仓库提供通用 CI、评估工作流和测试基础设施;但给定材料没有该技能专属测试、执行结果、版本锁定或第三方交叉验证,结论主要依赖作者文档,因此扣分。静态校准限制分数不超过5。
- 遥测可能包含应用日志、异常、属性和请求数据;部署前应确认脱敏、采样、保留期限、RBAC 和跨境/区域数据传输要求。
- 示例未完整展示 provider.shutdown()/force_flush(),且安装命令未明确列出 azure-identity 与 OpenTelemetry 依赖及兼容版本;应在目标环境中验证。
- 触发词较窄,未说明与 azure-monitor-opentelemetry distro、同步/异步用法及中国大陆网络或主权云限制的详细边界。
它能做什么 & 适用场景
该技能面向需要在 Python 中构建自定义 OpenTelemetry 管道的开发者。它指导使用 Azure Monitor OpenTelemetry Exporter 将 traces、metrics 和 logs 发送到 Application Insights。技能涵盖 Microsoft Entra 身份验证、采样、离线重试存储、主权云以及显式刷新和关闭遥测提供程序。若只需要快速配置和自动插桩,源材料建议优先使用 azure-monitor-opentelemetry 分发包。
指导安装 azure-monitor-opentelemetry-exporter Python 包,读取 APPLICATIONINSIGHTS_CONNECTION_STRING 以定位 Application Insights 资源,并可使用 DefaultAzureCredential 或指定的 Azure 凭据进行摄取身份验证。它配置 AzureMonitorTraceExporter、AzureMonitorMetricExporter 和 AzureMonitorLogExporter,分别发送 traces/spans、metrics 和 logs。它还展示如何配置 BatchSpanProcessor、PeriodicExportingMetricReader、BatchLogRecordProcessor、ApplicationInsightsSampler,以及离线存储、重试和主权云连接。
- 需要精细控制 OpenTelemetry 管道的 Python 应用开发者,可配置 traces、metrics 和 logs 的独立导出器。
- 希望使用 Microsoft Entra 身份验证而非 instrumentation key 将遥测数据发送到 Application Insights 的团队。
- 生产环境中需要批量导出、采样和网络失败后离线重试的服务维护者。
- 部署到 Azure Government 等主权云环境、需要指定 authority 和 ingestion endpoint 的开发者。
- 已经使用 OpenTelemetry SDK、但不需要完整自动插桩分发包的 Python 项目。
优缺点一览
- 覆盖 traces、metrics 和 logs 三类遥测数据。
- 支持 DefaultAzureCredential、指定 Azure 凭据、采样、离线存储和主权云。
- 提供可直接参考的 Python 配置示例和生产实践建议。
- MIT 许可,且仓库处于积极开发维护状态。
- 这是低层自定义导出器技能,不是快速自动插桩方案。
- 需要自行管理 OpenTelemetry providers 的刷新和关闭生命周期。
- 源材料没有提供该单个技能的独立测试覆盖或兼容版本矩阵。
- 使用离线存储时需要配置本地存储路径,并涉及本地文件系统。
如何安装
先安装集合:运行 npx skills add microsoft/skills,并在向导中选择此技能;技能会安装到所选 Agent 的目录,例如 GitHub Copilot 使用的 .github/skills/。在 Python 项目中再运行:pip install azure-monitor-opentelemetry-exporter。源材料未说明其他 Agent 的具体安装路径。
如何使用
可用触发语句:"azure-monitor-opentelemetry-exporter"、"AzureMonitorTraceExporter"、"AzureMonitorMetricExporter" 或 "AzureMonitorLogExporter"。设置 APPLICATIONINSIGHTS_CONNECTION_STRING;使用 DefaultAzureCredential 时,生产环境还应设置 AZURE_TOKEN_CREDENTIALS=prod 或指定凭据。根据需要配置 trace、metric 或 log exporter,并在进程退出时调用 provider.shutdown() 或 force_flush()。
对比同类
与 azure-monitor-opentelemetry 分发包相比,此技能适合自定义 OpenTelemetry 管道和精细控制;分发包适合快速设置和自动插桩。