モニター、SLO、ダッシュボードでの USM メトリクスの活用
概要
ユニバーサルサービスモニタリングは、一般的なコンテナタグ (app
、short_image
、kube_deployment
など) を使用してサービスを検出し、それらのサービスのソフトウェアカタログにエントリーを生成します。
Datadog では、ユニバーサルサービスモニタリングで検出されたすべてのサービスのインバウンドとアウトバウンドの両方のトラフィックについて、リクエスト、エラー、およびレイテンシーのメトリクスにアクセスすることができます。これらのサービス健全性メトリクスは、アラートの作成、デプロイの追跡、サービスレベル目標 (SLO) の開始などに役立つため、インフラストラクチャー上で実行されているすべてのサービスを幅広く可視化することが可能です。
このガイドでは、universal.http.*
などの USM メトリクスを検索して、モニター、SLO、ダッシュボードで使用する方法について説明します。
USM メトリクスと APM メトリクスの比較
メトリクス名 | 単位 | タイプ | 説明 |
---|
universal.http.client | 秒 | Distribution | アウトバウンドリクエストのレイテンシー、カウント、エラー、およびレート。 |
universal.http.client.hits | Hits | カウント | アウトバウンドリクエストとエラーの合計数。 |
universal.http.client.apdex | スコア | Gauge | このサービスのアウトバウンドリクエストの Apdex スコア。 |
universal.http.server | 秒 | Distribution | インバウンドリクエストのレイテンシー、カウント、エラー、およびレート。 |
universal.http.server.hits | Hits | カウント | インバウンドリクエストとエラーの合計数。 |
universal.http.server.apdex | スコア | Gauge | この Web サービスの Apdex スコア。 |
APM メトリクスとは異なり、エラーは別のメトリクスとしてではなく、error:true
タグの下で利用可能です。
注: .hits
メトリクスは、インフラストラクチャータグをすべて持ち、リクエストとエラーカウントをクエリする推奨方法です。また、すべての USM メトリクスに第 2 プライマリタグを追加することができます。
メトリクス構文
USM メトリクスクエリ構文は、trace.*
を使用する APM メトリクスクエリ構文と異なります。USM メトリクスは、1 つのディストリビューションメトリクス名に分類されます。
例:
APM | USM |
---|
trace.universal.http.client.hits{*} | count:universal.http.client{*} |
trace.universal.http.client.errors | count:universal.http.client{error:true} |
trace.universal.http.client.hits.by_http_status | count:universal.http.client{*} by http_status_family |
pXX:trace.universal.http.client{*} | pXX:universal.http.client{*} |
trace.universal.http.client.apdex{*} | universal.http.client.apdex{*} |
インバウンドトラフィックをキャプチャする universal.http.server
オペレーションについても同様の変換が適用されます。ディストリビューションメトリクスについては、APM における DDSketch ベースのメトリクスを参照してください。
使用方法
Infrastructure > Universal Service Monitoring に移動し、ユニバーサルサービスモニタリングのテレメトリータイプでフィルターをかけて、サービスをクリックします。Performance タブには、ヒット、レイテンシー、リクエスト、エラーなどに関するサービスレベルのグラフが表示されます。これらのメトリクスは、モニターまたは SLO の作成時、あるいはソフトウェアカタログのダッシュボードで確認することもできます。
モニターを作成
universal.http.client
などの USM メトリクスがしきい値を超えたり、予想されるパターンから外れたりすると、アラートをトリガーする APM Monitor を作成することができます。
- Monitors > New Monitor の順に移動し、APM をクリックします。
- APM Metrics を選択し、サービスまたはリソースの
env
とその他のプライマリタグを定義します。モニターするサービスまたはリソースを選択し、モニターがクエリを評価する時間間隔を定義します。 - Threshold Alert を選択し、トリガーするモニターのために
Requests per Second
のような USM メトリクスを選択します。次に、アラートと警告のしきい値を上または下にするかどうかを定義します。アラートしきい値、およびオプションで警告しきい値に値を入力します。 - 通知セクションには、このモニター用にあらかじめ入力されたメッセージが含まれています。アラート名とメッセージをカスタマイズし、このモニターの権限を定義します。
- Create をクリックします。
詳しくは、APM モニターのドキュメントを参照してください。
SLO を作成する
サービスごとに SLO を作成することで、USM メトリクスで設定された目標を達成し、時間の経過とともに可用性が向上していることを確認することができます。Datadog では、多くのサービスをカバーするために、プログラム的に SLO を作成することを推奨しています。
ソフトウェアカタログから SLO を作成するには
- ソフトウェアカタログの Reliability タブに移動します。
- SLOs 列で、サービスにカーソルを合わせ、+ Create Availability SLO または + Create Latency SLO をクリックします。
オプションで、USM メトリクスを使用して SLO を手動で作成するには
Service Management > SLOs の順に移動し、New SLO をクリックします。
Metric Based を選択し、Good events (numerator) セクションで 2 つのクエリを作成します。
- クエリ A:
universal.http.server
のような USM メトリクスを入力し、from
フィールドにプライマリ service
と env
タグを追加して特定のサービスにフィルターし、as
フィールドで count
を選択します。 - クエリ B:
universal.http.server
のような USM メトリクスを入力し、from
フィールドに error:true
タグに加えて、プライマリ service
と env
タグを追加して特定のサービスにフィルターし、as
フィールドで count
を選択します。
+ Add Formula をクリックし、a-b
と入力します。
Total events (denominator) セクションでは、universal.http.server
のような USM メトリクスを入力し、from
フィールドにプライマリ service
と env
タグを追加して特定のサービスにフィルターし、as
フィールドで count
を選択します。
+ New Target をクリックすると、以下の設定でターゲットしきい値が作成されます。
- タイムウィンドウは
7 Days
、ターゲットしきい値は 95%
、警告しきい値は 99.5%
です。Datadog では、すべてのタイムウィンドウで同じターゲットしきい値を設定することを推奨しています。
この SLO の名前と説明を入力します。team
タグに加えて、プライマリ env
と service
タグを設定します。
Save and Set Alert をクリックします。
詳しくは、サービスレベル目標のドキュメントをご覧ください。
定義されたダッシュボードにアクセスする
ソフトウェアカタログでは、サービス定義ファイルに定義されたダッシュボードを識別し、Dashboards タブに一覧表示します。Manage Dashboards をクリックすると、GitHub で直接サービス定義にアクセスし編集することができます。
詳しくは、ダッシュボードのドキュメントをご覧ください。
その他の参考資料