HTTP テストを使用すると、アプリケーションの API エンドポイントに HTTP リクエストを送信して、リクエストに応答していること、および全体的な応答時間、ステータスコード、ヘッダーまたは本文のコンテンツなどの定義した条件を満たしていることを確認できます。
HTTP テストは、ネットワークの外部または内部のどちらからエンドポイントを監視するかによって、管理ロケーションおよびプライベートロケーションから実行できます。HTTP テストは、スケジュール、オンデマンド、または **CI/CD パイプライン**内で直接実行できます。
作成するテストのタイプ (HTTP
、SSL
、TCP
、または DNS
テスト) を選択した後、テストのリクエストを定義できます。
GET
、POST
、PATCH
、PUT
、HEAD
、DELETE
、OPTIONS
です。http
と https
の両方の URL がサポートされています。user-agent
ヘッダー) をオーバーライドすることもできます。<COOKIE_NAME1>=<COOKIE_VALUE1>; <COOKIE_NAME2>=<COOKIE_VALUE2>
の形式を使用して複数のクッキーを設定します。text/plain
、application/json
、text/xml
、text/html
、または None
) を選択します。http://<YOUR_USER>:<YOUR_PWD>@<YOUR_IP>:<YOUR_PORT>
) を指定します。env
タグとその他のタグを追加します。次に、これらのタグを使用して、Synthetic Monitoring ホームページで Synthetic テストをすばやくフィルタリングできます。Test URL をクリックして、リクエストのコンフィギュレーションをテストします。画面の右側に応答プレビューが表示されます。
HTTP テストは次の頻度で実行できます。
アサーションは、期待されるテスト結果が何であるかを定義します。Test URL
を押すと、response time
、status code
、header
、content-type
の基本的なアサーションが、取得された応答に基づいて追加されます。テストで監視するには、少なくとも 1 つのアサーションを定義する必要があります。
タイプ | 演算子 | 値の型 |
---|---|---|
本文 | contains 、does not contain 、is 、is not 、matches 、does not match 、jsonpath | String Regex String、Regex |
ヘッダー | contains 、does not contain 、is 、is not 、matches 、does not match | String _Regex |
response time | is less than | 整数 (ms) |
ステータスコード | is 、is not | 整数 |
注: HTTP テストでは、br
、deflate
、gzip
、identity
の content-encoding
ヘッダーを使用して本文の圧縮を解除することが可能です。
New Assertion をクリックするか、応答プレビューを直接クリックすることで、API テストごとに最大 10 個のアサーションを作成できます。
アラート条件で、テストが失敗しアラートをトリガーする状況を設定します。
アラートの条件を An alert is triggered if any assertion fails for X minutes from any n of N locations
に設定すると、次の 2 つの条件が当てはまる場合にのみアラートがトリガーされます。
テスト結果が失敗した場合、テストによって再試行をトリガーすることができます。デフォルトでは、再試行は最初に失敗したテスト結果の 300 ミリ秒後に実行されます。この間隔は API を介して構成できます。
ロケーションのアップタイムは、評価ごとに計算されます (評価前の最後のテスト結果がアップかダウンか)。合計アップタイムは、構成されたアラート条件に基づいて計算されます。送信される通知は、合計アップタイムに基づきます。
以前に定義されたアラート条件に基づいて、テストによって通知が送信されます。このセクションを使用して、チームに送信するメッセージの方法と内容を定義します。
モニターと同様、メッセージに @notification
を追加するか、ドロップダウンボックスでチームメンバーと接続されたインテグレーションを検索して、通知を受信するユーザーやサービスを選択します。
テストの通知メッセージを入力します。このフィールドでは、標準のマークダウン形式のほか、以下の条件付き変数を使用できます。
条件付き変数 | 説明 |
---|---|
{{#is_alert}} | モニターがアラートする場合に表示します。 |
{{^is_alert}} | テストが警告しない限り表示します。 |
{{#is_recovery}} | テストがアラートから回復したときに表示します。 |
{{^is_recovery}} | テストがアラートから回復しない限り表示します。 |
テストが失敗した場合に、テストで通知メッセージを再送信する頻度を指定します。テストの失敗を再通知しない場合は、Never renotify if the monitor has not been resolved
オプションを使用してください。
メール通知には、このセクションで定義されているメッセージと、失敗したアサーションの要約が含まれます。 通知の例:
Save をクリックしてテストを保存し、Datadog にテストの実行を開始させます。
以下の利用可能な組み込みの 1 つから値を定義してローカル変数を作成できます。
パターン | 説明 |
---|---|
{{ numeric(n) }} | n 桁の数字列を生成します。 |
{{ alphabetic(n) }} | n 文字のアルファベット文字列を生成します。 |
{{ alphanumeric(n) }} | n 文字の英数字文字列を生成します。 |
{{ date(n, format) }} | テストが開始された日付 + n 日の値を使用して、許容される形式のいずれかで日付を生成します。 |
{{ timestamp(n, unit) }} | テストが +/- n 選択単位で開始されたタイムスタンプの値を使用して、許容される単位のいずれかでタイムスタンプを生成します。 |
HTTP テストの URL、高度なオプション、アサーションで、Settings
で定義されたグローバル変数とローカルで定義された変数を使用できます。
変数のリストを表示するには、目的のフィールドに {{
と入力します。
テストが 1 つまたは複数のアサーションを満たさない場合、またはリクエストが時期尚早に失敗した場合、テストは FAILED
と見なされます。場合によっては、エンドポイントに対してアサーションをテストできずにテストが実際に失敗することがあります。これらの理由には次のものがあります。
エラー | 説明 |
---|---|
CONNRESET | 接続がリモートサーバーによって突然閉じられました。Web サーバーにエラーが発生した、応答中にシステムが停止した、Web サーバーへの接続が失われた、などの原因が考えられます。 |
DNS | テスト URL に対応する DNS エントリが見つかりませんでした。テスト URL の構成の誤り、DNS エントリの構成の誤りなどの原因が考えられます。 |
INVALID_REQUEST | テストのコンフィギュレーションが無効です (URL に入力ミスがあるなど)。 |
SSL | SSL 接続を実行できませんでした。詳細については、個別のエラーページを参照してください。 |
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 ソケット接続、データ転送、アサーション) で発生したことを示します。 |