Azure Monitor 自定义日志采集
帮助 Python 编码代理通过 Logs Ingestion API 发送自定义日志。
证据显示优先使用 DefaultAzureCredential、生产环境可限制凭据链,并避免连接字符串及 API 密钥,降低凭据暴露风险;但未说明敏感日志字段处理、上传前用户确认、最小 RBAC 权限、外部数据流和失败后的回滚,且提供了静默忽略错误的示例,因此扣分。
主路径覆盖同步、异步、部分失败和批处理,且有上下文管理器建议;但示例之间不完全一致:前文称本地可直接使用 DefaultAzureCredential,同时使用 require_envvar=True,异步主示例未关闭异步凭据,且未给出参数校验、重试边界或可诊断的异常处理,因此静态评估不超过10并扣分。
名称、描述、触发词、输入环境变量、同步/异步及主流场景较清楚,也包含主权云示例;但未明确非适用范围、所需 Azure 权限、网络限制、schema 兼容边界或中文使用说明。核心功能依赖 Azure 服务,网络可达性取决于用户环境,未提供大陆网络适配证据。
具备 YAML 元数据、MIT 许可证、版本号、安装说明、分层参考文件和概念表,结构较易阅读;但缺少变更日志、维护责任人和明确更新路径,参考文件主要是索引/重复内容,且文档中的生命周期示例存在不一致,因此扣分。
能够直接指导安装客户端、上传日志、读取 JSON、处理部分失败以及使用异步和主权云模式,核心任务基本覆盖;但缺少资源创建/权限配置、DCR schema 验证、敏感数据过滤、生产重试与可观测性验证,代码仍需用户补充配置和审查,按静态校准不超过7。
技能文件包含具体代码和参数,但没有针对该技能的提交测试套件、真实 CI 覆盖或第三方执行结果;仓库级测试/工作流主要验证通用 harness,不能证明此技能关键路径正确,因此仅给有限可审计证据。
- 上传操作会将日志发送到 Azure Monitor;执行前应确认日志不含凭据、个人信息或其他不应外传的数据,并验证 DCR schema 与 RBAC 权限。
- 不要直接使用“静默忽略错误”示例;应记录失败、定义重试上限,并确认重复上传是否可接受。
- 检查 DefaultAzureCredential(require_envvar=True) 与本地开发说明是否匹配,并在异步代码中显式关闭 DefaultAzureCredential。
它能做什么 & 适用场景
这是一个面向 Azure Monitor Ingestion SDK for Python 的 Agent Skill,用于将自定义日志发送到 Log Analytics 工作区。它覆盖同步与异步客户端、DefaultAzureCredential 身份验证、数据收集端点(DCE)、数据收集规则(DCR)和流名称配置。Skill 还说明了部分失败处理、重试、批量上传、gzip 压缩、并行上传及 Azure Government 主权云配置。采用前提是已有 Log Analytics 工作区、DCE、DCR 和自定义表。
指导编码代理安装 azure-monitor-ingestion 和 azure-identity,读取 DCE、DCR 规则 ID 与流名称等环境变量,生成 LogsIngestionClient 或异步客户端代码,并调用 upload 发送日志。它还提供从 JSON 文件读取日志、通过 on_error 回调收集失败日志并重试、忽略上传错误、使用 DefaultAzureCredential 或托管身份凭据,以及配置主权云端点和凭据范围的示例。
- 负责 Azure 后端的 Python 开发者,需要把应用生成的结构化自定义日志写入 Log Analytics。
- 已经配置 DCE、DCR 和自定义表的运维或平台工程师,需要编写日志上传脚本。
- 处理大量日志的开发团队,需要使用异步客户端和 SDK 自动批处理、压缩及并行上传。
- 需要可靠处理部分上传失败的团队,希望收集失败记录并执行重试。
- 面向 Azure Government 部署的团队,需要按主权云端点和凭据范围配置日志采集。
优缺点一览
- 覆盖同步和异步 Python 客户端,并明确资源清理方式。
- 提供 DefaultAzureCredential、托管身份和 Azure Government 配置指导。
- 包含部分失败回调、失败日志重试和忽略错误示例。
- 说明 SDK 会自动将日志拆分为不超过 1MB 的块、gzip 压缩并并行上传。
- 不能替代 DCE、DCR、Log Analytics 工作区或自定义表的创建与配置。
- 要求使用者预先准备 DCE、DCR、流名称和匹配的日志模式。
- Skill 专注于日志写入,没有覆盖 Log Analytics 查询或摄取状态查询的代码。
- 提供的材料没有给出该单个 Skill 的专属测试结果。
如何安装
先将技能集合安装到所选 Agent 配置目录:
npx skills add microsoft/skills
在安装向导中选择 azure-monitor-ingestion-py。运行 Python 示例前,再安装 SDK 依赖:
pip install azure-monitor-ingestion
pip install azure-identity
源码没有说明特定 Agent 的手工安装目标目录以外的额外步骤。
如何使用
可用触发词包括 “azure-monitor-ingestion”、“LogsIngestionClient”、“custom logs”、“DCR” 和 “Log Analytics”。例如:
“请使用 azure-monitor-ingestion 为 Python 服务编写向 Log Analytics 上传自定义日志的代码,采用 DefaultAzureCredential、上下文管理器和失败重试。”
使用前需设置 AZURE_DCE_ENDPOINT、AZURE_DCR_RULE_ID 和 AZURE_DCR_STREAM_NAME;若生产环境使用 DefaultAzureCredential,还需设置 AZURE_TOKEN_CREDENTIALS=prod 或指定凭据。日志字段必须符合 DCR 模式,并包含 TimeGenerated。