カスタム ダッシュボードに永続フィルタを追加する

このドキュメントでは、ダッシュボード レベルの永続フィルタをカスタム ダッシュボードに追加する方法について説明します。各ウィジェットを変更せずにダッシュボードに表示されるデータを変更できる永続的なフィルタは、デフォルトの状態を持ち、ダッシュボード全体に適用するか、または特定のウィジェットにのみ適用することができます。ダッシュボードのツールバーには、各永続フィルタと、フィルタの値を一時的に変更できるメニューが表示されます。

ダッシュボード上のデータのデフォルト表示と、その表示を変更するためのメニュー駆動型オプションを定義する場合は、永続フィルタを追加します。たとえば、すべてのゾーンの指標に加えて、特定のゾーンの指標も表示する場合は、zone ラベルに基づく永続フィルタを作成します。

永続フィルタは、Google Cloud コンソールまたは Cloud Monitoring API を使用して作成して適用できます。このドキュメントでは、Google Cloud コンソールの使用方法について説明します。Cloud Monitoring API の使用方法については、API によるダッシュボードの作成と管理: ダッシュボード フィルタをご覧ください。

一時的なグループとフィルタを追加、変更する方法については、カスタム ダッシュボードに一時的なフィルタを追加するをご覧ください。

ダッシュボード フィルタの仕組み

ダッシュボード フィルタでは、ラベルと値を指定します。ダッシュボードに表示される時系列によって、フィルタリングに使用できるラベルが決まります。ウィジェットがダッシュボード全体のフィルタをサポートする方法は、ウィジェットに表示されるデータの種類とウィジェットの構成によって異なります。

  • 折れ線グラフなど、時系列データを表示するウィジェットには、次のルールが適用されます。

    • ウィジェットで表示される時系列がフィルタのラベルをサポートしていない場合、ダッシュボード全体のフィルタで表示されるデータは変更されません。

      たとえば、ラベル instance_id にフィルタを追加しても、ダッシュボードのグラフに instance_id ラベルが付いている場合、フィルタによって表示される内容は変更されません。

    • ウィジェットでラベルの値が指定されている場合、ダッシュボード全体のフィルタは表示されたデータを変更しません。

      たとえば、ラベル instance_id のフィルタを追加しても、ダッシュボードのグラフに instance_id ラベルに基づくフィルタが含まれている場合、ダッシュボード全体のフィルタは変更されません。

    • それ以外の場合、グラフは表示するデータを、ダッシュボード全体のフィルタを満たす時系列のみにフィルタリングします。

  • ログパネル ウィジェットの場合、リソースラベルに基づくダッシュボード全体のフィルタによってクエリが更新されます。たとえば、ダッシュボード全体のフィルタ cluster_name: mycluster を追加すると、クエリが更新され、 resource.labels."cluster_name"="mycluster" が含まれます。

ダッシュボード全体のフィルタを複数追加できます。これらのフィルタは論理 AND で結合されます。

始める前に

Google Cloud コンソールを使用して永続フィルタを追加または変更するために必要な権限を取得するには、管理者に依頼して、プロジェクトに対するモニタリング編集者roles/monitoring.editor)IAM ロールを取得してください。 ロールの付与の詳細については、アクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

ロールの詳細については、Identity and Access Management を使用してアクセスを制御するをご覧ください。

永続フィルタを作成する

ダッシュボードを設計する際、ダッシュボードに表示するデータの表示方法を複数特定できる場合があります。たとえば、ダッシュボードに VM インスタンスの指標を表示する場合、すべての VM の指標を表示することも、特定のゾーンにある VM の指標を表示することもできます。デフォルトをすべてのゾーン(*)に設定して、zone ラベルの永続フィルタを作成できます。ダッシュボードを表示するときに、zone フィルタのメニューを使用して特定のゾーンを選択できます。

永続フィルタを特定のウィジェットに制限できます。2 つの異なるゾーンにある VM の指標を並べて表示する必要があるシナリオについて考えてみましょう。2 つのグラフ コレクションを作成し、コレクションごとにフィルタを作成します。デフォルト構成は元の目標を満たしています。ただし、ダッシュボードを表示すると、ツールバーに変数が一覧表示され、さまざまな値を選択するためのメニューが表示されます。これらのメニューを使用して、異なるゾーンのデータを表示できます。

