分布値の指標について

このドキュメントでは、Distribution 値のタイプの指標データを表示するグラフを作成して解釈する方法について説明します。この値は、個別測定値があまりに多すぎて収集できないが、平均やパーセンタイルなどの統計情報が貴重な場合にサービスで使用されます。 たとえば、アプリケーションが HTTP トラフィックに依存している場合、HTTP レスポンスのレイテンシをキャプチャする分布値の指標を使用して、HTTP リクエストの完了速度を評価できます。

ヒストグラムの作成方法を説明するために、リクエストの HTTP レイテンシを測定し、分布値タイプを持つ指標を使用してそのデータを報告するサービスを検討してください。このデータは 1 分ごとに報告されます。このサービスはバケットと呼ばれる指標の値の範囲を定義し、各バケットに分類される測定値の数を記録します。たとえば、HTTP リクエストが完了すると、リクエストのレイテンシ値を含むバケットのカウントが増分されます。これらのカウントにより、その分の値のヒストグラムが作成されます。

1 分間隔で測定されるレイテンシが 5、1、3、5、6、10、14 であるとします。バケットが [0, 4)、[4, 8)、[8, 12)、[12, 16) の場合、このデータのヒストグラムは [2, 3, 1, 1] です。次の表は、各測定値が各バケットのカウントにどのように影響するかを示しています。

バケット レイテンシの測定 バケット内の値の数
[12,16) 14 1
[8, 12) 10 1
[4, 8) 5, 5, 6 3
[0, 4) 1, 3 2

このデータが時系列に書き込まれると、Point オブジェクトが作成されます。分布値を持つ指標の場合、そのオブジェクトには値のヒストグラムが含まれます。このサンプリング期間では、Point に [2、3、1、1] が含まれます。個々の測定値は時系列に書き込まれません。

前のテーブルでは、1:00 に測定されたレイテンシ データのヒストグラムを記録するとします。次の表は、一連の測定値を取得してバケット数に変換する方法を示しています。1:01、1:02、1:03 のバケット数が次の表のように示されるとします。

バケット
1:00 のヒストグラム

1:01 のヒストグラム

1:02 のヒストグラム

1:03 のヒストグラム
[12,16) 1 6 0 1
[8, 12) 1 0 2 2
[4, 8) 3 1 1 8
[0, 4) 2 6 10 3

上の表は、時間でインデックス付けされた一連のヒストグラムを示しています。テーブルの各列は、1 分間のレイテンシ データを表します。特定の時点での測定値の数を取得するには、バケット数を合計します。ただし、これらの測定値は分布値の指標に使用できないため、実際の測定値は表示されません。

ヒートマップのグラフ

ヒートマップ グラフは、分布値を持つ単一の時系列を表示するように設計されています。これらのグラフでは、X 軸は時間、Y 軸はバケット、色は値を表します。色が明るいほど高い値を示します。たとえば、ヒートマップの濃い領域は、黄色や白の領域よりもバケット数が少ないことを示しています。

次の図は、前の例のヒートマップの表現の 1 つです。

例のヒートマップ グラフ。

前の例のヒートマップでは、最小のバケット数 0 を黒、最大バケット数 10 を黄色で表しています。赤とオレンジは、両極にあるこの 2 つの値の中間値を表します。

ヒートマップ グラフには単一の時系列しか表示できないため、すべての時系列を結合するには集計オプションを設定する必要があります。

Metrics Explorer を使用して、VM インスタンスの RTT レイテンシの合計を表示するには、次のようにします。
  1. Google Cloud コンソールで、 [Metrics Explorer] ページに移動します。

    Metrics Explorer に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. [指標] 要素の [指標を選択] メニューを展開してフィルタバーに「RTT latencies」と入力し、サブメニューを使用して特定のリソースタイプと指標を選択します。
    1. [Active resources] メニューで、[VM Instance] を選択します。
    2. [Active metric categories] メニューで、[Vm_flow] を選択します。
    3. [Active metrics] メニューで、[RTT latencies] を選択します。
    4. [適用] をクリックします。

前の例では、メニューから値を選択することでヒートマップ グラフが構成されました。ただし、Monitoring Query Language(MQL)を使用して、分布値の指標をグラフ化することもできます。MQL クエリを入力するには、次の操作を行います。

  1. クエリビルダー ペインのツールバーで、名前が [MQL] または  [PromQL] のボタンを選択します。
  2. [言語] 切り替えで [MQL] が選択されていることを確認します。言語切り替えボタンは、クエリの書式設定を行うのと同じツールバーにあります。
  3. クエリを入力してクエリを実行します。

たとえば、コードエディタに次のように入力します。

fetch gce_instance
| metric 'networking.googleapis.com/vm_flow/rtt'
| align delta(1m)
| every 1m
| group_by [], [aggregate(value.rtt)]

