datadogの設定をterraform formatで出力するgem dd2tfをリリースした
datadogの設定をterraform formatで出力するgem dd2tfを作った。
kurochan/datadog_monitor2terraformにインスパイアされて勢いで作った。 (尚動機としては、コード管理していない設定、例えばmonitorを管理者が(レビューの範囲外で)手動操作を行い想定外の挙動をしてしまった出来事があり、アラートは特にしっかりと管理したいモチベーションがあった。)
現在terraform側で扱えるdatadogのリソースとしてはdowntime, monitor, timeboard, userがあって、 このうち現在はmonitor, timeboard, userをサポートしている。
downtimeをそもそも使っていないのでサボってしまったが手間じゃないのではやいうちに追加しなくては。
datadogの設定がコードで記述できるという点はやはりメリットが大きいんだけど、
q = "avg:presto_staging.cluster_memory_manager_metrics.cluster_memory_usage_bytes{*}"
みたいなクエリを毎回書くのか、というと微妙なところで、グラフの様子を見ながらいじって決めるということが多く
今の自分の使い方としては
まず画面でポチポチいじって、dd2tf使ってコードをexportしコードをリポジトリ管理下に置いている。
terraform apply
するタイミングで注意することがあって、既存のリソースを terraform import
しておかないと、
重複してリソース登録されてしまう。
なので、実際に行う手順としては
- web consoleから各リソース設定
- terraform import
- この際、
dd2tf print <resource>
が便利で、 terraform importコマンドを出力してくれる
- この際、
dd2tf print monitor --dd_api_key=xxx --dd-app_key=xxx terraform import datadog_monitor.auto_clock_in_sync_with_ntp 29xxxxx terraform import datadog_monitor.presto_long_time_query_occured 29xxxxxx
- dd2tf import
dd2tf import monitor --dd_api_key=xxx --dd-app_key=xxx
のようになる。
datadogの使用頻度が増してきているので、且つコミュニケーションの齟齬なく運用できそうなので便利。
ある程度実装してから、 terraform import
して得た <resource>.tfstate
をparseする方針の方が筋が良いのでは、と思った気がしたけど忘れた。