如何使用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
相关产品推荐
相关产品推荐

