如何通过Azure CLI为订阅内所有VM创建CPU过高告警并配置邮件通知
当然可以!完全不用给每台虚拟机单独创建告警规则,Azure支持通过范围配置和维度筛选,实现订阅内所有VM的统一CPU过高监控。下面分两部分详细说明操作步骤:
一、创建订阅级统一CPU告警规则
你可以直接将告警规则的范围设置为整个订阅,再通过条件里的维度筛选,只对虚拟机的CPU指标生效。这样不仅能覆盖现有所有VM,后续新建的VM也会自动纳入监控(只要符合资源类型)。
使用Azure CLI的命令示例如下:
az monitor metrics alert create \ -n "全订阅VM高CPU告警" \ -g "你的资源组名称" \ # 告警规则本身需要存储在某个资源组中 --scopes "/subscriptions/你的订阅ID" \ --condition "avg Percentage CPU > 90 where ResourceId contains '/providers/Microsoft.Compute/virtualMachines'" \ --description "当订阅内任意VM的平均CPU使用率超过90%时触发告警"
参数说明:
--scopes:指定为订阅ID,代表规则作用于整个订阅范围condition里的where ResourceId contains ...:通过资源ID的特征筛选出所有虚拟机资源,确保只监控VM的CPU指标- 如果需要调整阈值(比如把90改成80)或者统计周期,可以修改条件里的数值和聚合方式(比如
avg换成max)
二、配置邮箱告警通知
要实现邮箱通知,需要先创建动作组(Action Group),然后将其关联到告警规则。动作组是Azure中管理通知渠道的核心组件,支持邮箱、短信、Webhook等多种通知方式。
步骤1:创建包含邮箱接收者的动作组
az monitor action-group create \ -n "VM告警通知组" \ -g "你的资源组名称" \ --email-receiver name="运维邮箱" email-address="your-alert-email@example.com"
执行完这个命令后,指定的邮箱会收到一封激活邮件,必须点击邮件里的链接完成激活,否则无法接收告警通知。
步骤2:将动作组关联到告警规则
你可以在创建告警规则时直接添加--action-group参数,或者对已有的告警规则进行更新:
# 方式1:创建告警时直接关联动作组 az monitor metrics alert create \ -n "全订阅VM高CPU告警" \ -g "你的资源组名称" \ --scopes "/subscriptions/你的订阅ID" \ --condition "avg Percentage CPU > 90 where ResourceId contains '/providers/Microsoft.Compute/virtualMachines'" \ --description "当订阅内任意VM的平均CPU使用率超过90%时触发告警" \ --action-group "VM告警通知组" # 方式2:更新已存在的告警规则,添加动作组 az monitor metrics alert update \ -n "全订阅VM高CPU告警" \ -g "你的资源组名称" \ --action-group "VM告警通知组"
额外注意事项:
- 确保你的Azure账号拥有
Monitor Contributor或Owner权限,才能创建告警规则和动作组 - 订阅级告警规则存储在你指定的资源组中,后续管理(修改、删除)需要到该资源组中操作
- 如果需要监控多个指标(比如内存使用率),可以在同一告警规则中添加多个
--condition参数,或者创建单独的规则
内容的提问来源于stack exchange,提问作者Yuval Podoksik
相关产品推荐
相关产品推荐

