ダッシュボードとレイアウトのサンプル

このページでは、Cloud Monitoring API を使用してダッシュボードを作成する方法について説明します。各例では、JSON のダッシュボード定義と対応するダッシュボードが表示されます。JSON は、Google Cloud CLI と Cloud Monitoring API エンドポイントの両方に指定できます。

Cloud Monitoring には、GitHub でキュレートされた一連のダッシュボード定義も用意されています。これらの定義をカスタム ダッシュボードとして Google Cloud プロジェクトにインストールできます。このリポジトリとこれらのダッシュボードのインストール方法については、サンプル ダッシュボードをインストールするをご覧ください。

API または Google Cloud CLI を使用する場合

Cloud Monitoring API と Google Cloud CLI を使用すると、一度に多くのダッシュボードを管理できます。 Google Cloud コンソールでダッシュボードを管理することもできますが、カスタム ダッシュボードを一括で管理するスクリプトを使用するほうが簡単な場合があります。

空白のプレースホルダ ウィジェットをダッシュボードに追加する場合、API を使用する必要があります。

API での MQL または PromQL の使用

dashboards.create メソッドを使用して、ダッシュボードを作成します。ダッシュボードに表示されるウィジェットごとに 1 つのエントリが含まれる Dashboard オブジェクトに、API メソッドを渡します。

グラフ ウィジェットなど、ウィジェットに時系列データが表示される場合、Dashboard オブジェクトのエントリには TimeSeriesQuery オブジェクトが含まれます。このオブジェクトは、グラフ化する時系列データを記述します。データは、Monitoring フィルタMQL クエリ、または PromQL クエリを使用して指定します。

  • Monitoring フィルタを使用するには、timeSeriesField フィールドに値を入力します。このページの例では、Cloud Monitoring フィルタを使用します。

  • MQL クエリを使用するには、timeSeriesQueryLanguage フィールドに値を入力します。詳細については、グラフの作成をご覧ください。

  • PromQL クエリを使用するには、prometheusQuery フィールドに入力します。一般的な情報については、Cloud Monitoring の PromQL をご覧ください。

ダッシュボードのレイアウト

このセクションでは、使用可能なさまざまなダッシュボード レイアウトについて説明します。

GridLayout のダッシュボード

このダッシュボードには、3 つのウィジェットを含む GridLayout が表示されます。

{
  "displayName": "Grid Layout Example",
  "gridLayout": {
    "columns": "2",
    "widgets": [
      {
        "title": "Widget 1",
        "xyChart": {
          "dataSets": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_RATE"
                }
              },
              "unitOverride": "1"
            },
            "plotType": "LINE"
          },
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          }
        }
      },
      {
        "text": {
          "content": "Widget 2"
        }
      },
      {
        "title": "Widget 3",
        "xyChart": {
          "dataSets": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"agent.googleapis.com/nginx/connections/accepted_count\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_RATE"
                }
              },
              "unitOverride": "1"
            },
            "plotType": "STACKED_BAR"
          },
          "timeshiftDuration": "0s",
          "yAxis": {
            "label": "y1Axis",
            "scale": "LINEAR"
          }
        }
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

グリッド レイアウトのダッシュボードの例

MosaicLayout のダッシュボード

このダッシュボードには、2 つのウィジェットを含む MosaicLayout が表示されます。