特定のウィジェットにのみ適用される永続的なフィルタは、テンプレート変数と呼ばれることもあります。このタイプのフィルタを作成した後、ダッシュボードにウィジェットを追加する際に、そのウィジェットにフィルタを適用することもできます。詳細については、ウィジェットに永続フィルタを適用するをご覧ください。

永続フィルタを作成するには、次のようにします。

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

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

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

  2. ダッシュボード ツールバーで、 [設定] をクリックし、[フィルタの管理] を選択します。
  3. [ラベル] をクリックし、ラベルを選択します。たとえば、zone を選択します。
  4. [デフォルト値] をクリックして、ラベルのデフォルト値を選択します。すべての値と一致させるには、* を選択します。

    作成したフィルタは、ダッシュボードのツールバーに追加されます。フィルタ値を一時的に変更するには、フィルタを選択して、メニューから選択します。

  5. 次のいずれかを行います。

    • ダッシュボードのすべてのウィジェットにフィルタを適用するには、[すべてに適用] を選択してから、[適用] を選択します。

    • ダッシュボードの一部のウィジェットにフィルタを適用するには:

      1. [すべてに適用] をオフにします。
      2. [変数名] フィールドに、変数の表示名を入力します。
      3. [グラフに適用] メニューを開き、フィルタを適用するウィジェットを選択して、[OK] を選択します。

      4. [Apply](適用)をクリックします。

永続フィルタをウィジェットに適用する

永続フィルタをウィジェットに適用するには、そのウィジェットを変数に関連付ける必要があります。

  • メニューを使用して構成するグラフの場合は、フィルタを作成または編集するときにこの関連付けを行うことができます。

  • ログパネルの場合は、ウィジェットを編集してデフォルトのクエリを構成します。永続フィルタを適用するための構文というセクションのガイダンスに沿って操作してください。

  • MQL または PromQL で定義されたグラフとテーブルの場合は、グラフまたはテーブルを編集して、MQL または PromQL を変更します。永続フィルタを適用するための構文というセクションのガイダンスに沿って操作してください。

永続フィルタを適用する構文

たとえば、次の例では、テンプレート変数とダッシュボード全体のフィルタを定義するダッシュボードの JSON 表現の一部を示します。

