Datadogの外形監視を行う(Terraformでもやってみた)


概要

Datadog Synthetics API Testsの設定方法をまとめました。Terraformでの構築についても記載しています。

API Tests

Datadog Synthetics API Testsには下記の通り記載されています。

Google翻訳

APIテストは、APIエンドポイントを監視し、失敗したり遅すぎたりした場合に警告するのに役立ちます。これらのチェックは、アプリケーションが要求に応答していること、および応答時間、HTTPステータスコード、ヘッダーまたは本文の内容など、ユーザーが定義した条件を満たしていることを確認します。

API Testには、HTTPSSLの2種類があります。
今回は、HTTPのAPIのテストを行います。

SSLタイプについては、下記の記事で手順が詳しく説明されていますので、掲載させていただきます。
Datadog Synthetics API Tests でSSL証明書期限を監視できるようになりました! #datadog | DevelopersIO

また、AWS ACMを利用している場合、ACM発行の証明書の自動更新条件は下記より確認できますので、参考にしてみてください。
ACM の Amazon が発行する証明書のマネージド型更新

手順

Synthetics > Get Started > New API Testを選択します。

今回は、下記の値を設定します。URLは必要に応じて変更してください。

項目
request type HTTP
URL GET https://example.com
Advanced Options -
Name Test on example.com
Select your tags -

Test URL をクリックします。

アラートの条件が自動で設定されています。
アサーションに失敗した場合にアラートが通知されます。

また、画面の右側にテストしたRequestとResponseのプレビューが表示されます。

最後に、Notify your teamにアラートのメッセージと通知先を指定します。
今回は、既にSlack integrationsの設定が完了しているので、通知先にはSlackのchannnelを設定しました。

Create Testをクリックして、テストの設定は完了です。

テストの確認

テストの状況は画面から確認することができます。

Properties

History

Test Results

正常時

エラー時

Slackへの通知

テストが失敗した場合、Slackへの通知は下記の通りです。

Terraformで構築

datadog_synthetics_testで構築します。

上記の手順で作成したAPI TestをTerraformで構築すると下記の通りとなります。

resource "datadog_synthetics_test" "api_test" {
  type = "api"

  request = {
    method = "GET"
    url    = "https://${var.api_test_url}"
  }

  assertions = [
    {
      type     = "statusCode"
      operator = "is"
      target   = "200"
    },
    {
      type     = "header"
      property = "content-type"
      operator = "is"
      target   = "application/json"
    },
    {
      type     = "responseTime"
      operator = "lessThan"
      target   = "2000"
    },
  ]

  locations = ["aws:ap-northeast-1"]

  options = {
    tick_every = 60
  }

  name    = "An API test on ${var.api_test_url}"
  message = "Test on ${var.api_test_url} @${var.slack_channel_name}"

  tags   = []
  status = "live"
}

なお、SSLタイプについてはTerraformではまだ対応されていないようです。(2019/6/16時点では)
https://github.com/terraform-providers/terraform-provider-datadog/issues/229

参考記事

下記を参考にさせていただきました。
Synthetics API Tests(外形監視)機能を使ってみた #datadog | DevelopersIO