ディストリビューション

概要

ディストリビューションは、フラッシュ間隔の間に複数のホストから送信された値を集計して、インフラストラクチャー全体の統計的分布を測定するメトリクスタイプです。

グローバルディストリビューションは、サービスのような論理的オブジェクトを、基礎となるホストから独立してインスツルメントします。Agent 側で集計するヒストグラムとは異なり、グローバルディストリビューションはフラッシュインターバルの間に収集した全ての生データを送信し、集計は Datadog の DDSketch データ構造を使ってサーバー側で行われます。

ディストリビューションは、他のメトリクスタイプ (カウント、レート、ゲージ、ヒストグラム) では提供されない、強化されたクエリー機能および構成オプションを提供します。

  • パーセンタイル集計の計算: ディストリビューションは、生の非集計データを表す DDSketch データ構造として保存され、すべてのホストの生データに対してグローバルに正確なパーセンタイル集計 (p50、p75、p90、p95、p99 または任意のパーセンタイル (小数点以下 2 桁まで)) を計算することが可能です。パーセンタイル集計を有効にすると、以下のような高度なクエリ機能を利用できます。

    • 任意の時間枠における単一パーセンタイル値:

      “私のアプリケーションの 99.9 パーセンタイルのロード時間は、この 1 週間でどうなったか?”

    • 任意の時間枠における標準偏差:

      “過去 1 か月間におけるアプリケーションの CPU 消費量の標準偏差 (stddev) は何ですか?”

    • メトリクスモニターのパーセンタイルしきい値:

      “私のアプリケーションの p95 のリクエストレイテンシーが過去 5 分間に 200 ms を超えたら警告を出す。”

    • しきい値クエリ:

      “私のサービスへのリクエストの 95% が 5 秒以内に完了する 30 日間の SLO を定義したい。”

  • タグ付けのカスタマイズ: この機能を使用すると、ホストレベルの詳細度を必要としない場合にカスタムメトリクスのタグ付けスキームを制御することができます (チェックアウトサービスの毎秒トランザクションなど)。

注: ディストリビューションメトリクスデータは他のタイプとは異なる方法で保存されるため、distribution に使用するメトリクス名は他のメトリクスタイプには使用しないでください。

高度なクエリ機能の有効化

他のメトリクスタイプ、例えば gaugeshistograms と同様に、ディストリビューションでも countminmaxsumavg の集計が可能です。ディストリビューションは、最初は他のメトリクスと同じようにタグ付けされ、カスタムタグはコードで設定されます。その後、メトリクスを報告したホストに基づいてホストタグに解決されます。

しかし、Metrics Summary ページでは、ディストリビューション上のすべてのクエリ可能なタグについて、グローバルに正確なパーセンタイル集計を計算するなどの高度なクエリ機能を有効にすることができます。これは、p50p75p90p95p99、またはユーザーが選択した任意のパーセンタイル (99.99 のように小数点以下 2 桁まで) の集計を提供するものです。高度なクエリを有効にすると、しきい値クエリおよび標準偏差も有効になります。

ディストリビューションメトリクスにパーセンタイル集計を適用することを選択した後、これらの集計がグラフ作成 UI で自動的に利用可能になります。

パーセンタイル集計は、他の様々なウィジェットやアラートで使用することができます。

  • 任意の時間枠における単一パーセンタイル値:

    “私のアプリケーションの 99.9 パーセンタイルのリクエスト期間は、この 1 週間でどうなったか?”

単一のメトリクスの 99.99 パーセンタイル集計の単一値 (7.33s) を表示するクエリ値ウィジェット
  • メトリクスモニターのパーセンタイルしきい値 “私のアプリケーションの p95 のリクエストレイテンシーが過去 5 分間に 200 ms を超えたら警告を出す。”
モニターのアラート条件にドロップダウンで設定できるパーセンタイルしきい値

複数のメトリクスの一括構成

個々のメトリクスを個別に構成するのではなく、複数のメトリクスに対するパーセンタイル集計を一括で有効または無効にすることができます。

  1. メトリクスサマリーページに移動し、Configure Metrics ドロップダウンをクリックします。
  2. Enable percentiles を選択します。
  3. そのネームスペースに一致するすべてのメトリクスを選択するには、メトリクスのネームスペースプレフィックスを指定します。
  4. (オプション) ネームスペース内のすべてのメトリクスに対するパーセンタイルを無効にするには、Percentile aggregations トグルをクリックします。
パーセンタイル集計を管理するためのトグル

しきい値クエリ

DDSketch によって計算されたディストリビューションメトリクスのグローバルで正確なパーセンタイルを有効にすると、しきい値クエリが解放されます。ここでは、生のディストリビューションメトリクス値が数値のしきい値を超えるか下回る場合にその数を数えることができます。この機能を利用して、異常な数値のしきい値と比較したエラーや違反の回数をダッシュボードでカウントすることができます。また、しきい値クエリを使用して、「過去 30 日間に 95% のリクエストが 10 秒以内に完了した」というような SLO を定義することも可能です。

パーセンタイルのディストリビューションのしきい値クエリでは、メトリクスの送信前にしきい値を事前に定義する必要がなく、Datadog でしきい値を柔軟に調整することができます。

しきい値クエリを使用するには:

  1. Metrics Summary ページで、ディストリビューションメトリクスのパーセンタイルを有効にします。
  2. “count values…” アグリゲーターを使用して、選択したディストリビューションメトリクスをグラフ化します。
  3. しきい値と比較演算子を指定します。

同様に、しきい値クエリを使用してメトリクスベースの SLO を作成することができます。

  1. Metrics Summary ページで、ディストリビューションメトリクスのパーセンタイルを有効にします。
  2. 新しいメトリクスベースの SLO を作成し、「count values…」集計方法を使用して選択したディストリビューションメトリクスのクエリで、「good」イベントの数を分子として定義します。
  3. しきい値と比較演算子を指定します。
    SLO のしきい値クエリ

タグ付けのカスタマイズ

ディストリビューションには、ホストレベルの詳細度が意味を持たない場合にメトリクスへのタグ付けを制御する機能があります。タグのコンフィギュレーションは維持したいタグの_許可リスト_になります。

タグ付けをカスタマイズするには:

  1. Metrics Summary テーブルでカスタムディストリビューションのメトリクス名をクリックし、メトリクス詳細のサイドパネルを開きます。
  2. Manage Tags ボタンをクリックして、タグコンフィギュレーションモーダルを開きます。
  3. Custom… タブをクリックして、クエリ用に維持したいタグをカスタマイズします。

: 許可リストベースのタグのカスタマイズでは、タグの除外はサポートされていません。! で始まるタグは追加できません。

Manage Tags ボタンでディストリビューションにタグを構成する

監査イベント

タグコンフィギュレーションまたはパーセンタイル集計の変更があった場合、イベントエクスプローラーにイベントが作成されます。このイベントでは、変更内容が説明され、変更を行ったユーザーが表示されます。

ディストリビューションメトリクスのタグ構成を作成、更新、または削除した場合、以下のイベント検索で例を見ることができます。

https://app.datadoghq.com/event/stream?tags_execution=and&per_page=30&query=tags%3Aaudit%20status%3Aall%20priority%3Aall%20tag%20configuration

パーセンタイル集計をディストリビューションメトリクスに追加または削除した場合、次のイベント検索の例を見ることができます。

https://app.datadoghq.com/event/stream?tags_execution=and&per_page=30&query=tags%3Aaudit%20status%3Aall%20priority%3Aall%20percentile%20aggregations

参考資料

お役に立つドキュメント、リンクや記事: