使用Terraform管理GCP的告警通知渠道PagerDuty

简要概述。

您可以在GCP中指定电子邮件、Slack、PagerDuty等作为警报通知渠道。
您可以在以下API中查看支持的通知渠道列表。
方法:projects.notificationChannelDescriptors.list

查看 API,到 2023 年 12 月 3 日为止,PagerDuty 可作为测试版的通知渠道使用。然而,Terraform 的通知渠道资源文档(google_monitoring_notification_channel)中没有提供 PagerDuty 的示例。
本文将介绍将 PagerDuty 纳入 Terraform 管理的步骤。

只需要一个选项

可以使用Terraform和Berglas命令。

    PagerDutyの秘密情報はSecret Managerに保存しBerglas経由でTerraformに渡します

步骤

スクリーンショット 2023-12-03 22.29.15.jpg
image.png

创建Terraform定义文件
将存储有机密信息的Secret指定为变量,并创建通知渠道。目录和文件名可以任意指定。
省略有关provider和backend配置方法的说明。

export TF_VAR_pagerduty_service_key=sm://[project-name]/pagerduty_service_key
variable "pagerduty_service_key" {
  description = "PagerDuty Service Key"
}
resource "google_monitoring_notification_channel" "pagerduty" {
  display_name = "PagerDuty" # 任意
  type         = "pagerduty"
  sensitive_labels {
    service_key = var.pagerduty_service_key
  }
}

4.创建通知目标频道
执行terraform apply命令,创建通知目标频道的资源。

berglas exec -- terraform apply

5. 将任意警报策略与通知渠道PagerDuty相关联
将创建的通知渠道PagerDuty设置为任意警报策略的notification_channels。

resource "google_monitoring_notification_channel" "pagerduty" {
  display_name = "PagerDuty" # 任意
  type         = "pagerduty"
  sensitive_labels {
    service_key = var.pagerduty_service_key
  }
}

resource "google_monitoring_alert_policy" "hoge" {
  display_name = "hoge"

  conditions {
    ...
  }
  notification_channels = [google_monitoring_notification_channel.pagerduty] # <- PagerDutyを通知先として指定
}

6. 创建警报策略
执行terraform apply命令并创建通知通道资源。

berglas exec -- terraform apply
广告
将在 10 秒后关闭
bannerAds