created: 2023-12-20T02:51:06.908Z

[GCP] UI でつくったログベースのメトリクスとアラートポリシーを terraform import する

経緯

GCP をつかっているプロジェクトだと Grafana とかを使うのが多かったようだが、通知が欲しいだけなら GCP 内製のアラートポリシーが必要十分な機能になってきてるので、最近だとこちらを使った方が IaC 的には管理しやすそうである。Grafana の JSON はちとデカい。

スコープ

この記事ではアラートポリシー自体のことは書かない。import するところのメモ。

UI の作業

IaC 側の作業

terraform 1.5 からコードに import と書けるようになっているのでそれを使う。

こんな定義をして({{}} の中身や形式はリソースによって違うようだ)

import {
  id = "{{project}} {{name}}"
  to = google_logging_metric.default
}

-generate-config-out というオプションをつけて plan 実行すると、ID にマッチするリソースを探して、定義を terraform のコードとして吐き出してくれる。取り込んだ結果は引数で渡したファイルに入る。

$ terraform plan -generate-config-out=/tmp/import-111111111111111.tf.out
# 出力をコピってコードに貼れば動く
$ cat /tmp/import-111111111111111.tf.out | pbcopy

アラートポリシー

アラートポリシー の import にはリソースの ID が必要だが、これは alertPolicies の場合は name 属性を使用するようだ。 UI には表示されていないので API を叩いて取得する。(追記:URL にも ID 文字列が入っていたのでそっちのほうが楽かも)

$ gcloud alpha monitoring policies list --format=json | jq '.[] | [.name, .displayName]'
projects/mypjt-123456/alertPolicies/111111111111111

こちらも同様に定義を書いて -generate-config-out をつけて plan をすれば UI で色々やった定義が落ちてくる(うれしい)

import {
  id = "${var.GCP_PROJECT_ID} projects/mypjt-123456/alertPolicies/111111111111111"
  to = google_monitoring_alert_policy.default
}

ドキュメントのリンク

エッセンシャル思考 最少の時間で成果を最大にする
[ad] エッセンシャル思考 最少の時間で成果を最大にする
グレッグ・マキューン, 高橋璃子 (Kindle版)