如何监控Azure新资源创建及diagnostic settings变更
Azure资源创建通知与配置变更检测方案评估
首先对你现有思路的正确性做直接判定:
- 你对Event Grid系统主题(system topic)的判断是准确的:这类事件属于资源创建完成后的后置运维事件,默认不携带精确的资源创建发起时间戳,仅返回事件本身的触发时间,无法满足你的字段要求。
- 监控Activity Log的思路是当前适配需求的最优主方案,无需额外改造即可拿到你需要的资源创建时间戳、资源ID字段。
- 强制添加创建时间标签的Policy方案属于兜底补充方案,适合持久化留存资源创建时间的场景,无法作为实时通知的主触发源。
新资源创建通知(带时间戳、资源ID)落地路径
- 轻量实时方案:直接基于Activity Log配置活动日志告警规则
筛选规则设置为:操作类型选择Create/Update类控制面操作,操作状态设为成功,可通过操作名正则过滤排除带update的更新操作,仅保留资源创建事件。告警触发的payload原生携带两个核心字段:eventTimestamp(UTC格式的资源创建完成精确时间戳)、resourceId(目标资源的完整ARM资源ID)。告警绑定的动作组可直接配置邮件、Webhook、即时通讯工具推送,端到端延迟通常在1分钟以内,无需额外接入其他服务。 - 长周期留存/复杂查询方案:将Activity Log导出到Log Analytics工作区
所有活动日志事件会存入AzureActivity表,可通过KQL查询过滤出资源创建事件,示例查询逻辑:
基于该查询配置日志告警即可触发通知,同时可留存所有历史创建记录供后续审计。AzureActivity | where OperationNameValue endswith "write" and ActivityStatusValue == "Success" | summarize first_event = min(TimeGenerated) by ResourceId | where first_event >= ago(5m) // 匹配5分钟内新创建的资源 | project CreationTimestamp=first_event, ResourceId - 标签Policy补充方案:使用
modify效果的Azure Policy,在资源创建时自动注入createdOn标签,值取utcNow()函数返回值,无需用户手动填写,通过Terraform部署的资源也会被自动补全标签,适合后续资源生命周期盘点使用。注意该标签记录的时间是Policy评估写入的时间,和实际资源创建时间有秒级误差,仅适合作为属性留存,不适合作为实时通知的触发源。
诊断设置、指标配置变更检测方案
这类控制面变更事件同样会被Activity Log全量记录,无需额外部署采集服务:
- 实时通知场景:在Activity Log告警中增加筛选规则,匹配操作名为
microsoft.insights/diagnosticSettings/write(诊断设置变更)、microsoft.insights/metricAlerts/write(指标告警规则变更)、microsoft.insights/autoscalesettings/write(自动缩放指标配置变更)的操作,操作状态覆盖成功、失败两类,即可在配置变更发生时收到通知,事件payload会携带变更前后的配置内容、操作人、操作时间、目标资源ID全量信息。 - 配置漂移审计场景:搭配Azure Policy做定期合规扫描,定义审计策略校验所有资源的诊断设置目标是否合规、是否开启了要求的指标类别,不合规资源会统一展示在合规面板,可配置定期合规报告推送。
- 注意:不建议使用Event Grid系统主题做这类子资源的变更检测,当前它对diagnostic settings这类扩展资源的事件覆盖不全,漏报率较高。
内容的提问来源于stack exchange,提问作者Harel Yacovian
相关产品推荐
相关产品推荐

