このページでは、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
フィールドには、DashboardAnnotations
オブジェクトのインスタンスが含まれます。このオブジェクトには次の 2 つのフィールドが含まれています。
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
}
]
}
}
ダッシュボードのグラフは、次の例のようになります。
次のセクションでは、ログ分析グラフ ウィジェットを作成する方法、グラフにしきい値を表示する方法、グラフで左 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": {}
}
ダッシュボードのグラフは、次の例のようになります。
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 軸が使用されます。
ダッシュボードのグラフは、次の例のようになります。
複数の指標タイプを表示し、左軸と右軸を使用するグラフを作成できます。上の例は、単一の指標タイプ、つまり dataSets
配列に 1 つの要素が含まれるグラフを示しています。2 つの指標タイプをグラフに表示する場合、dataSets
配列には 2 つの要素が含まれ、各要素に targetAxis
が指定されます。
STACKED_AREA PlotType
の XyChart
を含むダッシュボード
このダッシュボードには、STACKED_AREA
PlotType
を含む 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
}
]
}
}
ダッシュボードのグラフは、次の例のようになります。
STACKED_BAR PlotType
の XyChart を含むダッシュボード
このダッシュボードには、STACKED_BAR
PlotType
を含む 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
}
]
}
}
ダッシュボードの表示は、次の例のようになります。
基本的な 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
}
]
}
}
ダッシュボードの表示は、次の例のようになります。
GaugeView
の Scorecard
を含むダッシュボード
このダッシュボードでは、前の例の基本スコアカードにメーターが追加されます。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
}
]
}
}
ダッシュボードのグラフは、次の例のようになります。
SparkChartView
の Scorecard
を含むダッシュボード
このダッシュボードでは、前の例のメーターをスパークラインに置き換えています。SparkChartView
オブジェクトでは、スコアカードに折れ線グラフまたは棒グラフを作成できます。この例では折れ線を使用しています。値がしきい値に違反していない限り、緑色になります。スパークラインを追加するには、前のグラフの gaugeView
JSON オブジェクトを次のように置き換えます。
"sparkChartView": {
"sparkChartType": "SPARK_LINE"
},
ダッシュボードの表示は、次の例のようになります。
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 つのウィジェットには最新の値の合計が表示されます。
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 コンソールにウィジェットが [トップリスト] ウィジェットとして表示されます。
- 「25%」などの値のみを表示するには、このフィールドを省略するか、値を
表示する列と列のプロパティを構成するには、
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 パネルを示します。
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
ウィジェットは、ダッシュボードに横方向の分割線を作成し、ダッシュボードの目次にエントリを作成します。目次のエントリをカスタマイズし、ウィジェットに追加情報を含めることができます。また、ウィジェットを構成して、セクション ヘッダー エントリの後に目次に分割線を追加することもできます。
このダッシュボードには、単一のグラフと 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 ウィジェットは次の例のようになります。
空白のウィジェットを含むダッシュボード
次の例では、空白のプレースホルダ ウィジェットを含むダッシュボードが表示されます。
displayName
フィールドの値は、ウィジェットに表示されます。
{
"displayName": "Demo Dashboard",
"gridLayout": {
"widgets": [
{
"blank": {}
}
]
}
}
ダッシュボードの表示は、次の例のようになります。