{
  "displayName": "Mosaic Layout Example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "xPos": 2,
        "yPos": 2,
        "width": 7,
        "height": 2,
        "widget": {
          "title": "CPU utilization in us-central1-a",
          "scorecard": {
            "timeSeriesQuery": {
              "timeSeriesFilter": {
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\" resource.label.zone=\"us-central1-a\"",
                "aggregation": {
                  "perSeriesAligner": "ALIGN_MEAN",
                  "crossSeriesReducer": "REDUCE_MAX"
                }
              },
              "unitOverride": "1"
            },
            "gaugeView": {
              "upperBound": 1.5
            },
            "thresholds": [
              {
                "value": 0.8,
                "color": "YELLOW",
                "direction": "ABOVE"
              },
              {
                "value": 1,
                "color": "RED",
                "direction": "ABOVE"
              }
            ]
          }
        }
      },
      {
        "xPos": 1,
        "yPos": 5,
        "width": 4,
        "height": 4,
        "widget": {
          "title": "My Chart",
          "xyChart": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "perSeriesAligner": "ALIGN_MEAN",
                      "crossSeriesReducer": "REDUCE_MAX",
                      "groupByFields": [
                        "resource.label.zone"
                      ]
                    }
                  },
                  "unitOverride": "'1'"
                },
                "plotType": "LINE",
                "minAlignmentPeriod": "60s"
              }
            ],
            "yAxis": {
              "label": "y1Axis",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

モザイク レイアウトのダッシュボードの例

RowLayout のダッシュボード

このダッシュボードには、3 つのウィジェットを含む RowLayout が表示されます。

{
  "displayName": "Row Layout Example",
  "rowLayout": {
    "rows": [
      {
        "weight": "1",
        "widgets": [
          {
            "text": {
              "content": "Widget 1",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 2",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 3",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

行レイアウトのダッシュボードの例

ColumnLayout のダッシュボード

このダッシュボードには、3 つのウィジェットを含む ColumnLayout が表示されます。

{
  "displayName": "Column Layout Example",
  "columnLayout": {
    "columns": [
      {
        "weight": "1",
        "widgets": [
          {
            "text": {
              "content": "Widget 1",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 2",
              "format": "MARKDOWN"
            }
          },
          {
            "text": {
              "content": "Widget 3",
              "format": "MARKDOWN"
            }
          }
        ]
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

列レイアウトのダッシュボードの例

ダッシュボード イベントを有効にして、フィルタとラベルを追加する

このセクションでは、フィルタとラベルをダッシュボードに追加する方法と、イベントを表示するようにダッシュボードを構成する方法について説明します。

ダッシュボードでイベントを有効にする

Google Kubernetes Engine の更新イベントや仮想マシン障害イベントなどのイベントを表示するようにダッシュボードを構成するには、Dashboard オブジェクトに annotations フィールドを追加します。annotations フィールドには、次の 2 つのフィールドを含む DashboardAnnotations オブジェクトのインスタンスが含まれています。

  • defaultResourceName フィールドには、Google Cloud プロジェクトでイベントを検索するためのダッシュボードレベルのデフォルトが一覧表示されます。このフィールドを指定しない場合は、選択したプロジェクトが検索されます。

  • EventAnnotation オブジェクトの配列。各オブジェクトには次が含まれます。

    • displayName フィールド。イベント固有の切り替えでラベルを定義できます。このフィールドが指定されていない場合、またはこのフィールドの値が空の文字列の場合、イベントのデフォルト名が表示されます。
    • enabled フィールド。イベントの切り替え値を制御します。 true の場合、切り替えは on の位置にあり、イベントがダッシュボードに表示されます。false の場合、切り替えは off の位置にあります。
    • eventType フィールド。EventType 列挙値が含まれます。
    • filter フィールド。イベント固有のクエリに追加するクエリを指定できます。このフィールドの値が空の文字列の場合、イベント固有のクエリが使用されます。
    • resourceNames フィールド。イベントを検索する Google Cloud プロジェクトのリストを定義できます。このフィールドが空の配列の場合は、選択したプロジェクトが検索されます。

次の例は、Google Kubernetes Engine イベントを指定する annotations フィールドを示しています。

{
  "displayName": "Annotation example",
  "annotations": {
    "defaultResourceNames": [],
    "eventAnnotations": [
      {
        "displayName": "",
        "enabled": true,
        "eventType": "GKE_CLUSTER_UPDATE",
        "filter": "resource.labels.cluster_name=my-cluster",
        "resourceNames": []
      }
    ]
  },
  "dashboardFilters": [],
  "mosaicLayout": {
  ...
  },
  "labels": {}
}

前の例では、filter フィールドを使用して、クエリをクラスタ my-name に制限しています。displayName フィールドが空の文字列に設定されているため、イベントの切り替えボタンにはイベントタイプのデフォルト名が表示されます。最後に、resourceNames が空の配列に設定されているため、現在の Google Cloud プロジェクトのログエントリがクエリされます。

ダッシュボード フィルタを追加する

ダッシュボードに永続的なフィルタを追加して、ダッシュボード上のウィジェットに表示するデータを制御できます。 永続的なフィルタを含むダッシュボードの例については、ダッシュボード フィルタをご覧ください。

ダッシュボード ラベルを追加する

このサンプルは、playbook という名前のラベルを指定する Dashboard オブジェクトを示しています。

{
  "displayName": "Example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      ...
    ]
  },
  "dashboardFilters": [],
  "labels": {
    "playbook": ""
  }
}

前のサンプルのように、labels フィールドは map として実装されています。ここで、key フィールドと value フィールドは両方とも文字列です。ダッシュボードにラベルを追加するときは、key をラベルの名前に設定し、value フィールドを空の文字列に設定します。

ダッシュボードにラベルを追加することは任意です。

Widgets を含むダッシュボード

このセクションでは、さまざまな種類のウィジェットを含むダッシュボードの例を示します。

XyChart を含むダッシュボード

このダッシュボードには、基本的な XyChart を含むダッシュボードが表示されます。Google Cloud コンソールを使用してダッシュボードのグラフを作成した場合、そのグラフは XyChart ウィジェットのインスタンスになります。

Google Cloud コンソールで提供される機能と同様、API によっても、グラフの PlotType の変更やグラフの表示モードの構成を行うオプションが提供されます。

{
  "dashboardFilters": [],
  "displayName": "Example line chart",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

ダッシュボードのグラフは、次の例のようになります。

XyChart の例。

次のセクションでは、ログ分析グラフ ウィジェットを作成する方法、グラフにしきい値を表示する方法、グラフで左 Y 軸、右 Y 軸、またはその両方を使用するかどうかを構成する方法について説明します。

ログ分析グラフを含むダッシュボード

このダッシュボードには、ログ分析グラフを含むダッシュボードが表示されます。サンプル JSON には SQL クエリが含まれています。

{
  "displayName": "Example",
  "dashboardFilters": [],
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 24,
        "height": 16,
        "widget": {
          "title": "Sample analytics chart",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [
                  {
                    "column": "location",
                    "columnType": "STRING",
                    "maxBinCount": 5,
                    "sortColumn": "location",
                    "sortOrder": "SORT_ORDER_ASCENDING"
                  }
                ],
                "measures": [
                  {
                    "aggregationFunction": {
                      "parameters": [],
                      "type": "count"
                    },
                    "column": ""
                  }
                ],
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "opsAnalyticsQuery": {
                    "queryHandle": "",
                    "sql": "SELECT\n  CAST(JSON_VALUE(resource.labels.location) AS STRING) AS location,\n  severity,\nFROM\n  `TABLE_NAME_OF_LOG_VIEW`"
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  },
  "labels": {}
}

ダッシュボードのグラフは、次の例のようになります。

ログ分析 SQL クエリを使用した XyChart の例。

XyChart としきい値を含むダッシュボード

このダッシュボードには、基本的な XyChart、しきい値、左側の Y 軸が構成されたダッシュボードが表示されます。

{
  "dashboardFilters": [],
  "displayName": "Example line with threshold",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [
              {
                "label": "",
                "targetAxis": "Y1",
                "value": 0.2
              }
            ],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

上の例では、JSON に y2Axis 構造が含まれているため、左側の Y 軸の使用が指定されています。targetAxis フィールドでは、右の Y 軸に「Y1」、左側の Y 軸に「Y2」を使用します。targetAxis フィールドを省略すると、右の Y 軸が使用されます。

ダッシュボードのグラフは、次の例のようになります。

左側の Y 軸を使用し、しきい値がある XyChart の例。

複数の指標タイプを表示し、左右の軸を使用するグラフを作成できます。上の例は、単一の指標タイプ、つまり dataSets 配列に 1 つの要素が含まれるグラフを示しています。2 つの指標タイプをグラフ化する場合、dataSets 配列に 2 つの要素が含まれ、各要素に targetAxis が指定されます。

STACKED_AREA PlotTypeXyChart を含むダッシュボード

このダッシュボードには、STACKED_AREAPlotType を含む XyChart が表示されます。

{
  "dashboardFilters": [],
  "displayName": "Example stacked area",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_AREA",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

ダッシュボードのグラフは、次の例のようになります。

積み上げ面グラフの XyChart の例。

STACKED_BAR PlotType の XyChart を含むダッシュボード

このダッシュボードには、STACKED_BARPlotType を含む XyChart が表示されます。

{
  "dashboardFilters": [],
  "displayName": "Example stacked bar",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_MEAN",
                      "groupByFields": [
                        "resource.label.\"zone\""
                      ],
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

積み上げ棒グラフの XyChart の例。

基本的な Scorecard を含むダッシュボード

このダッシュボードには、ゲージやスパークラインのない Scorecard が表示されます。この例は、Compute Engine の CPU 使用率を示し、スコアカードには 2 つのしきい値があります。1 つの閾値は黄色を使用し、CPU 使用率が 70% 超であることを示し、もう 1 つの閾値は赤色を使用し、CPU 使用率が 90% 超であることを示します。

現在の CPU 使用率は、指定したしきい値未満となるため、緑色になります。

{
  "dashboardFilters": [],
  "displayName": "Example-basic scorecard",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "scorecard": {
            "thresholds": [
              {
                "color": "YELLOW",
                "direction": "ABOVE",
                "label": "",
                "value": 0.7
              },
              {
                "color": "RED",
                "direction": "ABOVE",
                "label": "",
                "value": 0.9
              }
            ],
            "timeSeriesQuery": {
              "outputFullDuration": true,
              "timeSeriesFilter": {
                "aggregation": {
                  "alignmentPeriod": "60s",
                  "crossSeriesReducer": "REDUCE_MEAN",
                  "groupByFields": [],
                  "perSeriesAligner": "ALIGN_MEAN"
                },
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
              }
            }
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 16
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

Scorecard ウィジェットを使用したダッシュボードの例。

GaugeViewScorecard を含むダッシュボード

このダッシュボードでは、前の例の基本スコアカードにメーターが追加されます。GaugeView オブジェクトでは、上限と下限を指定することで、メーターに表示する値の範囲を指定できます。スコアカードには 0 から 1 までの値が表示されるため、そうした上限と下限は妥当です。メーターを追加するには、基本的なスコアカードの JSON に次の行を追加します。

  "gaugeView": {
    "lowerBound": 0,
    "upperBound": 1,
  },

変更後の完全なダッシュボード仕様は次のとおりです。現在の値はしきい値の下にあり、ゲージに適切に色付けされています。

{
  "dashboardFilters": [],
  "displayName": "Example-Gauge",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 8,
        "widget": {
          "scorecard": {
            "gaugeView": {
              "lowerBound": 0,
              "upperBound": 1
            },
            "thresholds": [
              {
                "color": "YELLOW",
                "direction": "ABOVE",
                "label": "",
                "value": 0.7
              },
              {
                "color": "RED",
                "direction": "ABOVE",
                "label": "",
                "value": 0.9
              }
            ],
            "timeSeriesQuery": {
              "outputFullDuration": true,
              "timeSeriesFilter": {
                "aggregation": {
                  "alignmentPeriod": "60s",
                  "crossSeriesReducer": "REDUCE_MEAN",
                  "groupByFields": [],
                  "perSeriesAligner": "ALIGN_MEAN"
                },
                "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\""
              }
            }
          },
          "title": "VM Instance - CPU utilization [MEAN]"
        },
        "width": 16
      }
    ]
  }
}

ダッシュボードのグラフは、次の例のようになります。

GaugeView を使用した Scorecard ウィジェットを含むダッシュボードの例。

SparkChartViewScorecard を含むダッシュボード

このダッシュボードでは、前の例のゲージがスパークラインに置き換えられます。SparkChartView オブジェクトでは、スコアカードに折れ線グラフまたは棒グラフを作成できます。この例では折れ線を使用しています。値がしきい値に違反しない限り、緑色になります。スパークラインを追加するには、前のグラフの gaugeView JSON オブジェクトを次のように置き換えます。

  "sparkChartView": {
    "sparkChartType": "SPARK_LINE"
  },

ダッシュボードの表示は、次の例のようになります。

GaugeView を使用した Scorecard ウィジェットを含むダッシュボードの例。

PieChart ウィジェットを含むダッシュボード

ダッシュボードでは、円グラフを使用してデータを表示できます。各時系列は、円グラフに 1 つのスライスをもたらします。円グラフには時系列のデータは表示されません。最新の値のみが表示されます。

すべての円グラフは PieChart ウィジェットで指定されます。 最新の測定値の合計を表示するようにグラフを構成するには、chartType フィールドを DONUT に設定します。それ以外の場合は、このフィールドに PIE の値を設定します。

"pieChart": {
  "chartType": "DONUT",
},

次の例では、2 つの円グラフを含むダッシュボードを構成し、1 つの円グラフをドーナツとして構成しています。

{
  "dashboardFilters": [],
  "displayName": "Example Pie Donut",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    }
                  }
                }
              }
            ]
          },
          "title": "VM Instance - Disk read bytes [MEAN]"
        },
        "width": 24
      },
      {
        "height": 16,
        "widget": {
          "pieChart": {
            "chartType": "PIE",
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_MEAN"
                    }
                  }
                }
              }
            ]
          },
          "title": "VM Instance - Disk read bytes [MEAN]"
        },
        "width": 24,
        "xPos": 24
      },
    ]
  }
}

