如何通过Terraform为SQL数据库创建alert rule告警规则
Azure Terraform 指标告警配置修复方案
核心错误点
- 资源scope与指标命名空间不匹配:当前配置
scopes参数传入的是SQL服务器资源ID,而criteria块中指定的metric_namespace为数据库级别的Microsoft.Sql/servers/databases,两者层级不匹配导致指标无法正常拉取,配置无法生效。 - 指标名不符合官方规范:部分Azure区域对指标名字大小写敏感,官方规范中单数据库CPU使用率指标名为全小写的
cpu_percent,配置为CPU_percentage会出现指标找不到的错误。
修正后的可用配置
以下为监控单个SQL数据库CPU使用率的标准配置:
resource "azurerm_monitor_metric_alert" "example" { name = "example-metricalert" resource_group_name = azurerm_resource_group.example.name # 替换为数据库资源ID,和数据库级指标命名空间匹配 scopes = [azurerm_mssql_database.test.id] description = "数据库CPU使用率超过80%时触发告警" criteria { metric_namespace = "Microsoft.Sql/servers/databases" metric_name = "cpu_percent" aggregation = "Average" operator = "GreaterThan" threshold = 80 } # 若需要告警触发后推送通知/执行自动化动作,可绑定对应动作组,按需开启即可 # action { # action_group_id = azurerm_monitor_action_group.your_action_group.id # } }
额外排查建议
- 确认Azurerm Provider版本≥3.0,旧版本存在SQL指标告警适配缺陷,可执行
terraform provider upgrade azurerm升级到最新稳定版后再部署。 - 部署前执行
terraform plan提前校验配置语法与资源依赖合理性,可大幅减少部署报错概率。
内容的提问来源于stack exchange,提问作者Mattman5000
相关产品推荐
相关产品推荐

