手動作成したDatadogのアラートをTerraformで構成管理する

概要

Infrastructureは構成管理することで、コードのプラクティスを取り込む方法が進んでいる(IaC)。モニタリングツールも同様の考えがあるらしい。

FYI Monitoring as Code: What It Is and Why You Need It – The New Stack

個人としてはプルリクエストで「なぜこの変更を行うのか」が明確になるやり方を好んでいるため、Monitoring as Codeを意識し、アラートを構成管理してみる。

インポートして取り込み

Datadog Providerに例が記載してあるので、それから取り込むもよし。
今回はUI上で作成したものを取り込んでみる。

空の設定を用意

取り込むためには取り込み先が必要で、空の設定を用意する。

resource "datadog_monitor" "hoge" {
}

インポート

記載した環境変数をセット。 セットしたら対象URLの値をコピーし、ターミナルでコマンドを実行する。

terraform import datadog_monitor.hoge URL末尾の数字

ステートからインポートした情報を確認する

下記コマンドを実行することで、インポート内容を確認することができる。

terraform state show 対象
etc.) terraform state show datadog_monitor.hoge

空の設定の中身を書く

インポートすることによって状態管理の中には、UIで作成したアラート内容が取り込まれる。 しかし、これだと実態のファイルは空のままで、apply を実行すると画面の設定が飛んでしまう。

そこで状態管理を元に、コードの取り込みを行う。 取得したファイルはJSON形式で書かれているので、その中身をHCLに書き写していった。

キニナル

下記に2つはどちらかしてか設定できないというエラーが出る。手動で作成すると設定できている気がするので気になる。

new_group_delay
new_host_delay

実行

取り込みが終わったらapplyを実行する。 これで完全に取り込みが終わった。