次のスクリーンショットに示すように、両方のウィジェットにはデータが円グラフとして表示され、1 つのウィジェットには最新の値の合計が表示されます。

**PieChart** ウィジェットの例。

TimeSeriesTable ウィジェットを含むダッシュボード

ダッシュボードでは、表形式でデータを表示できます。ここでは、一意のラベル値の組み合わせごとに 1 行が表示されます。テーブルでは時系列でデータが表示されるのではなく、最新の値または集計値が表示されます。

すべてのテーブルは TimeSeriesTable ウィジェットで指定されます。

  • 表示する時系列を構成するには、dataSets フィールドを使用します。dataSets 配列の各オブジェクトは、単一の指標タイプに対応しています。 複数の指標タイプをクエリすると、Google Cloud コンソールには、各クエリの最新の値が同じテーブル行に表示されます。詳細については、テーブルが複数の指標タイプからデータをマージする仕組みをご覧ください。

    • TimeSeriesQuery フィールドは指標タイプを指定します。
    • ダッシュボードで設定された期間の値でデータが集計された集計値をテーブルに表示する場合は、timeSeriesQuery.outputFullDuration フィールドを true に設定します。
  • 表示する行の最大数を構成するには、pickTimeSeriesFilter フィールドを設定します。たとえば、過去 10 分間の平均値が最大の 2 つの時系列のみを表示するには、次を含めます。

    "pickTimeSeriesFilter": {
        "direction": "TOP",
        "numTimeSeries": 2,
        "rankingMethod": "METHOD_MEAN"
    },
    

    pickTimeSeriesFilter フィールドを省略すると、テーブルには最大 300 行が表示されます。

  • テーブルでのデータの表示方法を構成するには、metricVisualization フィールドを使用します。

    • 「25%」などの値のみを表示するには、このフィールドを省略するか、値を "NUMBER" に設定します。この構成を使用すると、Google Cloud Console にウィジェットが [テーブル] ウィジェットとして表示されます。
    • 値と、有効な値の範囲と比較した値の視覚的なインジケーターを表示するには、このフィールドの値を "BAR" に設定します。この構成を使用すると、Google Cloud コンソールにウィジェットが [トップリスト] ウィジェットとして表示されます。
  • 表示する列と列のプロパティを構成するには、columnSettings 配列を使用します。このフィールドが指定されていない場合、テーブルにはラベルごとに 1 つの列が表示されます。

    "column" フィールドの値は、ラベルキーまたは value(時系列の最新値を参照)に設定する必要があります。列の表示名を設定したり、テーブル セル内のデータの配置を構成したりできます。

    • 列見出しをカスタマイズするには、displayName フィールドを設定します。
    • 値としきい値の比較に基づいて最新の値を表示するセルに色を付けるには、thresholds オブジェクトを追加します。
    • テキストの配置を変更するには、alignment フィールドを追加します。

    次の例は、2 つの列を示しています。

    "columnSettings": [
      {
        "column": "device_name",
        "displayName": "Device",
        "visible": true
      },
      {
        "alignment": "CENTER",
        "column": "value",
        "displayName": "Disk Write Bytes",
        "thresholds": [
          {
            "color": "YELLOW",
            "direction": "ABOVE",
            "value": 4000
          },
          {
            "color": "RED",
            "direction": "ABOVE",
            "value": 5000
          }
        ],
        "visible": true
      }
    ],
    

