如何为订阅内所有VM的Data Collection Rule删除事件创建警报?
订阅级VM Data Collection Rule(DCR)删除/移除警报解决方案
一、完整警报规则设置步骤
- 确保AzureActivity日志订阅级收集
确认你的Log Analytics工作区已配置订阅级的AzureActivity日志采集,否则无法捕获跨所有VM的操作事件。 - 创建日志查询警报规则
进入Azure Monitor > 警报 > 创建 > 警报规则,范围选择目标订阅;信号类型选“日志”,信号名称选“自定义日志搜索”;粘贴修正后的Kusto查询(见下文);配置触发条件:设置“基于”为“结果数”,阈值设为“大于0”,评估频率和窗口根据需求调整(比如5分钟评估一次,查看过去5分钟的日志)。 - 配置通知
添加已创建的通知组(包含邮件、短信、Teams等通知方式),确保触发时能及时推送告警。 - 设置警报详细信息
填写警报名称、描述,分配到合适的资源组,完成创建。
二、修正后的Kusto查询
你的原查询仅捕获DCR资源本身的删除事件,但未覆盖VM与DCR的关联被移除的场景(这也是VM上DCR失效的常见情况)。以下是覆盖两种核心场景的查询:
AzureActivity // 捕获两类关键事件:DCR本身删除、VM与DCR的关联移除 | where OperationNameValue in ( "Microsoft.Insights/dataCollectionRules/delete", "Microsoft.Compute/virtualMachines/providers/dataCollectionRuleAssociations/delete", "Microsoft.Insights/dataCollectionRuleAssociations/delete" ) | where ActivityStatusValue == "Succeeded" // 可选过滤:仅保留与VM相关的事件,排除无关DCR操作 | where ResourceType contains "virtualMachines" or Properties contains "virtualMachines" | project 事件时间 = EventTimestamp, 操作类型 = OperationName, 资源名称 = Resource, 受影响VM = tostring(parse_json(Properties).resourceId), 操作人 = Caller
说明:
- 新增两种关联删除的操作名,完整覆盖VM上DCR失效的场景
- 可选过滤条件确保只保留和VM相关的事件,减少误告警
- 投影字段整理了关键信息,便于告警通知中快速定位问题
三、跨订阅监控最佳实践
- 使用管理组范围:如果需要监控多个订阅,将警报范围设置为管理组,而非单个订阅,实现批量覆盖。
- 按需选择警报类型:对于DCR本身的删除事件,也可以直接创建活动日志警报(信号类型选“活动日志”,事件类别选“管理”,操作名称选“删除数据收集规则”),这种方式无需依赖Log Analytics,延迟更低。
- 确保日志采集完整性:定期验证Log Analytics工作区的AzureActivity日志采集设置,确认包含所有需要监控的订阅/资源组。
- 结合权限与策略管控:限制能修改DCR或其关联的用户权限,同时用Azure Policy创建强制规则,防止未经授权的删除操作。
- 定期测试告警有效性:手动触发一次DCR关联删除操作,验证警报是否正常触发并推送通知。
- 整合集中监控体系:如果有企业级SIEM系统(如Azure Sentinel),将这些告警同步到SIEM,实现统一监控和响应。
内容的提问来源于stack exchange,提问作者cloud engineer
相关产品推荐
相关产品推荐