{
  "dashboardFilters": [
      {
        "filterType": "RESOURCE_LABEL",
        "labelKey": "instance_id",
        "stringValue": "3133577226154888113",
        "templateVariable": "iid"
      },
      {
        "filterType": "RESOURCE_LABEL",
        "labelKey": "zone"
      }
    ],
  "displayName": "Illustrate Template Variables",
  ...

表示された JSON で、dashboardFilters 構造の最初のエントリは、iid という名前のテンプレート変数と、ラベルキー zone を含むダッシュボード全体のフィルタ用です。テンプレート変数は、ラベル instance_id のエイリアスです。

テンプレート変数のデータ構造には、テンプレート変数を適用するウィジェットが記載されません。代わりに、ウィジェットのクエリを変更して、変数への参照を含むようにウィジェットをテンプレート変数に関連付けます。ダッシュボードにウィジェットを表示すると、テンプレート変数の値が解決されます。

ログパネルとグラフにアノテーションを付ける方法については、次のセクションをご覧ください。

ログパネル

テンプレート変数の値に基づいて表示をフィルタするようにログパネルを構成するには、変数をクエリペインに追加します。次の例は、テンプレート変数 iid の値でフィルタするクエリを示しています。

${iid}

ログパネルで表示するログをクエリする前に、テンプレート変数が解決されます。この例では、テンプレート変数の値が "12345" の場合、${iid} がステートメント resource.labels."instance_id"="12345" に置き換えられます。

テンプレート変数の値のみをクエリに含めることもできます。この値は、正規表現で定義されたフィルタの一部としてのみ使用することをおすすめします。たとえば、次のクエリでは、正規表現を使用して、説明されている文字列を含む JSON ペイロードを持つログエントリを照合します。

jsonPayload.message=~"Connected to instance: ${iid.value}"

ログパネルのクエリを構成し、ログ エクスプローラを開くボタンを選択すると、ログ エクスプローラを開く前にテンプレート変数が解決されます。

次の表は、ログパネルによってテンプレート変数がどのように解決されるかを示しています。

構文 選択された
解決されたログパネル式
${iid} 12345 resource.labels."instance_id"="12345"
${iid} * ""
${iid.value} 12345 12345
${iid.value} * .*

MQL 定義のグラフとテーブル

Monitoring Query Language(MQL)を使用してグラフを構成する場合は、クエリ文字列にパイプとその変数を追加します。

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| every 1m
| ${iid}

グラフで表示する時系列をクエリする前に、テンプレート変数が解決されます。この例では、テンプレート変数の値が "12345" の場合、${iid} がステートメント filter (resource.instance_id == '12345') に置き換えられます。このフィルタは、resource.instance_id という名前のラベルを持つ時系列に一致し、ラベルの値が 12345 の場合にのみ一致します。

正規表現を使用して時系列をフィルタリングする場合は、テンプレート変数の値のみが含まれるようにクエリを構成します。構文の詳細を説明するために、正規表現を使用して、ラベル resource.instance_id の値にテンプレート変数 iid の値が含まれているかどうかを判別する方法を示します。

fetch gce_instance
| metric 'compute.googleapis.com/instance/cpu/utilization'
| filter resource.instance_id=~"${iid.value}"
| group_by 1m, [value_utilization_mean: mean(value.utilization)]
| every 1m

次の表に、MQL クエリでテンプレート変数が解決される方法を示します。

構文 選択された
解決された MQL 式
${iid} 12345 filter (resource.instance_id == '12345')
${iid} * filter (true)
${iid.value} 12345 12345
${iid.value} * .*

PromQL 定義のグラフとテーブル

PromQL を使用してグラフを定義する場合は、クエリ文字列に中かっこで囲まれた変数を追加します。

compute_googleapis_com:instance_cpu_utilization {
    project_id="my-project", ${iid}
}

グラフで表示する時系列をクエリする前に、テンプレート変数が解決されます。この例では、テンプレート変数の値が "12345" の場合、${iid} がステートメント instance_id == '12345' に置き換えられます。

MQL と同様に、PromQL でウィジェットを定義する場合、クエリで抽出できるのはテンプレート変数の値のみです。この値は、正規表現で定義されたフィルタの一部としてのみ使用することをおすすめします。構文の詳細を説明するために、正規表現を使用して、ラベル instance_id の値にテンプレート変数 iid の値が含まれているかどうかを判別する方法を示します。

compute_googleapis_com:instance_cpu_utilization{
    instance_id=~"${iid.value}"
}

次の表に、PromQL クエリに対してテンプレート変数がどのように解決されるかを示します。

構文 選択された
解決された PromQL 式
${iid} 12345 instance_id == '12345'
${iid} * noop_filter=~".*"
${iid.value} 12345 12345
${iid.value} * .+

時系列フィルタで定義されたグラフとテーブル

時系列フィルタを使用してグラフを定義する場合は、その変数をフィルタ文字列に追加します。

"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
           resource.type=\"gce_instance\" ${iid}"

MQL 定義のグラフや PromQL 定義のグラフとは異なり、テンプレート変数の値を時系列フィルタで使用することはできません。

次の表に、テンプレート変数の解決方法を示します。

構文 選択された
解決されたフィルタ式
${iid} 12345 resource.instance_id == "12345"
${iid} * 除外
${iid.value} 12345 非対応
${iid.value} * 非対応

永続フィルタを変更する

ダッシュボード ツールバーに表示されているフィルタの値を一時的に変更するには、フィルタ名をクリックし、値を入力するか、メニューから選択します。

永続フィルタの構成を変更するには、次の操作を行います。

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

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

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

  2. ダッシュボード ツールバーで、 [設定] をクリックし、[フィルタの管理] を選択します。
  3. 変更するフィルタを見つけて、メニューを使用して変更します。
  4. [Apply](適用)をクリックします。

永続フィルタを削除する

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

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

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

  2. ダッシュボード ツールバーで、 [設定] をクリックし、[フィルタの管理] を選択します。
  3. 削除するフィルタを見つけて、 削除 をクリックします。
  4. [Apply](適用)をクリックします。

次のステップ