概要

ユニバーサルサービスモニタリングは、一般的なコンテナタグ (appshort_imagekube_deployment など) を使用してサービスを検出し、それらのサービスのソフトウェアカタログにエントリーを生成します。

Datadog では、ユニバーサルサービスモニタリングで検出されたすべてのサービスのインバウンドとアウトバウンドの両方のトラフィックについて、リクエスト、エラー、およびレイテンシーのメトリクスにアクセスすることができます。これらのサービス健全性メトリクスは、アラートの作成、デプロイの追跡サービスレベル目標 (SLO) の開始などに役立つため、インフラストラクチャー上で実行されているすべてのサービスを幅広く可視化することが可能です。

BITSBOUTIQUE のユニバーサルサービスモニタリング SLO

このガイドでは、universal.http.* などの USM メトリクスを検索して、モニター、SLO、ダッシュボードで使用する方法について説明します。

USM メトリクスと APM メトリクスの比較

メトリクス名単位タイプ説明
universal.http.clientDistributionアウトバウンドリクエストのレイテンシー、カウント、エラー、およびレート。
universal.http.client.hitsHitsカウントアウトバウンドリクエストとエラーの合計数。
universal.http.client.apdexスコアGaugeこのサービスのアウトバウンドリクエストの Apdex スコア。
universal.http.serverDistributionインバウンドリクエストのレイテンシー、カウント、エラー、およびレート。
universal.http.server.hitsHitsカウントインバウンドリクエストとエラーの合計数。
universal.http.server.apdexスコアGaugeこの Web サービスの Apdex スコア。

APM メトリクスとは異なり、エラーは別のメトリクスとしてではなく、error:true タグの下で利用可能です。

注: .hits メトリクスは、インフラストラクチャータグをすべて持ち、リクエストとエラーカウントをクエリする推奨方法です。また、すべての USM メトリクスに第 2 プライマリタグを追加することができます。

メトリクス構文

USM メトリクスクエリ構文は、trace.* を使用する APM メトリクスクエリ構文と異なります。USM メトリクスは、1 つのディストリビューションメトリクス名に分類されます。

例:

APMUSM
trace.universal.http.client.hits{*}count:universal.http.client{*}
trace.universal.http.client.errorscount:universal.http.client{error:true}
trace.universal.http.client.hits.by_http_statuscount: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 を作成することができます。

  1. Monitors > New Monitor の順に移動し、APM をクリックします。
  2. APM Metrics を選択し、サービスまたはリソースの env とその他のプライマリタグを定義します。モニターするサービスまたはリソースを選択し、モニターがクエリを評価する時間間隔を定義します。
  3. Threshold Alert を選択し、トリガーするモニターのために Requests per Second のような USM メトリクスを選択します。次に、アラートと警告のしきい値をまたはにするかどうかを定義します。アラートしきい値、およびオプションで警告しきい値に値を入力します。
  4. 通知セクションには、このモニター用にあらかじめ入力されたメッセージが含まれています。アラート名とメッセージをカスタマイズし、このモニターの権限を定義します。
  5. Create をクリックします。
BITSBOUTIQUE のユニバーサルサービスモニタリングモニター

詳しくは、APM モニターのドキュメントを参照してください。

SLO を作成する

サービスごとに SLO を作成することで、USM メトリクスで設定された目標を達成し、時間の経過とともに可用性が向上していることを確認することができます。Datadog では、多くのサービスをカバーするために、プログラム的に SLO を作成することを推奨しています。

ソフトウェアカタログから SLO を作成するには

  1. ソフトウェアカタログReliability タブに移動します。
  2. SLOs 列で、サービスにカーソルを合わせ、+ Create Availability SLO または + Create Latency SLO をクリックします。
BITSBOUTIQUE のユニバーサルサービスモニタリング SLO を設定する

オプションで、USM メトリクスを使用して SLO を手動で作成するには

  1. Service Management > SLOs の順に移動し、New SLO をクリックします。

  2. Metric Based を選択し、Good events (numerator) セクションで 2 つのクエリを作成します。

    • クエリ A: universal.http.server のような USM メトリクスを入力し、from フィールドにプライマリ serviceenv タグを追加して特定のサービスにフィルターし、as フィールドで count を選択します。
    • クエリ B: universal.http.server のような USM メトリクスを入力し、from フィールドに error:true タグに加えて、プライマリ serviceenv タグを追加して特定のサービスにフィルターし、as フィールドで count を選択します。
  3. + Add Formula をクリックし、a-b と入力します。

  4. Total events (denominator) セクションでは、universal.http.server のような USM メトリクスを入力し、from フィールドにプライマリ serviceenv タグを追加して特定のサービスにフィルターし、as フィールドで count を選択します。

  5. + New Target をクリックすると、以下の設定でターゲットしきい値が作成されます。

    • タイムウィンドウは 7 Days、ターゲットしきい値は 95%、警告しきい値は 99.5% です。Datadog では、すべてのタイムウィンドウで同じターゲットしきい値を設定することを推奨しています。
  6. この SLO の名前と説明を入力します。team タグに加えて、プライマリ envservice タグを設定します。

  7. Save and Set Alert をクリックします。

BITSBOUTIQUE のユニバーサルサービスモニタリング SLO を設定する

詳しくは、サービスレベル目標のドキュメントをご覧ください。

定義されたダッシュボードにアクセスする

ソフトウェアカタログでは、サービス定義ファイルに定義されたダッシュボードを識別し、Dashboards タブに一覧表示します。Manage Dashboards をクリックすると、GitHub で直接サービス定義にアクセスし編集することができます。

ソフトウェアカタログのサービスの Dashboards タブにある Manage Dashboards ボタン

詳しくは、ダッシュボードのドキュメントをご覧ください。

その他の参考資料