次の JSON は、2 つのテーブルを含むダッシュボードを表しています。最初のテーブルには、インスタンスから読み取られたバイト数とインスタンスに書き込まれたバイト数の 2 つの指標タイプが表示されます。集計値が参照バーとともに表示されます。2 つ目の表には、1 つの指標タイプの最新の値が表示されます。値列は、値としきい値の比較に基づいてセルに色分けするように構成されています。

{
  "displayName": "Example",
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "width": 44,
        "height": 17,
        "widget": {
          "title": "VM Instance - Disk read bytes [RATE], Disk write bytes [RATE]",
          "timeSeriesTable": {
            "dataSets": [
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "groupByFields": []
                    },
                    "pickTimeSeriesFilter": {
                      "rankingMethod": "METHOD_MEAN",
                      "numTimeSeries": 30,
                      "direction": "TOP"
                    }
                  },
                  "unitOverride": "",
                  "outputFullDuration": true
                },
                "tableTemplate": "",
                "minAlignmentPeriod": "60s"
              },
              {
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\"",
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE",
                      "groupByFields": []
                    },
                    "pickTimeSeriesFilter": {
                      "rankingMethod": "METHOD_MEAN",
                      "numTimeSeries": 30,
                      "direction": "TOP"
                    }
                  },
                  "unitOverride": "",
                  "outputFullDuration": true
                },
                "tableTemplate": "",
                "minAlignmentPeriod": "60s"
              }
            ],
            "metricVisualization": "BAR",
            "columnSettings": [
              {
                "column": "Name (from instance_id)",
                "visible": true
              },
              {
                "column": "zone",
                "visible": true
              },
              {
                "column": "device_name",
                "visible": true
              },
              {
                "column": "storage_type",
                "visible": true
              },
              {
                "column": "device_type",
                "visible": true
              },
              {
                "column": "value",
                "visible": true,
                "displayName": "Read bytes"
              },
              {
                "column": "value-1",
                "visible": true,
                "displayName": "Written bytes"
              }
            ],
            "opsAnalyticsSettings": {
              "maxRows": "0",
              "showFilterBar": false,
              "pageSize": "0"
            },
            "displayColumnType": false
          },
          "id": ""
        }
      },
      {
        "yPos": 17,
        "width": 44,
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "device_name",
                "displayName": "Device",
                "visible": true
              },
              {
                "alignment": "LEFT",
                "column": "instance_name",
                "displayName": "Instance name",
                "visible": true
              },
              {
                "column": "storage_type",
                "displayName": "Storage type",
                "visible": true
              },
              {
                "column": "device_type",
                "displayName": "Device Type",
                "visible": true
              },
              {
                "alignment": "CENTER",
                "column": "value",
                "displayName": "Disk Write Bytes",
                "thresholds": [
                  {
                    "color": "YELLOW",
                    "direction": "ABOVE",
                    "label": "",
                    "value": 4000
                  },
                  {
                    "color": "RED",
                    "direction": "ABOVE",
                    "label": "",
                    "value": 5000
                  }
                ],
                "visible": true
              },
              {
                "alignment": "LEFT",
                "column": "Name (from instance_id)",
                "displayName": "ID",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "displayColumnType": false,
            "metricVisualization": "NUMBER",
            "opsAnalyticsSettings": {
              "maxRows": "0",
              "pageSize": "0",
              "showFilterBar": false
            }
          }
        }
      }
    ]
  },
  "dashboardFilters": [],
  "labels": {}
}

