You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Terraform创建Azure Alerts?求多虚拟机监控告警实现示例

Azure Terraform 虚拟机告警最简实现示例

以下示例直接适配资源组Rg1下vm01、vm02、vm03的CPU使用率、内存指标告警需求,可直接修改参数后使用,也可以基于结构快速扩展


前置说明

  • 需提前为目标虚拟机安装Azure Monitor代理,否则内存指标无法正常采集
  • 示例默认配置告警阈值:CPU使用率≥80%持续5分钟触发告警、内存使用率≥85%持续5分钟触发告警,可自行调整阈值参数
  • 示例使用批量循环逻辑,新增监控虚拟机、新增监控指标都可以直接扩展对应配置块

完整可运行Terraform代码

# 已配置azurerm provider的话可跳过本段
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
}
provider "azurerm" {
  features {}
}

# 定义要监控的虚拟机列表,新增VM直接添加元素即可
locals {
  target_vm_names = ["vm01", "vm02", "vm03"]
  target_rg_name  = "Rg1"
}

# 批量获取目标虚拟机资源ID
data "azurerm_virtual_machine" "target_vms" {
  for_each             = toset(local.target_vm_names)
  name                 = each.value
  resource_group_name  = local.target_rg_name
}

# 1. 批量创建CPU使用率告警规则
resource "azurerm_monitor_metric_alert" "cpu_high_alert" {
  for_each             = data.azurerm_virtual_machine.target_vms
  name                 = "${each.value.name}-cpu-high-alert"
  resource_group_name  = local.target_rg_name
  scopes               = [each.value.id]
  evaluation_frequency = "PT5M"
  window_size          = "PT5M"

  criteria {
    metric_namespace = "Microsoft.Compute/virtualMachines"
    metric_name      = "Percentage CPU"
    aggregation      = "Average"
    operator         = "GreaterThanOrEqual"
    threshold        = 80
  }

  # 如需配置告警通知动作组,在此处添加 action 块关联已有的动作组ID即可
}

# 2. 批量创建内存使用率告警规则
resource "azurerm_monitor_metric_alert" "memory_high_alert" {
  for_each             = data.azurerm_virtual_machine.target_vms
  name                 = "${each.value.name}-memory-high-alert"
  resource_group_name  = local.target_rg_name
  scopes               = [each.value.id]
  evaluation_frequency = "PT5M"
  window_size          = "PT5M"

  criteria {
    metric_namespace = "Microsoft.Compute/virtualMachines"
    metric_name      = "Memory Usage Percentage"
    aggregation      = "Average"
    operator         = "GreaterThanOrEqual"
    threshold        = 85
  }
}

扩展方式

  • 新增监控虚拟机:直接向local.target_vm_names列表中添加虚拟机名称即可
  • 新增其他指标告警:复制azurerm_monitor_metric_alert资源块,修改metric_name、阈值、告警名称即可
  • 新增告警通知:在告警规则中添加action块,关联对应通知动作组的资源ID即可

内容的提问来源于stack exchange,提问作者itye1970

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 11:24:03