API テスト
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

API テスト

概要

API テストを行うと、API エンドポイントを監視して失敗や遅延が発生している場合にアラートを受け取ることができます。このテストにより、アプリケーションがリクエストに応答していることや、応答時間、HTTP ステータスコード、ヘッダー、本文の内容など、定義条件をすべて満たしていることを検証できます。Datadog API の完全なリストについては、Datadog APIを参照してください。

コンフィグレーション

API テストのコンフィギュレーションは、作成する API テストのタイプにより異なります: HTTP test, SSL test または TCP test

リクエストを作成する

Datadog によって実行される HTTPSSL または TCP のリクエストを定義します。

Datadog によって実行されるリクエストを定義します。

      • Follow redirects: トグルボタンで、監視しているエンドポイントが最大 10 個のリダイレクトをフォローするよう設定します。
      • Allow insecure certificates: トグルボタンで、証明書の検証中にエラーが発生しても、HTTP の接続テストを続行するよう設定できます。
      • Body: リクエストの本文と本文のタイプ(text/plainapplication/jsontext/xmltext/html または None)。: リクエスト本文の最大サイズは 50 キロバイトに制限されています。
      • Cookies: 定義したクッキーをデフォルトのブラウザクッキーに追加します。複数のクッキーを設定するには、次の書式を使用します <クッキー名1>=<クッキーの値1>; <クッキー名2>=<クッキーの値2>
  1. Select your tags: タグはブラウザテストに紐付いています。<KEY>:<VALUE> フォーマットを使用して <VALUE>Synthetic モニタリングページ上の任意の <KEY> でフィルターを適用します。

  2. Locations: Datadog 管理下のロケーションからテストを実行します。世界中どこからでも使用できる AWS ロケーションが多数用意されています。完全なリストは Datadog API から入手できます。また、プライベートロケーションをセットアップして、公共インターネットからアクセスできない非公開のエンドポイントで Synthetic API テストを実行することもできます。

  1. Select your tags: タグは SSL テストに紐付いています。<KEY>:<VALUE> フォーマットを使用して <VALUE>Synthetic モニタリングページ上の任意の <KEY> でフィルターを適用します。
  2. Locations: Datadog 管理下のロケーションからテストを実行します。世界中どこからでも使用できる AWS ロケーションが多数用意されています。完全なリストは Datadog API から入手できます。また、プライベートロケーションをセットアップして、公共インターネットからアクセスできない非公開のエンドポイントで Synthetic API テストを実行することもできます。
  1. Choose request type: TCP
  2. Host および TCP Port を指定します。
  3. Select your tags: タグは TCP テストに紐付いています。<KEY>:<VALUE> フォーマットを使用して <VALUE>Synthetic モニタリングページ上の任意の <KEY> でフィルターを適用します。
  4. Locations: Datadog 管理下のロケーションからテストを実行します。世界中どこからでも使用できる AWS ロケーションが多数用意されています。完全なリストは Datadog API から入手できます。また、プライベートロケーションをセットアップして、公共インターネットからアクセスできない非公開のエンドポイントで Synthetic API テストを実行することもできます。
  5. Test URL をクリックし、リクエストのコンフィギュレーションをテストします。応答データのプレビューが右側に表示されます。

アサーション

API テストの実行中は、少なくとも 1 つのアサーションを定義して Datadog で監視する必要があります。アサーションは、パラメーター、任意のプロパティ、コンパレーター、ターゲット値により定義します。

種類演算子値の型
ステータスコードisis not整数
応答時間lessThan整数 (ms)
ヘッダーcontains, does not contain, is, is not
matches, does not match
文字列
Regex
本文contains, does not contain, is, is not
matches, does not match
文字列
Regex

: HTTP テストでは、brdeflategzipidentitycontent-encoding ヘッダーを使用して本文の圧縮を解除することが可能です。

: Test URL をクリックすると、基本のアサーションが自動的に入力されます。

  • Response time lessThan 2000 ms
  • Header content-type is “戻り値”
  • Status code is “戻り値”
タイプ演算子値の型
証明書expires in more than整数 (日数)
プロパティcontains, does not contain, is, is not
matches, does not match
文字列
Regex