次のスクリーンショットは、前述で定義したテーブルを示しています。

テーブル ウィジェットを含むダッシュボードの例。

Text ウィジェットを含むダッシュボード

この例では、Text ウィジェットを含むダッシュボードが表示されます。

{
  "dashboardFilters": [],
  "displayName": "DB2+TE",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
    ...
      {
        "height": 16,
        "widget": {
          "text": {
            "content": "# Support information\n\n\nContact information: my-support-team@example.com\nOnline help: [Playbooks](https://example.com)\n\n",
            "format": "MARKDOWN",
            "style": {
              "backgroundColor": "",
              "fontSize": "FS_LARGE",
              "horizontalAlignment": "H_LEFT",
              "padding": "P_EXTRA_SMALL",
              "textColor": "",
              "verticalAlignment": "V_TOP"
            }
          }
        },
        "width": 24,
        "yPos": 14
      }
    ]
  }
}

テキスト ウィジェットは次の例のようになります。

テキスト ウィジェットの例。

AlertChart ウィジェットを含むダッシュボード

このダッシュボードには、AlertChart ウィジェットを含むダッシュボードが表示されます。

{
  "category": "CUSTOM",
  "displayName": "Alerting policy chart example",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "alertChart": {
            "name": "projects/my-project/alertPolicies/14205854094151528373"
          }
        },
        "width": 6,
      }
    ]
  }
}

