Azure Monitor Python OpenTelemetry
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/azure-monitor-opentelemetry-py。
技能介绍
要解决什么问题
Python 服务要接入 Azure Application Insights,常见痛点是:既要接官方摄取端点,又要和 OpenTelemetry 生态对齐,还要覆盖 Flask、Django、FastAPI 以及 requests、httpx、数据库驱动等依赖链上的出站调用。手工拼 SDK、埋点顺序和导出器,很容易在进程退出时丢缓冲数据,或在生产环境里把鉴权方式写错。
技能如何工作
该技能围绕 Azure Monitor OpenTelemetry Python Distro:通过 configure_azure_monitor() 尽早完成初始化(应在导入被埋点库之前),用 APPLICATIONINSIGHTS_CONNECTION_STRING 指向目标资源;在支持场景下优先 DefaultAzureCredential 做 Microsoft Entra 摄取鉴权,本地开发可直接用凭据链,生产可通过 AZURE_TOKEN_CREDENTIALS 收窄为安全凭据。
自动埋点覆盖 Web 框架(Flask / Django / FastAPI)与 HTTP、PostgreSQL(psycopg2)、MySQL(pymysql)、MongoDB(pymongo)、Redis 等库的 Traces。文档还说明如何写自定义 Trace / Metrics / Logs、配置 采样率(sampling_ratio)、为 Application Map 设置云角色名称,以及按需禁用特定埋点或开启 Live Metrics。
配置面上,connection_string、credential、instrumentations、enable_live_metrics 等参数有明确默认值;参考文档中的 capabilities 与 non-hero 场景清单可用于核对生产检查项。
适用边界与注意点
- Provider 不是上下文管理器:进程退出前应显式
force_flush()/shutdown(),否则遥测可能未确定性导出。 - 同步与异步不要混用:同一调用路径内不要混用
azure.xxx与azure.xxx.aio。 - 高流量应启用采样;多服务应设置云角色名称;连接字符串等敏感配置宜用环境变量,生产工作负载优先 Entra 鉴权而非仅依赖连接字符串里的密钥。
使用场景
- 在 Azure 上跑的 Flask 服务需要自动记录出站 HTTP 与数据库调用链路,并写入 Application Insights
- Django 多实例部署时要在 Application Map 里区分各微服务的云角色名称与依赖关系
- FastAPI 异步 API 流量较大,需要按 sampling_ratio 采样 Trace 同时保留自定义 Metrics 与结构化日志
- 生产环境摄取遥测时要用 DefaultAzureCredential 走 Entra 鉴权,避免连接字符串密钥长期暴露在配置里
适合人员
- 维护 Azure 上 Python Web 服务、需要统一 Traces/Metrics/Logs 导出到 Application Insights 的后端工程师
- 负责 SRE 可观测性规范、要核对自动埋点覆盖与进程退出 flush 检查清单的平台运维
- 在现有 OpenTelemetry 技能栈中接入 Azure Monitor Distro、并配置采样与禁用部分 instrumentations 的集成开发
- 为多服务 Python monolith 或微服务划分云角色名称、并排查 Application Map 节点归属的应用架构师