如何使用 terraform 设置资源健康警报条件

Posted

技术标签:

【中文标题】如何使用 terraform 设置资源健康警报条件【英文标题】:How to set resource health alert condition with terraform 【发布时间】:2021-03-02 10:12:34 【问题描述】:

我正在尝试使用 terraform 创建资源健康警报,非常简单非常 terraform

resource "azurerm_monitor_activity_log_alert" "resourcehealth" 
  name                = "$var.client_initial-MCS Optimise Resource Health"
  description         = "$var.client_initial-MCS Optimise Resource Health Alerts"
  resource_group_name = var.resource_group_name
  scopes              = [var.scopes]
  criteria 
    category = "ResourceHealth"
  

  action 
    action_group_id = var.action_group_id
  
  tags = var.tags

但是,我发现它缺乏进一步设置粒度警报条件的能力,例如我们只想在当前资源状态降级或不可用时发出警报,并且 reson 类型是平台启动的。 Terraform 似乎满足了所有条件。

【问题讨论】:

目前我们似乎无法做到这一点:github.com/terraform-providers/terraform-provider-azurerm/… 嗨,Jim,确实,这是为了服务健康,但对于资源健康也是如此。我又开了一个话题github.com/terraform-providers/terraform-provider-azurerm/… 根据情况,我建议你使用arm模板来实现你的需要。更多详情请参考docs.microsoft.com/en-us/azure/service-health/… 【参考方案1】:

单一资源范围

resource "azurerm_monitor_activity_log_alert" "resourcehealth" 
  name                = "$var.client_initial-MCS Optimise Resource Health"
  description         = "$var.client_initial-MCS Optimise Resource Health Alerts"
  resource_group_name = var.resource_group_name
  scopes              = [var.scope]
  criteria 
    resource_id    = var.scope
    operation_name = "Microsoft.Resourcehealth/healthevent/Activated/action"
    category       = "ResourceHealth"
  

  action 
    action_group_id = var.action_group_id
  
  tags = var.tags

对于多个资源,使用 for_each

resource "azurerm_monitor_activity_log_alert" "resourcehealth" 
  for_each = var.scopes

  name                = "$var.client_initial-MCS Optimise Resource Health"
  description         = "$var.client_initial-MCS Optimise Resource Health Alerts"
  resource_group_name = var.resource_group_name
  scopes              = [each.key]
  criteria 
    resource_id    = each.key
    operation_name = "Microsoft.Resourcehealth/healthevent/Activated/action"
    category       = "ResourceHealth"
  

  action 
    action_group_id = var.action_group_id
  
  tags = var.tags

【讨论】:

以上是关于如何使用 terraform 设置资源健康警报条件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Terraform 的 CloudWatch 指标警报

Terraform:Cloudwatch Canary Synthetics,如何创建指标警报

如何使用 Terraform 为 Elastic Beanstalk 环境定义条件(每个环境)设置?

有没有办法使用 terraform 配置 Azure 备份警报?

如何使用 Terraform 创建一个健康的 VPC-Native GKE 集群?

如何配置 Terraform 以根据 GCP 的日志错误触发警报?