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

如何通过Terraform创建含自定义KQL查询的Azure Monitor日志警报

使用Terraform创建Azure虚拟机CPU使用率警报规则

环境说明

我在Resource-Group-Dev资源组中有2台已连接到Log Analytics工作区的Linux虚拟机,层级结构如下:

Scope-Dev
->Resource-Group-Dev
-->VM-Dev-1
-->VM-Dev-2

需求

需创建满足以下条件的警报规则:

  • 作用域:Resource-Group-Dev下的所有虚拟机
  • 触发条件:使用自定义KQL查询(查询语句见下文)
  • 维度:KQL查询结果中的Computer字段(用于操作组)

Terraform配置代码

# 配置Azure Provider
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# 获取目标资源组信息
data "azurerm_resource_group" "dev" {
  name = "Resource-Group-Dev"
}

# 获取Log Analytics工作区(替换为你的工作区名称)
data "azurerm_log_analytics_workspace" "dev" {
  name                = "your-log-analytics-workspace-name"
  resource_group_name = data.azurerm_resource_group.dev.name
}

# 创建计划查询警报规则
resource "azurerm_monitor_scheduled_query_rules_alert" "vm_cpu_alert" {
  name                = "VM-Dev-CPU-Usage-Alert"
  location            = data.azurerm_resource_group.dev.location
  resource_group_name = data.azurerm_resource_group.dev.name
  scopes              = [data.azurerm_resource_group.dev.id] # 作用域覆盖资源组内所有VM

  # 自定义KQL查询
  query = <<-QUERY
    Perf | where TimeGenerated > ago(60m) | where (ObjectName == "Processor") | summarize AggregatedValue = avg(CounterValue) by Computer , _ResourceId | where AggregatedValue < 100 | project Computer, AggregatedValue , _ResourceId
  QUERY
  data_source_id = data.azurerm_log_analytics_workspace.dev.id

  # 查询频率与时间窗口
  frequency = 60
  time_window = 60

  # 触发条件设置
  trigger {
    threshold_operator = "LessThan"
    threshold          = 100
    metric_trigger {
      threshold_operator = "LessThan"
      threshold          = 100
      metric_column      = "AggregatedValue"
    }
  }

  # 维度配置:按Computer字段拆分警报
  dimension {
    name     = "Computer"
    operator = "Include"
    values   = ["*"]
  }

  # 可选:关联操作组(替换为你的操作组ID)
  # action {
  #   action_group_id = "/subscriptions/your-sub-id/resourceGroups/Resource-Group-Dev/providers/microsoft.insights/actionGroups/your-action-group"
  # }
}

关键配置说明

  • 作用域:通过scopes参数指定目标资源组ID,实现覆盖该资源组下所有虚拟机的效果
  • KQL查询:直接嵌入需求中的自定义查询语句,筛选过去60分钟内CPU使用率低于100的虚拟机数据
  • 维度拆分:通过dimension块配置Computer字段,确保每个虚拟机的警报独立触发,便于后续关联操作组进行针对性通知

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:10:24