本页面介绍如何使用 Cloud Monitoring API 创建信息中心。对于每个示例,显示 JSON 格式的信息中心定义和相应的信息中心。您可以同时向 Google Cloud CLI 和 Cloud Monitoring API 端点提供 JSON。
Cloud Monitoring 还在 GitHub 上提供了一组精选的信息中心定义。您可以在 Google Cloud 项目中将这些定义安装为自定义信息中心。如需了解此代码库以及如何安装这些信息中心,请参阅安装示例信息中心。
何时使用 API 或 Google Cloud CLI
Cloud Monitoring API 和 Google Cloud CLI 为您提供了一种同时管理多个信息中心的方法。虽然您也可以使用 Google Cloud 控制台管理信息中心,但您会发现使用脚本批量管理自定义信息中心更为轻松。
如果您想将空白占位符窗口微件添加到信息中心,也需要使用 API。
通过 API 使用 MQL 或 PromQL
您可以使用 dashboards.create
方法创建信息中心。您需要向 API 方法传递一个 Dashboard
对象,其中包含信息中心显示的每个微件的条目。
当微件显示时间序列数据(例如图表微件)时,其 Dashboard
对象中的条目包含 TimeSeriesQuery
对象。此对象用于描述要绘制图表的时间序列数据,您可以使用 Monitoring 过滤条件、MQL 查询或 PromQL 查询指定这些数据:
如需使用 Monitoring 过滤器,请填充
timeSeriesField
字段。本页面上的示例使用 Cloud Monitoring 过滤条件。如需使用 MQL 查询,请填充
timeSeriesQueryLanguage
字段。如需了解详情,请参阅构建图表。如需使用 PromQL 查询,请填充
prometheusQuery
字段。如需了解一般信息,请参阅 Cloud Monitoring 中的 PromQL。
信息中心布局
本部分介绍了可用的不同信息中心布局。
GridLayout
布局的信息中心
此信息中心会显示 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
布局的信息中心
此信息中心会显示包含两个微件的 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
布局的信息中心
此信息中心会显示 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
布局的信息中心
此信息中心会显示 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"
}
}
]
}
]
}
}
此信息中心类似于以下示例:
启用信息中心事件,并添加过滤条件和标签
本部分介绍了如何向信息中心添加过滤条件和标签,以及如何配置信息中心以显示事件。
在信息中心内启用事件
您可以通过在 Dashboard
对象中添加 annotations
字段,将信息中心配置为显示事件,例如 Google Kubernetes Engine 更新事件或虚拟机故障事件。annotations
字段包含 DashboardAnnotations
对象的实例,该实例包含两个字段:
defaultResourceName
字段列出了 Google Cloud 项目用于搜索事件的 Dashboard 级默认值。如果您未指定此字段,系统会搜索您选择的项目。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
}
]
}
}
信息中心上的图表类似于以下示例:
下一部分将介绍如何创建 Log Analytics 图表微件、如何在图表中显示阈值,以及如何配置图表是使用左侧 Y 轴还是右侧 Y 轴,或者同时使用这两者。
包含 Log Analytics 图表的信息中心
此信息中心会显示一个包含 Log Analytics 图表的信息中心。示例 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 指定使用左侧 Y 轴,因为它包含 y2Axis
结构。在 targetAxis
字段中,将“Y1”用于右 Y 轴,将“Y2”用于左 Y 轴。如果省略 targetAxis
字段,则使用右 Y 轴。
此信息中心上的图表类似于以下示例:
您可以构建显示多个指标类型且使用左右轴的图表。前面的示例展示了一个包含单个指标类型的图表,即 dataSets
数组中只有一个元素。当您在图表中绘制两种指标类型时,dataSets
数组将包含两个元素,每个元素都指定了其 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 利用率,统计信息摘要图表有两个阈值。一个阈值用黄色来表示 CPU 利用率超过 70%,另一个阈值用红色来表示 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
微件的信息中心
信息中心可以使用饼图显示数据。每个时序都会为饼图贡献一个切片。饼图不会显示一段时间内的数据,而是仅显示最新值。
所有饼图均由 PieChart
微件指定。如需将图表配置为显示最近测量的总和,请将 chartType
字段设置为 DONUT
。否则,请将此字段设置为 PIE
的值。
"pieChart": {
"chartType": "DONUT",
},
以下示例配置了一个包含两个饼图的信息中心,其中一个饼图配置为甜甜圈图:
{
"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
},
]
}
}
如以下屏幕截图所示,这两个微件都以饼图的形式显示数据,其中一个微件显示最新值的总和:
包含 TimeSeriesTable
微件的信息中心
信息中心可以以表格格式显示数据,其中每个唯一标签值组合对应于一行。表格不会显示一段时间内的数据,而是显示最新值或汇总值。
所有表均由 TimeSeriesTable
微件指定:
如需配置要显示的时序,请使用
dataSets
字段。dataSets
数组中的每个对象都对应于单个指标类型。如果您查询多个指标类型,Google Cloud 控制台会尝试在同一表格行中显示每个查询的最新值。如需了解详情,请参阅表格如何合并来自多种指标类型的数据。TimeSeriesQuery
字段用于指定指标类型。- 如果您希望表格显示汇总值(即按信息中心设置的时间范围值汇总数据),请将
timeSeriesQuery.outputFullDuration
字段设置为true
。
如需配置要显示的行数上限,请设置
pickTimeSeriesFilter
字段。例如,如需仅显示过去 10 分钟内平均值最大的两个时间序列,请添加以下代码:"pickTimeSeriesFilter": { "direction": "TOP", "numTimeSeries": 2, "rankingMethod": "METHOD_MEAN" },
如果您省略
pickTimeSeriesFilter
字段,则表格最多可显示 300 行。如需配置表格显示数据的方式,请使用
metricVisualization
字段:- 如需仅显示“25%”等值,请省略此字段或将值设置为
"NUMBER"
。使用此配置时,Google Cloud 控制台会将该微件显示为表格微件。 - 如需显示值以及与可能值范围相比的值的直观指示器,请将此字段的值设置为
"BAR"
。使用此配置时,Google Cloud 控制台会将该微件显示为热门列表微件。
- 如需仅显示“25%”等值,请省略此字段或将值设置为
如需配置要显示的列和列的属性,请使用
columnSettings
数组。如果未指定此字段,则表格会为每个标签显示一列。"column"
字段的值必须设置为标签键或value
,后者是指时序的最新值。您可以为列设置显示名称,还可以配置表格单元格中数据的对齐方式:- 如需自定义列标题,请设置
displayName
字段。 - 如需根据值与阈值的比较情况为显示最新值的单元格着色,请添加
thresholds
对象。 - 如需更改文本对齐方式,请添加
alignment
字段。
以下示例展示了两个列:
"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 描述了一个包含两个表格的信息中心。第一个表格显示了两种指标类型,即从实例读取的字节数和向实例写入的字节数。系统会显示汇总值以及参考条。第二个表格显示了一种指标类型的最新值,并且值列已配置为根据值与阈值的比较结果为单元格设置颜色代码:
{
"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
}
]
}
}
文本 widget 类似于以下示例:
包含 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
字段中的最后一个条目是提醒政策标识符。
信息中心上的图表类似于以下示例:
在此示例中,提醒政策会监控两个不同的虚拟机的 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,
}
]
}
}
我们建议您将错误报告面板的高度配置为至少 16 个单位,将宽度配置为至少 24 个单位。在前面的示例中,微件的高度为 16 个单位,宽度为 24 个单位。
错误报告面板会显示所选项目中的错误组,并且此面板可以将错误组限制为特定资源类型、服务或服务版本。以下示例展示了错误报告面板:
包含 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 项目中的日志。上例仅指定了一个项目;但是,您可以在此列表中添加多个项目。
日志面板类似于以下示例:
如需了解问题排查信息,请参阅使用日志面板创建信息中心的 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
}
]
}
}
在上例中,可收起的组 widget 包含一个用于显示虚拟机实例 CPU 利用率的图表。可收起组 widget 会跨越表格的整行。如果组的 (x,y) 位置和高度规范包含微件的 (x,y) 位置,则该微件包含在组中。在前面的示例中,该组位于 (0,0) 的位置,其高度为 4。xyChart
位于 (0,0) 位置,因此包含在组中。但是,如果将该图表的位置更改为 (0,5),则系统会将该图表从组中排除。最后,当 widget 的 (x,y) 位置导致 widget 包含在组中时,可收起的组 widget 的高度可能会扩展。
如需在信息中心内添加组微件,该信息中心必须包含 MosaicLayout
。
可收起的组 widget 类似于以下示例:
包含 SingleViewGroup
微件的信息中心
SingleViewGroup
widget 一次只会显示一个群组成员。您可以指定属于该组的图表和其他微件。此外,您还可以使用 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
数组包含一个 SingleViewGroup
对象;但是,该对象未指定其包含哪些对象。而是由 width
和 yPos
字段的值决定。SingleViewGroup
SingleViewGroup
对象包含 width
和 yPos
字段的值与 SingleViewGroup
对象的值匹配的对象。在前面的示例中,SingleViewGroup
对象包含两个图表。
包含 SectionHeader
微件的信息中心
SectionHeader
微件会在信息中心内创建一个水平分隔线,并在信息中心的内容表中创建一个条目。您可以自定义目录中的条目,并在微件中添加其他信息。您还可以配置该 widget,以便在目录的部分标题条目后面添加分隔符。
此信息中心示例展示了一个包含一个图表和一个 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": {}
}
]
}
}
此信息中心类似于以下示例: