背景
「SaaS サブスクリプションが AWS Marketplace から利用可能に」によって、Datadogの料金をAWS利用料で支払えるようになりました。
このアップデートによって、わたしは、クレジットカードを使ってSaaSを契約するための社内手続きが不要になりました。事前に許可取得済みのAWS利用料の中に収まる範囲であればSaaSを使いたい放題です。神アップデートです。
Datadogを本格的に使うとなると、GUIをポチポチするのが辛そうです。この課題を解決するために、Terrformを使ってDatadogのモニタを設定します。
実践
認証情報の取得
DatadogのAPIを叩くためにはAPI KeyとApp Keyが必要です。GUIで作ります。
コードを書く
DATADOG_MONITORをもとに、ロードアベレージが1になったらslackに通知するモニタを書きます。
なお、Slackに通知するためにはSlack Integrationを有効にする必要があります。これは事前にGUIでポチポチ設定しておきます。
# Configure the Datadog provider
provider "datadog" {
api_key = "xxxxxx"
app_key = "xxxxxx"
}
# Create a new Datadog monitor
resource "datadog_monitor" "loadAvarage" {
name = "loadAvarage"
type = "metric alert"
message = "loadAvarage is over 1. @slack-general"
query = "max(last_5m):max:system.load.1{*} by {host} > 1"
thresholds {
ok = 0
critical = 1
}
notify_no_data = true
no_data_timeframe = 2
notify_audit = true
}
Terrformする
plan & applyします。
PS C:\Users\xxxx\Documents\terraform\datadog> terraform plan
Refreshing Terraform state in-memory prior to plan...
+ datadog_monitor.loadAvarage
message: "loadAvarage is over 1. @slack-general"
name: "loadAvarage"
no_data_timeframe: "2"
notify_audit: "true"
notify_no_data: "true"
query: "max(last_5m):max:system.load.1{*} by {host} > 1"
thresholds.%: "2"
thresholds.critical: "1"
thresholds.ok: "0"
type: "metric alert"
Plan: 1 to add, 0 to change, 0 to destroy.
PS C:\Users\xxxx\Documents\terraform\datadog> terraform apply
datadog_monitor.loadAvarage: Creating...
message: "" => "loadAvarage is over 1. @slack-general"
name: "" => "loadAvarage"
no_data_timeframe: "" => "2"
notify_audit: "" => "true"
notify_no_data: "" => "true"
query: "" => "max(last_5m):max:system.load.1{*} by {host} > 1"
thresholds.%: "0" => "2"
thresholds.critical: "" => "1"
thresholds.ok: "" => "0"
type: "" => "metric alert"
datadog_monitor.loadAvarage: Creation complete
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
無事addedされました。GUI上にも表示されています。
感想
Terraformを使うことで、Datadogの監視設定をコードにできました。TerraformとDatadogを使うと、監視設定でもInfrastructure as codeのメリットを享受できますね。
なお、Terraformはダッシュボードもコードにできます(DATADOG_TIMEBOARD)。これもいつか試します。