用途:为 Python 版 Microsoft 365 Agents SDK 应用添加、配置、验证和排查 OpenTelemetry 可观测性,覆盖 traces、metrics、logs 以及本地 Aspire Dashboard,同时保留项目原有的依赖管理器、Web 主机、日志设计和启动生命周期。
主要能力与规则:必须在导入多数 microsoft_agents SDK 模块前配置全局 OpenTelemetry provider,因为 SDK 在导入时解析 tracer 和 meter;microsoft_agents.activity 不含遥测,可安全提前导入。已初始化的全局 provider 不可替换,只能扩展。需在 provider 配置后、应用处理流量前对 aiohttp、requests 等库做插桩。使用稳定的 service.name,导出器读取标准 OTEL 环境变量,禁止硬编码凭据。默认不得把提示词、响应、消息文本、token、授权头、cookie、密钥、附件内容、用户名、用户 ID、会话 ID、activity ID 或任意 HTTP 头写入自定义遥测。自定义指标属性需低基数,如路由类型、activity 类型、通道 ID、操作、状态、错误类型。正常应用用批处理器,简单处理器仅用于调试或测试。不得默认开启 always-on 采样。优雅关闭时需 flush 并处理失败。避免根 logger 上重复 LoggingHandler。Aspire Dashboard 匿名模式仅限本地开发并绑定回环地址。
使用方式:先检查应用依赖、启动模块、导入顺序、现有 provider、导出器、日志处理器与关闭钩子。选择零代码插桩(通过 opentelemetry-instrument 启动)或编程式配置,二者不并存。按项目依赖管理器安装所需包,例如零代码方式安装 opentelemetry-distro、opentelemetry-exporter-otlp、opentelemetry-instrumentation-aiohttp-server 等;编程式方式安装 opentelemetry-api、opentelemetry-sdk 等。零代码方式通过环境变量配置,如 OTEL_SERVICE_NAME、OTEL_EXPORTER_OTLP_ENDPOINT、OTEL_EXPORTER_OTLP_PROTOCOL、OTEL_TRACES_EXPORTER、OTEL_METRICS_EXPORTER、OTEL_LOGS_EXPORTER、OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED,并用 python -m dotenv run -- opentelemetry-instrument python -m src.main 启动。编程式方式创建 instrumentation.py,配置 TracerProvider、MeterProvider、LoggerProvider 及 OTLP 导出器,并在启动模块中先加载环境变量、配置 provider,再导入 agent 模块。
适用场景:需要为 Agents SDK Python 应用接入 OTLP 收集器或本地 Aspire Dashboard,并希望遵循安全、隐私、采样与关闭规范的开发与运维场景。
限制:资料未提供具体收费、价格、平台支持范围或效果数据;部分内容在原文中被截断,未完整给出。