使用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に渡します
步骤
创建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