如何在 terraform 中为 SQL DB 创建警报规则
Posted
技术标签:
【中文标题】如何在 terraform 中为 SQL DB 创建警报规则【英文标题】:How to create alert rule in terraform for 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 百分比 【参考方案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以上是关于如何在 terraform 中为 SQL DB 创建警报规则的主要内容,如果未能解决你的问题,请参考以下文章
如果 SQL :parameter 在 DB2 JDBC 中为“ALL”,如何匹配所有行?
Terraform 在 Azure SQL 数据库中启用 MIcrosoft Defender for SQL