如何使用 Terraform 为 Azure 资源创建警报

How to create alerts for Azure resources using Terraform

我已经为应用服务、应用服务计划、存储帐户和逻辑应用等 Azure 资源准备了 Terraform 脚本……

我已经成功部署了上述 Terraform 脚本。但我想使用 Terraform 为上述资源配置警报。

有没有任何方法可以在没有部署 ARM 模板的情况下使用 Terraform 创建警报?

当然有。这是 Application Insights 的自定义日志搜索示例。但是您可以轻松地针对 Azure Monitor

等其他来源修改它
resource "azurerm_application_insights" "example" {
  name                = "${var.prefix}-appinsights"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  application_type    = "web"
  retention_in_days   = 30
}

resource "azurerm_monitor_action_group" "example" {
  name                = "CriticalAlertsAction"
  resource_group_name = azurerm_resource_group.example.name
  short_name          = "p0action"

  email_receiver {
    name                    = "sendtoadmin"
    email_address           = "admin@example.com"
    use_common_alert_schema = true
  }
}

resource "azurerm_monitor_scheduled_query_rules_alert" "example-alert1" {
  name                = "${var.prefix}-alertrule1"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name

  action {
    action_group = [
      azurerm_monitor_action_group.example.id
    ]
  }
  data_source_id = azurerm_application_insights.example.id
  description    = "Exception threshold reached"
  enabled        = true
  # Count all requests with server error result code grouped into 5-minute bins
  query       = <<-QUERY
  requests
    | where cloud_RoleName == "frontend" and name !contains "Health" and resultCode startswith "5" 
  QUERY
  severity    = 1
  frequency   = 5
  time_window = 5
  trigger {
    operator  = "GreaterThan"
    threshold = 10
  }
}