他のダッシュボード ウィジェットとは異なり、これらのウィジェットではタイトルや指標フィルタを指定しません。代わりに、アラート ポリシーのリソース名を指定します。name フィールドの最後のエントリは、アラート ポリシー ID です。

ダッシュボードのグラフは、次の例のようになります。

アラート ポリシーのグラフの例。

この例では、アラート ポリシーにより、2 つの異なる仮想マシンの CPU 使用率がモニタリングされています。点線は、条件のしきい値(50% に設定されている)を示しています。No incidents というラベルが付いた緑色のチップは、アラート ポリシーに対応待ちのインシデントがないことを示しています。インシデント チップの上にポインタを置くと、基盤となるアラート ポリシーにリンクするダイアログが開きます。

ErrorReportingPanel ウィジェットを含むダッシュボード

このダッシュボードには、ErrorReportingPanel ウィジェットを含むダッシュボードが表示されます。

{
  "dashboardFilters": [],
  "displayName": "Error reporting widget",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "errorReportingPanel": {
            "projectNames": [
              "projects/my-project"
            ],
            "services": [],
            "versions": []
          },
          "title": "Error Reporting Panel"
        },
        "width": 24,
      }
    ]
  }
}

Error-Reporting パネルの高さは 16 ユニット以上、幅は 24 ユニット以上に構成することをおすすめします。上記の例では、ウィジェットの高さは 16 ユニット、幅は 24 ユニットです。

