分布値の指標について

このドキュメントでは、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 Console で、Monitoring の [Metrics Explorer] ページに移動します。
  2. Metrics Explorer に移動

  3. [指標を選択] ペインで、指標メニューを開き、フィルタバーに「RTT latencies」と入力し、サブメニューを使用して特定のリソースタイプと指標を選択します。
    1. [Active resources] メニューで、[VM Instance] を選択します。
    2. [Active metric categories] メニューで、[Vm_flow] を選択します。
    3. [Active metrics] メニューで、[RTT latencies] を選択します。
    4. [Apply](適用)をクリックします。
  4. [グループ条件] セクションで、次の操作を行います。
    • グループ化関数として Sum を選択します。
    • [ラベル] が選択されていないことを確認します。
  5. [ディスプレイ] ペインで、[ウィジェット タイプ] メニューが [ヒートマップ] に設定されていることを確認します。

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

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:00 [2, 3, 1, 1] 7
1:01 [6, 1, 0, 6] 13
1:02 [10, 1, 2, 0] 13
1:03 [3, 8, 2, 1] 14

上の表では、ヒストグラム値の合計を X-Y プロットで表示できます。

HTTP レイテンシ情報を格納する指標では、完了した HTTP リクエストの数が間接的に表されるため、合計は意味のある値です。上の表のデータは、HTTP リクエストの完了の割合が低いものの、比較的一定であることを示します。

サンプルの折れ線グラフ。

折れ線グラフには、スカラー値を持つ時系列のみが表示されます。分布値の指標を折れ線グラフで表示するには、集計フィールドを使用して分布値をスカラー値に変換します。

VM インスタンスの RTT レイテンシの 99 パーセンタイルを表示するには、次のようにします。
  1. Google Cloud Console で、Monitoring の [Metrics Explorer] ページに移動します。
  2. Metrics Explorer に移動

  3. [指標を選択] ペインで、指標メニューを開き、フィルタバーに「RTT latencies」と入力し、サブメニューを使用して特定のリソースタイプと指標を選択します。
    1. [Active resources] メニューで、[VM Instance] を選択します。
    2. [Active metric categories] メニューで、[Vm_flow] を選択します。
    3. [Active metrics] メニューで、[RTT latencies] を選択します。
    4. [Apply](適用)をクリックします。
  4. データの表示方法を構成します。デフォルトでは、Metrics Explorer はすべての時系列を平均化するグループ化を追加します。このグラフの [Group By] エントリで、[Labels] フィールドに対して [acl_operation] を選択します。[グループ化関数] フィールドで、[合計] を選択します。詳細については、Metrics Explorer 使用時の指標の選択をご覧ください。

集計指標と分布指標

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

ヒートマップのグラフ

ヒートマップ グラフには、分布値の時系列が 1 つ表示されます。複数の時系列がある場合は、配置指定子グループ化関数を使用して単一の時系列を作成する必要があります。

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

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

折れ線グラフ

折れ線グラフには、スカラー値の時系列のみが表示されます。分布値の指標を折れ線グラフで表示するには、配置指定子またはグループ化関数を使用して、分布値をスカラー値に変換します。

  • パーセンタイル配置指定子は、分布値をスカラー値に変換します。これらの配置指定子では、時系列のグループ化は任意です。

  • 合計とデルタの配置指定子は、分布値をスカラー値に変換しません。これらの配置指定子を使用する場合は、分布値をスカラー値に変換するグループ化関数を選択します。

たとえば、分布値の指標のすべての時系列の 99 パーセンタイルを表示するようにダッシュボードで折れ線グラフを構成するには、次のようにします。

  1. Google Cloud コンソールで [Monitoring] を選択するか、次のボタンをクリックします。
    [Monitoring] に移動
  2. ナビゲーション パネルで、[ ダッシュボード] を選択し、表示または編集するダッシュボードを選択します。
  3. [Edit dashboard] ボタンが表示されている場合は、このボタンをクリックします。
  4. グラフ ライブラリから折れ線グラフのウィジェットを選択して、ダッシュボードに折れ線グラフを追加します。
  5. 折れ線グラフの構成を変更して、特定のリソースの分布値の指標を表示します。たとえば、RTT レイテンシの指標と VM インスタンス リソースを選択します。
  6. パーセンタイル配置指定子を使用するようにグラフを構成します。

    • [基本] タブ: [グループ化] をクリアして、[99 パーセンタイル] を選択します。
    • [詳細設定] タブ: 前処理ステップで [パーセンタイル] を選択し、メニューで 99 パーセンタイルを選択します。また、[グループ条件] フィールドは空で、group-by 関数が [なし] に設定されていることも確認します。

結果のグラフには、時系列ごとに 1 つずつ複数の線を表示できます。

別の例として、分布値の指標の時系列の 99 パーセンタイルである単一の時系列を表示するとします。このグラフを構成するには、前のシーケンスの最後のステップを次のステップで置き換えます。そこで、合計の配置指定子を指定し、グループ化関数を設定します。

  1. [Advanced] タブを選択します。
  2. 前処理ステップで [前処理ステップなし] を選択します。
  3. [アライメント関数] を [sum] に設定します。
  4. [グループ条件] フィールドが空であることを確認し、[Group by function] を [99 パーセンタイル] に設定します。

結果のグラフには、単一の線が表示されます。

次のステップ

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