テスト URL をクリックすると、基本アサーションが自動的に入力されます。

  • certificate expires in more than 10 days
タイプ演算子値の型
response timeis less than整数 (ms)

テスト URL をクリックすると、基本アサーションが自動的に入力されます。

  • response time is less than 2000 ms.

Add new assertion をクリック、またはレスポンスプレビューを直接クリックすることで、各 API テストにつき最大 10 個のアサーションを作成できます。

アラートの条件

アラート条件で、テストが失敗しアラートをトリガーする状況を設定します。

アラート設定規則

アラートの条件を An alert is triggered if any assertion fails for X minutes from any n of N locations に設定すると、アラートは次の状態でトリガーされます。

  • 直近 X 分間に、最低 1 個のロケーションで失敗 (最低 1 つのアサーションが失敗)、かつ
  • 直近 X 分間に、ある時点で最低 n 個のロケーションで失敗。

Fast Retry

ロケーションを*失敗*と判断するまでに必要な再試行回数を決定できます。デフォルトでは、既定のロケーションから失敗結果が得られると、Synthetic テストの再試行は行われなくなります。

グローバル変数を使用する

Settings で定義したグローバル変数は、URL、高度なオプション、API テストのアサーションで使用できます。変数の一覧を表示するには、フィールドに {{ と入力します。

チームへの通知

  1. 通知を受け取るユーザーおよび/またはサービスを選択します。: @-notifications は、モニターと同様に、メッセージフィールドで使用できます。
  2. API テストのメッセージを入力します。このフィールドでは、標準のマークダウン形式のほか、以下の条件付き変数を使用できます。

    条件付き変数説明
    {{#is_alert}}モニターがアラートする場合に表示
    {{^is_alert}}モニターがアラートしない場合に表示
    {{#is_recovery}}モニターがいずれかの ALERT から回復する場合に表示
    {{^is_recovery}}モニターがいずれかの ALERT から回復しない場合に表示

    通知メッセージには、このセクションで定義されたメッセージや、失敗したアサーションとその理由に関する情報が記載されます。

  3. 再通知の頻度を指定します。テストの失敗を再通知しない場合は、Never renotify if the monitor has not been resolved オプションを使用してください。

  4. 保存をクリックします。

以下に通知の例を示します。

ネットワークに関する時間

Synthetic テストの詳細ページには、ネットワークに関する以下の時間が表示されます。

時間説明
DNS最後のリクエストの DNS 名が解決されるまでにかかった時間。
接続サーバーへの接続が確立されるまでにかかった時間。
SSLTLS ハンドシェイクにかかった時間。最後のリクエストが HTTPS 経由ではなかった場合、このメトリクスは表示されません。
TTFB (time to first byte)応答の最初のバイトを受信するまでにかかった時間。
ダウンロード応答のダウンロードにかかった時間。

応答時間は、これらのネットワーク時間の合計です。

テストの失敗

テストが失敗と見なされるのは、アサーションを満たさなかった場合、またはリクエストが他の理由で失敗した場合です。以下に、失敗の理由を示します。

エラー説明
CONNRESET接続がリモートサーバーによって突然閉じられました。Web サーバーにエラーが発生した、応答中にシステムが停止した、Web サーバーへの接続が失われた、などの原因が考えられます。
DNSチェック URL に対応する DNS エントリが見つかりませんでした。チェック URL の構成の誤り、DNS エントリの構成の誤りなどの原因が考えられます。
INVALID_REQUESTチェックのコンフィギュレーションが無効です (URL に入力ミスがあるなど)。
SSLSSL 接続を実行できませんでした。詳細については、個別のエラーページを参照してください
TIMEOUTリクエストを一定時間内に完了できなかったことを示します。TIMEOUT には 2 種類あります。TIMEOUT: The request couldn’t be completed in a reasonable time. は、タイムアウトが TCP ソケットの接続レベルで発生したことを示します。TIMEOUT: Retrieving the response couldn’t be completed in a reasonable time. は、タイムアウトがリクエストの実行全体 (TCP ソケット接続、データ転送、アサーション) で発生したことを示します。

テストが失敗した場合、アップタイムはエンドポイントが down であるとみなします。次のテストランまで再テストされません。

その他の参考資料