Error-Reporting パネルには、選択したプロジェクトのエラーグループが表示されます。このパネルでは、エラーグループを特定のリソースタイプ、サービス、サービスのバージョンに制限できます。次の例は、Error Reporting パネルを示します。

Error-Reporting パネルの構成ペインの例。

IncidentList ウィジェットを含むダッシュボード

このダッシュボードには、IncidentList ウィジェットを含むダッシュボードが表示されます。

{
  "category": "CUSTOM",
  "dashboardFilters": [],
  "displayName": "Incident widget",
  "labels": {},
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 5,
        "widget": {
          "incidentList": {
            "monitoredResources": [],
            "policyNames": []
          },
          "title": "Incidents"
        },
        "width": 8,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

前述の例では、title フィールドを Incidents に設定し、gce_instance タイプのリソースのすべてのインシデントを表示するようにウィジェットを構成しています。このウィジェットを構成するときに、複数のアラート ポリシーまたは複数のリソースタイプを選択できます。

ダッシュボードのインシデント ウィジェットは、次の例のようになります。

インシデント ウィジェットの例。

LogsPanel ウィジェットを含むダッシュボード

このダッシュボードには、LogsPanel ウィジェットを含むダッシュボードが表示されます。

{
  "category": "CUSTOM",
  "displayName": "Logs Panel",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "logsPanel": {
            "filter": "",
            "resourceNames": [
              "projects/012012012012"
            ]
          },
          "title": "Logs Panel"
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

ログパネルの高さは 3 ユニット以上、幅は 4 ユニット以上に構成することをおすすめします。上記の例では、ウィジェットの高さは 4 ユニット、幅は 6 ユニットです。

ログパネルには、resourceNames フィールドに記述された Google Cloud プロジェクトのログが表示されます。上記の例では、1 つのプロジェクトのみが指定されていますが、このリストには複数のプロジェクトを含めることができます。

ログパネルは次の例のようになります。

ログパネル ウィジェットを使用したダッシュボードの例。

トラブルシューティング情報については、[ログ] パネルでダッシュボードを作成するための API 呼び出しが失敗するをご覧ください。

CollapsibleGroup ウィジェットを含むダッシュボード

このダッシュボードには、CollapsibleGroup ウィジェットを含むダッシュボードが表示されます。

{
  "category": "CUSTOM",
  "displayName": "Group testing",
  "mosaicLayout": {
    "columns": 12,
    "tiles": [
      {
        "height": 4,
        "widget": {
          "collapsibleGroup": {
            "collapsed": false
          },
          "title": "My group"
        },
        "width": 12,
        "xPos": 0,
        "yPos": 0
      },
      {
        "height": 4,
        "widget": {
          "title": "VM Instance - CPU utilization [MEAN]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "apiSource": "DEFAULT_CLOUD",
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_MEAN"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" resource.type=\"gce_instance\"",
                    "secondaryAggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_NONE",
                      "perSeriesAligner": "ALIGN_NONE"
                    }
                  }
                }
              }
            ],
            "thresholds": [],
            "timeshiftDuration": "0s",
            "yAxis": {
              "label": "y1Axis",
              "scale": "LINEAR"
            }
          }
        },
        "width": 6,
        "xPos": 0,
        "yPos": 0
      }
    ]
  }
}

前述の例では、折りたたみ可能なグループ ウィジェットに、VM インスタンスの CPU 使用率を示す単一のグラフが含まれています。折りたたみ可能なグループ ウィジェットは、テーブルの行全体にまたがります。グループの(x、y)位置と高さの指定に、ウィジェットの(x、y)位置が含まれている場合、ウィジェットはグループに含まれます。上の例では、グループは(0,0)の位置にあり、高さは 4 です。xyChart は(0,0)の位置にあるため、グループに含まれます。ただし、そのグラフの位置が (0,5) に変更されると、グラフはグループから除外されます。最後に、ウィジェットの(x、y)位置によりウィジェットがグループに含まれる場合、折りたたみ可能なグループ ウィジェットの高さが拡張されることがあります。

