【问题标题】:How to create alert rule in terraform for SQL DB如何在 terraform 中为 SQL DB 创建警报规则
【发布时间】:2021-10-31 07:00:49
【问题描述】:

我似乎找不到任何示例,并且根据我在做什么,我遇到了不同的错误。

我正在努力让它发挥作用,但它没有发生......有什么想法吗?

resource "azurerm_monitor_metric_alert" "example" {
  name                = "example-metricalert"
  resource_group_name = azurerm_resource_group.example.name
  scopes              = [azurerm_mssql_database.test.server_id]
  description         = "Action will be triggered when cpu is greater than 80%."

  criteria {
    metric_namespace = "Microsoft.Sql/servers/databases"
    metric_name      = "CPU_percentage"
    aggregation      = "Average"
    operator         = "GreaterThan"
    threshold        = 80
}

}

【问题讨论】:

  • 可能还值得添加创建资源组和 sql server 的代码
  • “不同的错误取决于我在做什么” - 究竟是什么错误?
  • 创建或更新指标警报“example-metricalert”时出错(资源组“tempsql-rg”):insights.MetricAlertsClient#CreateOrUpdate:响应请求失败:StatusCode=400 -- 原始错误:autorest/天蓝色:服务返回错误。 Status=400 Code="ResourceNotFound" Message="{\"code\":\"BadRequest\",\"message\":\"检测无效值:Microsoft.Sql/servers/databases 查询参数:'metricnamespace' ,值必须是:Microsoft.Sql/servers 如果提供了查询参数,也可以跳过这个可选的查询参数。\
  • 不确定如何解决此错误。我更改了 metric_name = "cpu_percent" 因为我找到了一个指标名称列表...如果我更改 metric_namespace ="Microsoft.Sql/servers" 那么我得到一组全新的错误.. 它也没有我想要使用的指标 cpu 百分比

标签: azure monitor terraform-provider-azure azure-alerts


【解决方案1】:

您可以使用以下代码为 SQL DB 创建指标警报。我已经针对现有的 SQL DB 对其进行了测试,因此使用了数据块。

Main.tf

   provider "azurerm" {
  features {}
}


data "azurerm_mssql_server" "example" {
  name                = "ztestansumanserver"
  resource_group_name = "yourresourcegroup"
}

data "azurerm_mssql_database" "dbtomonitor" {
  name      = "testansumandb"
  server_id = data.azurerm_mssql_server.example.id
}

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

  email_receiver {
    name                    = "sendtoadmin"
    email_address           = "youremailid"
    use_common_alert_schema = true
  }
}

resource "azurerm_monitor_metric_alert" "example" {
  name                = "example-metricalert"
  resource_group_name = data.azurerm_mssql_server.example.resource_group_name
  scopes              = [data.azurerm_mssql_database.dbtomonitor.id]
  description         = "Action will be triggered when cpu percent is greater than 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.example.id
  }
}

输出:

注意:根据上面的脚本警报创建成功,它也会在cpu_percent > 80时触发一封邮件给你。

参考:

Azure Monitor supported metrics by resource type - Azure Monitor | Microsoft Docs

【讨论】:

  • 谢谢!不同的是 .id 而我使用的是 .server_id
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2018-03-03
  • 2021-10-08
  • 1970-01-01
  • 2018-11-06
  • 2020-08-20
相关资源
最近更新 更多