前の式では、時系列データが取得、整合、グループ化されます。アライメント プロセスでは、1 分間のアライメント期間で delta アライメント関数を使用します。group_by の最初の引数は [] であるため、すべての時系列が結合されます。 2 番目の引数 [aggregate(value.rtt)] は、時系列の結合方法を定義します。この例では、各タイムスタンプで、異なる時系列の rtt フィールドの値が、MQL によって選択された aggregate 関数と結合されます。

メニューを使用して指標を選択し、MQL に切り替えると、選択が厳密な形式の MQL クエリに変換されます。

fetch gce_instance
| metric 'networking.googleapis.com/vm_flow/rtt'
| align delta(1m)
| every 1m
| group_by [], [value_rtt_aggregate: aggregate(value.rtt)]

上記の式は、機能的には元の MQL の例と同等です。

MQL の詳細については、Monitoring Query Language の概要をご覧ください。

折れ線グラフと棒グラフ

折れ線グラフ、積み上げ棒グラフ、積み上げ折れ線グラフは、スカラー データを表示するように設計されていて、分布値を表示できません。これらのチャートタイプの分布値を含む指標を表示するには、ヒストグラム値をスカラー値に変換する必要があります。たとえば、ヒストグラム内の値の平均を計算したり、パーセンタイルを計算したりするように集計オプションを設定できます。

分布値の指標を折れ線グラフで表示する方法については、次のセクションをご覧ください。

集計指標と分布指標

集計は、時系列内のポイントを正則化し、複数の時系列を結合するプロセスです。分布型の指標の場合の集計は、整数型または倍精度型の値を持つ指標の場合と同じです。ただしグラフタイプでは、時系列のアライメントとグループ化に使用される選択にいくつかの要件が適用されます。

ヒートマップのグラフ

ヒートマップ グラフには、分布値の時系列が 1 つ表示されます。 したがって、アライメント関数グループ化関数を設定して、単一の時系列を作成する必要があります。

グラフにヒートマップが表示されたら、sum または delta のアライメント関数を選択します。これらの関数は、同じアライメント期間内にある単一の時系列のすべてのサンプルをバケットレベルで結合します。結果は分布値になります。たとえば、ある時系列の 2 つの隣接するサンプルが [2, 3, 1, 1] と [2, 5, 4, 1] の場合、合計の配置関数は [4, 8, 5, 2] を生成します。

グループ化関数は、異なる時系列を組み合わせる方法を定義します。この関数は、アグリゲータまたはレデューサともいいます。ヒートマップの場合は、グループ化関数を sum 関数に設定します。合計関数は、すべてのヒストグラムで同じバケットの値を加算し、新しいヒストグラムを作成します。たとえば、timeseries-A の値 [2, 3, 1, 1] と timeseries-B の値 [1, 5, 2, 2] の合計は [3, 8, 3, 3] です。

折れ線グラフ

折れ線グラフには、スカラー値の時系列のみが表示されます。 分布値の指標を選択すると、グラフは、ヒートマップを表示するための最適なパラメータで構成されます。[集計] 要素のフィールドは [分布] と [なし] に設定されます。

  • [分布] の解釈は、特定の指標によって異なります。GAUGE 指標の種類を持つ分布値の指標タイプの場合、デフォルトのアライメント関数は sum に設定されます。分布値の指標タイプの指標の種類が CUMULATIVE の場合、デフォルトのアライメント関数は DELTA です。

  • [なし] を設定すると、すべての時刻が結合されます。

折れ線グラフに分布値の指標を表示する場合は、グラフのデフォルト設定を変更する必要があります。たとえば、分布値の指標のすべての時系列の 99 パーセンタイルを表示するようにダッシュボードで折れ線グラフを構成するには、次のようにします。

  1. Google Cloud コンソールで [ダッシュボード] ページに移動します。

    [ダッシュボード] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。

  2. ツールバーで [ウィジェットを追加] をクリックします。
  3. [ウィジェットを追加] ダイアログで、 [指標] を選択します。
  4. [指標] 要素で、[VM インスタンス - RTT レイテンシ] 指標を選択します。
  5. [集計] 要素で、最初のメニューを展開し、[99 パーセンタイル] を選択します。
  6. [ディスプレイ] ペインで、[ウィジェット タイプ] メニューの値を [折れ線グラフ] に設定します。
  7. 省略可: [集計] 要素で 2 番目のメニューを展開し、時系列をグループ化するラベルを選択します。デフォルトではラベルは選択されないため、グラフには 1 本の線が表示されます。

次のステップ

指標のバケットモデルの決定方法とパーセンタイルの解釈方法については、パーセンタイルと分布値の指標をご覧ください。