ダッシュボードにグループ ウィジェットを含めるには、ダッシュボードに MosaicLayout が必要です。

閉じることが可能なグループ ウィジェットは、次の例のようになります。

閉じることが可能なグループ ウィジェットを含むダッシュボードの例。

SingleViewGroup ウィジェットを含むダッシュボード

SingleViewGroup ウィジェットには、一度につき 1 つのグループの 1 つのメンバーが表示されます。ユーザーはグループのメンバーであるグラフなどのウィジェットを指定します。また、SingleViewGroup ウィジェットのメニューを使用して、グループ内のどのウィジェットを表示するかを制御します。

次のダッシュボードでは、SingleViewGroup ウィジェットを含むダッシュボードを表示しています。

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "singleViewGroup": {},
          "title": "Untitled group"
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk read bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/read_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 16
      },
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 16
      }
    ]
  }
}

前の例で示すように、tiles 配列には 1 つの SingleViewGroup オブジェクトが含まれています。ただし、このオブジェクトがどのオブジェクトを含んでいるのかは特定されません。代わりに、SingleViewGroup オブジェクトのメンバーであるかどうかは、width および yPos フィールドの値によって決まります。width フィールドと yPos フィールドの値が SingleViewGroup オブジェクトの値と一致するオブジェクトは、SingleViewGroup オブジェクトに含まれます。前の例では、SingleViewGroup オブジェクトに 2 つのグラフが含まれています。

SectionHeader ウィジェットを含むダッシュボード

SectionHeader ウィジェットは、ダッシュボードに水平方向の分割線を作成し、ダッシュボードのコンテンツ テーブルにエントリを作成します。目次内のエントリをカスタマイズして、ウィジェットに追加情報を含めることができます。また、ウィジェットを構成して、セクション ヘッダー エントリの後に目次に分割線を追加することもできます。

次のダッシュボードには、1 つのグラフと SectionHeader ウィジェットを含むダッシュボードが表示されます。

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "VM Instance - Disk write bytes [RATE]",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "perSeriesAligner": "ALIGN_RATE"
                    },
                    "filter": "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" resource.type=\"gce_instance\""
                  }
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        },
        "width": 24,
        "yPos": 4
      },
      {
        "height": 4,
        "widget": {
          "sectionHeader": {
            "dividerBelow": true,
            "subtitle": "Instance metrics"
          },
          "title": "Metrics"
        },
        "width": 48
      }
    ]
  }
}

SectionHeader オブジェクトでは、title フィールドの値がウィジェットと目次に表示されます。subtitle フィールドの値は、ウィジェットによってのみ表示されます。dividerBelow の値が true の場合は、目次に分割線が追加されます。

SLO ウィジェットを含むダッシュボード

このダッシュボードには、SLO ウィジェットを含むダッシュボードが表示されます。

{
  "dashboardFilters": [],
  "displayName": "Example",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 16,
        "widget": {
          "title": "SLO Error Budget: 99.5% - Distribution Cut - Calendar month",
          "xyChart": {
            "chartOptions": {
              "mode": "COLOR"
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "Remaining error requests before SLO is burned",
                "measures": [],
                "plotType": "LINE",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "timeSeriesFilter": {
                    "aggregation": {
                      "perSeriesAligner": "ALIGN_NEXT_OLDER"
                    },
                    "filter": "select_slo_budget(\"projects/Project_Number/services/SERVICE_ID/serviceLevelObjectives/SLO_ID\")",
                  },
                  "unitOverride": "1"
                }
              }
            ],
            "thresholds": []
          }
        },
        "width": 24
      }
    ]
  }
}

前述の JSON に示すように、SLO グラフは XyChart オブジェクトとして表されます。これらのオブジェクトはすべての集計フィールドとしきい値を指定します。filter フィールドの値は時系列セレクタです。これらのセレクタの詳細については、SLO データの取得をご覧ください。

SLO ウィジェットは次の例のようになります。

SLO ウィジェットを含むダッシュボードの例

空白のウィジェットを含むダッシュボード

次の例では、空白のプレースホルダ ウィジェットを含むダッシュボードが表示されます。 displayName フィールドの値は、ウィジェットに表示されます。

{
  "displayName": "Demo Dashboard",
  "gridLayout": {
    "widgets": [
      {
        "blank": {}
      }
    ]
  }
}

ダッシュボードの表示は、次の例のようになります。

空白のウィジェットを含むダッシュボードの例。