前回の記事では、Terraform のバージョン管理ツールである tfenv を Ubuntu 22.04.5 LTS にインストールおよびアンインストールする方法について解説しました。今回は、Terraform を用いて Datadog モニターを作成する方法を解説します。
Datadog モニターを Terraform で作成する手順
開発環境
- OS: Ubuntu 22.04.5 LTS
- shell: zsh
- Terraform: v1.14.8
- Datadog Provider: v4.10.0
事前準備
- Datadog から API キーとアプリケーションキーの取得
- Terraform のインストール
Datadog から API キーとアプリケーションキーの取得
Datadog の API キーとアプリケーションキーは、Terraform で Datadog モニターを作成するために必要です。以下の手順で取得してください。
- Datadog にログインします。
- 左側のメニューから「アカウント名」>「API Kyes」を選択します。
- 「API Keys」セクションで「New API Key」をクリックし、API キーを作成します。
- 「Application Keys」セクションで「New Key」をクリックし、アプリケーションキーを作成します。
Terraform のインストール
Terraform をインストールしていない場合は、前回の記事で解説した「Terraform のバージョン管理ツール tfenv をインストールする方法 – Ubuntu 22.04.5 LTS での手順を解説」を参考にしてインストールしてください。
Terraform で Datadog モニターを作成する手順
Terraform で Datadog モニターを作成する手順は以下のとおりです。
- Terraform の設定ファイルを作成
- Terraform を初期化
- アプリケーションキーと API キーを環境変数に設定
- Terraform を適用して Datadog モニターを作成
Terraform の設定ファイルを作成
Terraform の設定ファイルは、HCL(HashiCorp Configuration Language)という独自の言語で記述されます。以下の手順で Terraform の main.tf(設定ファイル)を作成してください。
$ touch main.tf
$
main.tf に以下の内容を記述します。
terraform {
required_providers {
datadog = {
source = "datadog/datadog"
}
}
}
provider "datadog" {
api_key = var.datadog_api_key # Datadog API キー
app_key = var.datadog_app_key # Datadog アプリケーションキー
api_url = "https://ap1.datadoghq.com" # Datadog API のエンドポイント URL(日本)
}
ファイル内容ですが、Terraform ブロックでは、使用するプロバイダーを定義しています。ここでは、Datadog プロバイダーを指定しています。プロバイダーブロックでは、Datadog API キーとアプリケーションキーを変数として参照しています。
環境変数を使用してプロバイダーの認証情報を管理するために、variables.tf ファイルを作成して以下の内容を記述します。
$ touch variables.tf
$
variables.tf に以下の内容を記述します。
variable "datadog_api_key" {
type = string
}
variable "datadog_app_key" {
type = string
}
ファイル内容ですが、Terraform で使用する変数を定義しています。ここでは、Datadog API キーとアプリケーションキーの変数を定義しています。
Terraform を初期化
Terraform を使用してインフラ構成を管理するために、まずは Terraform を初期化します。以下のコマンドを実行してください。
$ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of datadog/datadog...
...
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
...
commands will detect it and remind you to do so if necessary.
$
コマンド実行後、.terraform ディレクトリと .terraform.lock.hcl、variables.tf ファイルが作成されていることを確認してください。
$ ls -a
. .. .terraform .terraform.lock.hcl main.tf variables.tf
$
アプリケーションキーと API キーを環境変数に設定
Terraform で Datadog モニターを作成するために、アプリケーションキーと API キーを環境変数に設定します。以下のコマンドを実行してください。Terraform では、TF_VAR_ プレフィックスを使用して環境変数を定義することで、Terraform の変数として使用することができます。
$ export TF_VAR_datadog_api_key="your_datadog_api_key"
$ export TF_VAR_datadog_app_key="your_datadog_app_key"
$
環境変数を使用してプロバイダーの認証情報を管理することでコードベースに機密情報を含めることなく、セキュリティを向上させることができます。
Terraform を適用して Datadog モニターを作成
Terraform で Datadog モニターを作成するために、main.tf に以下の内容を追加します。
...
provider "datadog" {
api_key = var.datadog_api_key # Datadog API キー
app_key = var.datadog_app_key # Datadog アプリケーションキー
api_url = "https://ap1.datadoghq.com" # Datadog API のエンドポイント URL(日本)
}
↓↓↓↓ ↓以下にモニターの HCL を追加します。↓↓↓↓↓
# Datadog Monitor を作成するリソースブロックです。
# ここでは、CPU 使用率が高い場合のアラートを設定しています。
resource "datadog_monitor" "cpu_high" {
name = "CPU Usage High"
type = "metric alert"
query = "avg(last_5m):avg:system.cpu.system{*} > 80"
message = <<-EOT
Docker CPU usage is over 80% for the last 5 minutes.
EOT
monitor_thresholds {
# アラートのしきい値を設定
critical = 80
warning = 70
}
notify_no_data = false # 通知がない場合はアラートを発生させない
renotify_interval = 60 # アラートが解消されない場合、60分ごとに再通知
evaluation_delay = 300 # データの遅延を考慮して、5分の評価遅延を設定
}
main.tf にモニターの HCL を追加したら、以下のコマンドを実行して Terraform を適用し、Datadog モニターを作成します。
$ terraform apply
・・・変更点が表示されます・・・
...
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes ← ここで yes と入力して変更を適用します。
datadog_monitor.cpu_high: Modifying... [id=12345678]
datadog_monitor.cpu_high: Modifications complete after 0s [id=12345678]
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
$
Terraform を適用した後、Datadog のダッシュボードでモニターが作成されていることを確認してください。これで、CPU 使用率が高い場合のアラートが設定されました。
まとめ
最後に、main.tf のすべての内容を以下に示します。
terraform {
required_providers {
datadog = {
source = "datadog/datadog"
}
}
}
provider "datadog" {
api_key = var.datadog_api_key # Datadog API キー
app_key = var.datadog_app_key # Datadog アプリケーションキー
api_url = "https://ap1.datadoghq.com" # Datadog API のエンドポイント URL(日本)
}
# Datadog Monitor を作成するリソースブロックです。
# ここでは、CPU 使用率が高い場合のアラートを設定しています。
resource "datadog_monitor" "cpu_high" {
name = "CPU Usage High"
type = "metric alert"
query = "avg(last_5m):avg:system.cpu.system{*} > 80"
message = <<-EOT
Docker CPU usage is over 80% for the last 5 minutes.
EOT
monitor_thresholds {
# アラートのしきい値を設定
critical = 80
warning = 70
}
notify_no_data = false # 通知がない場合はアラートを発生させない
renotify_interval = 60 # アラートが解消されない場合、60分ごとに再通知
evaluation_delay = 300 # データの遅延を考慮して、5分の評価遅延を設定
}
Terraform を使うことで、Datadog モニターの作成や管理がコード化され、インフラストラクチャの変更を簡単に追跡できます。Terraform の強力な機能を活用して、効率的にインフラストラクチャを管理しましょう。
