- はじめに
- エージェント
- インテグレーション
- Watchdog
- イベント
- ダッシュボード
- モバイルアプリケーション
- インフラストラクチャー
- サーバーレス
- メトリクス
- ノートブック
- アラート設定
- APM & Continuous Profiler
- CI Visibility
- RUM & セッションリプレイ
- データベース モニタリング
- ログ管理
- セキュリティプラットフォーム
- Synthetic モニタリング
- ネットワークモニタリング
- 開発者
- API
- アカウントの管理
- データセキュリティ
- ヘルプ
Multistep API テストは、一度に複数の HTTP リクエストを連鎖させ、主要サービスの洗練されたジャーニーをいつでも、どこからでもプロアクティブに監視・確認できるようにするものです。サービスに対して単一のリクエストを実行したい場合は、API テストを活用してください。
以下が可能です。
サービスの 1 つが応答遅延を起こしたり、予期しない方法 (たとえば、予期しない応答本文、ステータスコードなど) で応答を開始した場合、テストはチームに警告する、CI パイプラインをブロックする、または障害のあるデプロイをロールバックすることができます。
Multistep API テストは、Datadog 管理ロケーションおよびプライベートロケーションから実行できるため、外部と内部の両方でシステムを完全にカバーできます。
env
などのタグを追加します。これらのタグを使用して、Synthetic Monitoring ホームページで Synthetic テストをすばやくフィルタリングできます。Multistep API テストのロケーションを選択します。Multistep API テストは、ネットワークの外部または内部のどちらからテストを実行するかの好みによって、管理ロケーションとプライベートロケーションの両方から実行できます。
HTTP リクエストのステップを作成するには、Create Your First Step をクリックします。
注: デフォルトでは、最大 10 個のステップを作成できます。Datadog サポートチームに連絡して上限を増やしてください。
ステップに名前を付けます。
HTTP Method を選択し、クエリする URL を指定します。使用可能なメソッドは、GET
、POST
、PATCH
、PUT
、HEAD
、DELETE
、OPTIONS
です。http
と https
の両方の URL がサポートされています。
Advanced Options を使用して HTTP リクエストを加工します (オプション)。
user-agent
ヘッダー) をオーバーライドすることもできます。<COOKIE_NAME1>=<COOKIE_VALUE1>; <COOKIE_NAME2>=<COOKIE_VALUE2>
の形式を使用して複数のクッキーを設定します。text/plain
、application/json
、text/xml
、text/html
、application/x-www-form-urlencoded
、または None
) を選択します。http://<YOUR_USER>:<YOUR_PWD>@<YOUR_IP>:<YOUR_PORT>
) を指定します。Test URL をクリックして、リクエストのコンフィギュレーションをテストします。応答プレビューが表示されます。
アサーションは、期待されるテスト結果が何であるかを定義します。Test URL をクリックすると、response time
、status code
、header
、content-type
の基本的なアサーションが、取得された応答に基づいて追加されます。Multistep API テストでは、アサーションはオプションです。
タイプ | 演算子 | 値の型 |
---|---|---|
本文 | contains 、does not contain 、is 、is not 、matches 、does not match 、jsonpath 、xpath | 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 をクリックするか、応答プレビューを直接クリックすることで、ステップごとに最大 20 個のアサーションを作成できます。
テストがレスポンス本文にアサーションを含まない場合、本文のペイロードはドロップし、Synthetics Worker で設定されたタイムアウト制限内でリクエストに関連するレスポンスタイムを返します。
テストがレスポンス本文に対するアサーションを含み、タイムアウトの制限に達した場合、Assertions on the body/response cannot be run beyond this limit
というエラーが表示されます。
Continue with test if this step fails (このステップに失敗してもテストを続行する) をクリックすると、ステップに失敗しても次のステップに進むことができます。
これにより、テストが自身で後始末をすることができるようになります。たとえば、あるテストがリソースを作成し、そのリソースに対していくつかのアクションを実行した後、そのリソースを削除して終了することが考えられます。中間ステップのいずれかが失敗した場合、この設定をすべての中間ステップで有効にして、テストの終了時にリソースが削除されるようにし、誤検出を発生させないようにします。
中間ステップで Consider entire test as failed if this step fails (このステップが失敗した場合、テスト全体を失敗と見なす) をアクティブにして、エンドポイントの 1 つが期待どおりに応答しない場合でも、テスト全体でアラートが生成されるようにします。
テストが失敗した場合、Y ミリ秒後に X 回再試行することができます。再試行の間隔は、警告の感性に合うようにカスタマイズしてください。
オプションで、応答ヘッダーまたは本文をパースすることにより、HTTP リクエストの応答から変数を抽出することもできます。変数の値は、HTTP リクエストステップが実行されるたびに更新されます。
変数をパースするには
Variable Name を入力します。変数名に使用できるのは大文字、数字、アンダースコアのみです。また、3 文字以上にする必要があります。
変数を応答ヘッダーから抽出するか、本文から抽出するか決定します。
一度作成すると、この変数は Multistep API テストの次のステップで使用することができます。詳しくは、変数の使用を参照してください。
Multistep API テストは次の頻度で実行できます。
アラート条件で、テストが失敗しアラートをトリガーする状況を設定します。
アラートの条件を An alert is triggered if any assertion fails for X minutes from any n of N locations
に設定すると、次の 2 つの条件が当てはまる場合にのみアラートがトリガーされます。
テストが失敗した場合、Y
ミリ秒後に X
回再試行することができます。再試行の間隔は、警告の感性に合うようにカスタマイズしてください。
ロケーションのアップタイムは、評価ごとに計算されます (評価前の最後のテスト結果がアップかダウンか)。合計アップタイムは、構成されたアラート条件に基づいて計算されます。送信される通知は、合計アップタイムに基づきます。
以前に定義されたアラート条件に基づいて、テストによって通知が送信されます。このセクションを使用して、チームに送信するメッセージの方法と内容を定義します。
モニターと同様、メッセージに @notification
を追加するか、ドロップダウンボックスでチームメンバーと接続されたインテグレーションを検索して、通知を受信するユーザーやサービスを選択します。
テストの通知メッセージを入力します。このフィールドでは、標準のマークダウン形式のほか、以下の条件付き変数を使用できます。
条件付き変数 | 説明 |
---|---|
{{#is_alert}} | テストがアラートを発する場合に表示します。 |
{{^is_alert}} | テストがアラートを発しない限り表示します。 |
{{#is_recovery}} | テストがアラートから回復したときに表示します。 |
{{^is_recovery}} | テストがアラートから回復しない限り表示します。 |
テストが失敗した場合に、テストで通知メッセージを再送信する頻度を指定します。テストの失敗を再通知しない場合は、Never renotify if the monitor has not been resolved
オプションを使用してください。
Save をクリックしてテストを保存し、Datadog にテストの実行を開始させます。
Multistep API テストの任意のステップから変数を抽出してから、テストの後続のステップでその値を再挿入することができます。
テストコンフィギュレーションフォームの右上隅にある Create Local Variable をクリックすると、ローカル変数を作成できます。以下の利用可能なビルトインのいずれかから値を定義できます。
{{ numeric(n) }}
n
桁の数字列を生成します。{{ alphabetic(n) }}
n
文字のアルファベット文字列を生成します。{{ alphanumeric(n) }}
n
文字の英数字文字列を生成します。{{ date(n, format) }}
n
日の値を使用して、許容される形式のいずれかで日付を生成します。{{ timestamp(n, unit) }}
n
選択単位で開始されたタイムスタンプの値を使用して、許容される単位のいずれかでタイムスタンプを生成します。HTTP テストの URL、高度なオプション、およびアサーションで、Settings
で定義されたグローバル変数とローカルで定義された変数を使用できます。
変数のリストを表示するには、目的のフィールドに {{
と入力します。
ステップが 1 つまたは複数のアサーションを満たさない場合、またはステップのリクエストが時期尚早に失敗した場合、テストは FAILED
と見なされます。場合によっては、エンドポイントに対してアサーションをテストできずにテストが実際に失敗することがあります。これらの理由には次のものがあります。
CONNREFUSED
CONNRESET
DNS
INVALID_REQUEST
SSL
TIMEOUT
TIMEOUT
には 2 種類あります。TIMEOUT: The request couldn’t be completed in a reasonable time.
は、リクエストの持続時間がテスト定義のタイムアウト (デフォルトは 60 秒に設定されています) に当たったことを示します。
各リクエストについて、ネットワークウォーターフォールに表示されるのは、リクエストの完了したステージのみです。例えば、Total response time
だけが表示されている場合、DNS の解決中にタイムアウトが発生したことになります。TIMEOUT: Overall test execution couldn't be completed in a reasonable time.
は、リクエストとアサーションの時間が最大時間 (60.5s) に達したことを示しています。MALFORMED_RESPONSE
デフォルトでは、Datadog 管理者および Datadog 標準ロールを持つユーザーのみが、Synthetic Multistep API テストを作成、編集、削除できます。Synthetic Multistep API テストの作成、編集、削除アクセスを取得するには、ユーザーをこれら 2 つのデフォルトのロールのいずれかにアップグレードします。
カスタムロール機能を使用している場合は、Synthetic Monitoring の synthetics_read
および synthetics_write
権限を含むカスタムロールにユーザーを追加します。
アカウントにカスタムロールを使用しているお客様は、アクセス制限が利用可能です。
組織内の役割に基づいて、Multistep API テストへのアクセスを制限することができます。Multistep API テストを作成する際に、(ユーザーのほかに) どのロールがテストの読み取りと書き込みを行えるかを選択します。