3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 12

GCPのアラート通知チャネルPagerDutyをTerraform管理にする

Last updated at Posted at 2023-12-11

概要

GCPではアラートの通知チャネルとしてメールやSlack、PagerDutyなどを指定できます。
サポートされている通知チャネル一覧は以下のAPIにて確認できます。
Method: projects.notificationChannelDescriptors.list

APIを確認すると、2023/12/3時点でPagerDutyはベータ版ではあるものの通知チャネルとして利用できます。しかし、Terraformの通知チャネルリソースのドキュメント(google_monitoring_notification_channel)にはPagerDutyのサンプルが載っていません。
この記事ではPagerDutyをTerraform管理にする手順を紹介します。

前提

TerraformBerglasコマンドが利用できる。

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

手順

1. PagerDutyのサービスを作成する
作成時にIntegrationsとしてEvents API V2を選択。サービス作成後にIntegration Key控えておきます。
スクリーンショット 2023-12-03 22.29.15.jpg

2. Secret ManagerにPagerDutyの秘密情報を保存
Secret Managerでシークレットを作成し、1.で控えたKeyをシークレットの値として保存します。
image.png

3. Terraform定義を作成
秘密情報が保存されているSecretを変数として指定し、通知先チャネルを作成します。ディレクトリやファイル名は任意のもので大丈夫です。
※providerやbackendの設定方法についての説明は省略します。

terraform/.env.berglas
export TF_VAR_pagerduty_service_key=sm://[project-name]/pagerduty_service_key
terraform/gcp/variable.tf
variable "pagerduty_service_key" {
  description = "PagerDuty Service Key"
}
terraform/gcp/alert.tf
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に設定します。

terraform/gcp/alert.tf
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
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?