Skip to content

如何将 Python OpenTelemetry 数据导出至 Azure Monitor

本技能教你如何使用底层导出器(Low-level Exporter)将 Python 程序的 OpenTelemetry 遥测数据(Traces, Metrics, Logs)精确地发送到 Azure Application Insights。

为什么需要这个技能

在构建云原生应用时,监控系统的可观测性至关重要。虽然 Azure 提供了自动仪表化(Auto-instrumentation)的快速配置方案,但在复杂的企业级项目中,开发者往往需要更细粒度的控制权。

当你需要自定义 OpenTelemetry 管道、精确控制采样率、或者在不支持自动注入的环境中手动配置遥测数据导出时,直接使用 azure-monitor-opentelemetry-exporter 是最佳选择。它允许你独立控制追踪、指标和日志的导出逻辑,而无需依赖庞大的分发包。

适用场景

  • 自定义遥测管道:需要手动定义 TracerProviderMeterProvider 的高级场景。
  • 细粒度数据控制:需要为不同类型的遥测数据设置不同的导出频率或采样策略。
  • 严格的安全环境:需要通过 Azure AD(Managed Identity)而非连接字符串进行身份验证。
  • 离线重试需求:在网络不稳定的环境下,需要配置本地存储以保证数据在恢复后能够重传。

核心工作流

1. 安装与环境配置

首先安装导出器库,并在环境变量中设置连接字符串。

bash
pip install azure-monitor-opentelemetry-exporter
bash
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/

2. 配置三种核心导出器

  • 追踪导出 (Trace):使用 AzureMonitorTraceExporter 配合 BatchSpanProcessor 将请求链路发送至 requestsdependencies 表。
  • 指标导出 (Metric):使用 AzureMonitorMetricExporter 配合 PeriodicExportingMetricReader 将自定义计数器发送至 customMetrics 表。
  • 日志导出 (Log):使用 AzureMonitorLogExporter 将 Python 标准日志记录发送至 traces 表。

3. 高级优化策略

  • 身份验证:使用 DefaultAzureCredential() 替换连接字符串,实现更安全的 AAD 认证。
  • 采样控制:引入 ApplicationInsightsSampler 降低数据量,仅采样 10% 的请求以减轻负载。
  • 可靠性保证:配置 storage_directory 开启离线存储,确保在网络波动时数据不丢失。

下载和安装

下载 azure-monitor-opentelemetry-exporter-py 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