

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 连接到 Google Cloud Monitoring 数据来源
<a name="using-google-cloud-monitoring-in-grafana"></a>

**注意**  
 在 Grafana 的早期版本中，此数据来源被命名为 Google Stackdriver。

 添加 Google Cloud Monitoring 数据来源，以便为您的 Google Cloud Monitoring 指标构建控制面板。

## 添加数据来源
<a name="google-adding-the-data-source"></a>

1.  选择顶部标题中的 Grafana 图标，打开侧边菜单。

1.  在侧边菜单的**控制面板**链接下，您应该可以找到**数据来源**链接。

1.  选择顶部标题中的 **\$1 添加数据来源**按钮。

1.  从**类型**下拉列表中选择 **Google Cloud Monitoring**。

1.  上传或粘贴服务账户密钥文件。有关创建服务账户密钥文件的步骤，请参阅本文档稍后的部分。

**注意**  
 如果您在侧边菜单中看不到**数据来源**链接，则说明您当前的用户没有`Admin`角色。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称引用数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  Service Account Key  |  GCP 项目的服务账户密钥文件。有关如何创建该文件的说明，请参阅本文档稍后的部分。 | 

## 身份验证
<a name="google-authentication"></a>

 可通过两种方式对 Google Cloud Monitoring 插件进行身份验证
+ 上传 Google JWT 文件
+ 从 Google 元数据服务器自动检索凭证

后一个选项仅在 GCE 虚拟机上运行 Grafana 时可用。

### 使用 Google 服务账户密钥文件
<a name="using-a-google-service-account-key-file"></a>

 要使用 Google Cloud Monitoring API 进行身份验证，您必须为要显示其数据的项目创建 Google Cloud Platform（GCP）服务账户。Grafana 数据来源与一个 GCP 项目集成。要可视化来自多个 GCP 项目的数据，必须为每个 GCP 项目创建一个数据来源。

#### 启用 APIs
<a name="google-enable-apis"></a>

 APIs 必须先启用以下选项：
+  [Monitoring API](https://console.cloud.google.com/apis/library/monitoring.googleapis.com) 
+  [Cloud Resource Manager API](https://console.cloud.google.com/apis/library/cloudresourcemanager.googleapis.com) 

 选择列出的链接，然后选择**启用**按钮。

#### 为项目创建 GCP 服务账户
<a name="create-a-gcp-service-account-for-a-project"></a>

1.  导航到 “[APIs和服务凭证” 页面](https://console.cloud.google.com/apis/credentials)。

1.  选择**创建凭据** dropdown/button 并选择**服务帐号密钥**选项。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1create\$1service\$1account\$1button.png “class= “docs-image—no-shadow” caption= “创建服务账户按钮” >\$1\$1 

1.  在**创建服务账户密钥**页面上，选择密钥类型 `JSON`。然后，在**服务账户**下拉列表中，选择**新建服务账户**选项。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1create\$1service\$1account\$1key.png “class= “docs-image—no-shadow” caption= “创建服务账户密钥” >\$1\$1 

1.  一些新的字段将会出现。在**服务账户名称**字段中填写服务账户的名称，然后从**角色**下拉列表中选择**监控查看者**角色。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1service\$1account\$1choose\$1role.png “class= “docs-image—no-shadow” caption= “选择角色” >\$1\$1 

1.  选择**创建**按钮。一个 JSON 密钥文件将会创建并下载到您的计算机上。将此文件存储在安全的地方，因为其允许访问 Google Cloud Monitoring 数据。

1.  将其上传到数据来源**配置**页面上的 Grafana。您可以上传文件或粘贴文件内容。

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1grafana\$1upload\$1key.png “class= “docs-image—no-shadow” caption= “将服务密钥文件上传到 Grafana” >\$1\$1 

1.  文件内容将会加密并保存在 Grafana 数据库中。上传文件后不要忘记保存！

    \$1\$1< docs-imagebox img=”/img/docs/v71/cloudmonitoring\$1grafana\$1key\$1uploaded.png “class= “docs-image—no-shadow” caption= “服务密钥文件已上传到 Grafana” >\$1\$1 

## 使用 查询编辑器
<a name="google-using-the-query-editor"></a>

 Google Cloud Monitoring 查询编辑器让您可以构建两种类型的查询：**指标**和**服务级别目标（SLO）**。两种类型都将返回时间序列数据。

### 指标查询
<a name="google-metric-queries"></a>

 指标查询编辑器允许您 group/aggregate 按标签和时间选择指标，并使用过滤器指定要在结果中显示哪个时间序列。

 要创建指标查询，请按照以下步骤操作：

1.  在**查询类型**下拉列表中选择**指标**选项。

1.  从**项目**下拉列表中选择一个项目。

1.  从**服务**下拉列表中选择 Google Cloud Platform 服务。

1.  从**指标**下拉列表中选择一个指标。

1.  要添加或移除 filter 或 group by 子句，请使用筛选条件和分组依据部分中的加号和减号图标。此为可选步骤。

 Google Cloud Monitoring 指标具有不同的类型（GAUGE、DELTA、CUMULATIVE），并且这些类型支持不同的聚合选项（reducer 和 aligner）。Grafana 查询编辑器显示所选指标的可用聚合方法列表，并在选择指标时设置默认 reducer 和 aligner。查询编辑器还会自动选择 Y 轴的单位。

#### 筛选条件
<a name="google-filter"></a>

 要添加筛选条件，请选择加号图标，选择要筛选的字段，然后输入筛选条件值。例如，输入 `instance_name = grafana-1`。您可以选择筛选条件名称，然后选择 `--remove filter--` 来移除筛选条件。

##### 简单通配符
<a name="google-simple-wildcards"></a>

 当运算符设置为 `=` 或 `!=` 时，可将通配符添加到筛选条件值字段。例如，`us-*` 捕获所有以 "us-" 开头的值，`*central-a` 捕获所有以 "central-a" 结尾的值，而 `*-central-*` 捕获具有子字符串 `central-` 的所有值。简单通配符比正则表达式的开销更小。

##### 正则表达式
<a name="google-regular-expressions"></a>

 当运算符设置为 `=~` 或 `!=~` 时，可将正则表达式添加到筛选条件值字段。例如，`us-central[1-3]-[af]` 匹配所有以 "us-central" 开头的值，后跟 1 到 3 之间的数字、短划线以及 "a" 或 "f"。创建正则表达式时，不需要使用前导和尾部斜杠。

#### 聚合
<a name="google-aggregation"></a>

 您可以使用“聚合”字段根据常见统计数据合并时间序列。有关聚合的更多信息，请参阅[聚合选项](https://cloud.google.com/monitoring/charts/metrics-selector#aggregation-options)。

 `Aligner` 字段让您可以在相同的按时间间隔分组之后对齐多个时间序列。有关 aligner 的更多信息，请参阅[对齐指标选择器](https://cloud.google.com/monitoring/charts/metrics-selector#alignment)。

##### 对齐周期和按时间分组
<a name="alignment-periodgroup-by-time"></a>

 如果选择聚合，`Alignment Period` 将会按时间对指标分组。默认情况下，使用 GCP Google Cloud Monitoring 默认分组（从而将 Grafana 中的图形与 Google Cloud Monitoring UI 中的图形进行比较）。该选项称为 `cloud monitoring auto`，默认值为：
+  对于时间范围 < 23 小时，则为 1m 
+  对于时间范围 >= 23 小时且 < 6 天，则为 5m 
+  对于时间范围 >= 6 天，则为 1h 

 另一个自动选项是 `grafana auto`。这将根据所选的时间范围和图形面板的宽度自动设置按时间分组。有关更多信息，请参阅 [添加间隔变量](variables-types.md#add-an-interval-variable)。

 也可以选择按固定时间间隔分组，如 `1h` 或 `1d`。

#### 分组依据
<a name="google-group-by"></a>

 按资源或指标标签分组，以减少时间序列的数量，并按分组依据聚合结果。例如，按 instance\$1name 分组以查看计算实例的聚合指标。

##### 元数据标签
<a name="google-metadata-labels"></a>

 资源元数据标签包含在 Google Cloud 中唯一地标识资源的信息。仅当元数据标签是时间序列请求中**分组依据**分段的一部分时，才会在时间序列响应中返回元数据标签。由于没有用于检索元数据标签的 API，因此无法使用适用于所选服务和指标的元数据标签填充“分组依据”下拉列表。但**分组依据**字段下拉列表含有预定义的常见系统标签列表。

 用户标签无法预定义，但可以在**分组依据**字段中手动输入。如果**分组依据**分段中包含元数据标签、用户标签或系统标签，则可以根据标签创建筛选条件，并在**别名**字段扩展其值。

#### 别名模式
<a name="google-alias-patterns"></a>

 您可以使用“别名依据”字段控制图例键的格式。默认情况下显示指标名称和标签。可能很长且难以阅读。在别名字段中使用以下模式，您可以根据需要设置图例键的格式。

#### 指标类型模式
<a name="metric-type-patterns"></a>


|  别名模式  |  说明  |  示例结果  | 
| --- | --- | --- | 
|  \$1\$1metric.type\$1\$1  |  返回完整的指标类型。 |  compute.googleapis.com/instance/cpu/utilization  | 
|  \$1\$1metric.name\$1\$1  |  返回指标名称部分。 |  instance/cpu/utilization  | 
|  \$1\$1metric.service\$1\$1  |  返回服务部分。 |  compute  | 

#### 标签模式
<a name="google-label-patterns"></a>

 在“分组依据”下拉列表中，您可以查看指标列表和指标的资源标签。可使用别名模式将其包含在图例键中。


|  别名模式格式  |  说明  |  别名模式示例  |  示例结果  | 
| --- | --- | --- | --- | 
|  \$1\$1metric.label.xxx\$1\$1  |  返回指标标签值。 |  \$1\$1metric.label.instance\$1name\$1\$1  |  grafana-1-prod  | 
|  \$1\$1resource.label.xxx\$1\$1  |  返回资源标签值。 |  \$1\$1resource.label.zone\$1\$1  |  us-east1-b  | 
|  \$1\$1metadata.system\$1labels.xxx\$1\$1  |  返回元数据系统标签值。 |  \$1\$1metadata.system\$1labels.name\$1\$1  |  grafana  | 
|  \$1\$1metadata.user\$1labels.xxx\$1\$1  |  返回元数据用户标签值。 |  \$1\$1metadata.user\$1labels.tag\$1\$1  |  production  | 

 示例别名依据：`{{metric.type}} - {{metric.label.instance_name}}`

 示例结果：`compute.googleapis.com/instance/cpu/usage_time - server1-prod`

 还可以解析受监控资源类型的名称。


|  别名模式格式  |  说明  |  示例结果  | 
| --- | --- | --- | 
|  \$1\$1resource.type\$1\$1  |  返回受监控资源类型的名称。 |  gce\$1instance  | 

 示例别名依据：`{{resource.type}} - {{metric.type}}`

 示例结果：`gce_instance - compute.googleapis.com/instance/cpu/usage_time`

### SLO 查询
<a name="slo-service-level-objective-queries"></a>

**注意**  
 SLO 查询仅在 Grafana v7.0\$1 中可用 

Google Cloud Monitoring 数据来源中的 SLO 查询生成器允许以时间序列格式显示 SLO 数据。要了解服务监控的基本概念，请参阅 Google Cloud Monitoring [官方文档](https://cloud.google.com/monitoring/service-monitoring)。

#### 创建 SLO 查询
<a name="how-to-create-an-slo-query"></a>

 要创建 SLO 查询，请按照以下步骤操作：

1.  在**查询类型**下拉列表中选择**服务级别目标（SLO）**选项。

1.  从**项目**下拉列表中选择一个项目。

1.  从**服务**下拉列表中选择 [SLO 服务](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)。

1.  从 **SLO** 下拉列表中选择 [SLO](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)。

1.  从**选择器**下拉列表中选择[时间序列选择器](https://cloud.google.com/monitoring/service-monitoring/timeseries-selectors#ts-selector-list)。

 Grafana 中显示了时间序列选择器的友好名称。下表显示了从友好名称到服务监控文档中使用的系统名称的映射。


|  选择器下拉列表值  |  使用相应的时间序列选择器  | 
| --- | --- | 
|  SLI 值  |  select\$1slo\$1health  | 
|  SLO 合规性  |  select\$1slo\$1compliance  | 
|  SLO 错误预算剩余  |  select\$1slo\$1budget\$1fraction  | 

#### SLO 查询的别名模式
<a name="alias-patterns-for-slo-queries"></a>

 您可以使用“别名依据”字段控制 SLO 查询图例键的格式。


|  别名模式  |  说明  |  示例结果  | 
| --- | --- | --- | 
|  \$1\$1project\$1\$1  |  返回 GCP 项目名称。 |  myProject  | 
|  \$1\$1service\$1\$1  |  返回服务名称。 |  myService  | 
|  \$1\$1slo\$1\$1  |  返回 SLO。 |  latency-slo  | 
|  \$1\$1selector\$1\$1  |  返回选择器。 |  select\$1slo\$1health  | 

#### SLO 查询的对齐周期和按时间分组
<a name="alignment-periodgroup-by-time-for-slo-queries"></a>

 SLO 查询使用与指标查询相同的对齐周期功能。有关更多信息，请参阅 [指标查询](#google-metric-queries)。

## 模板化
<a name="google-templating"></a>

 您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

 有关模板化和模板变量的更多信息，请参阅 [模板和变量](templates-and-variables.md)。

### 查询变量
<a name="google-query-variable"></a>

 您可以使用*查询*类型的变量查询 Google Cloud Monitoring，以获取各种类型的数据。Google Cloud Monitoring 数据来源插件提供了以下 `Query Types`。


|  Name  |  说明  | 
| --- | --- | 
|  Metric Types  |  返回可用于指定服务的指标类型名称列表。 | 
|  Labels Keys  |  返回指定指标中 metric label 和 resource label 的键列表。 | 
|  Labels Values  |  返回指定指标中标签的值列表。 | 
|  Resource Types  |  返回指定指标的资源类型列表。 | 
|  Aggregations  |  返回指定指标的聚合列表（跨序列 reducer）。 | 
|  Aligners  |  返回指定指标的 aligner 列表（按序列 aligner）。 | 
|  Alignment periods  |  返回 Grafana 的 Google Cloud Monitoring 查询编辑器中可用的所有对齐周期列表。 | 
|  Selectors  |  返回可用于 SLO（服务级别目标）查询的选择器列表。 | 
|  SLO Services  |  返回可用于 SLO 查询的 Service Monitoring 服务列表。 | 
|  Service Level Objectives (SLO)  |  返回指定 SLO 服务的 SLO 列表。 | 

### 在查询中使用变量
<a name="google-using-variables-in-queries"></a>

 共有两种语法：
+  `$<varname>` 示例：`metric.label.$metric_label`
+  `[[varname]]` 示例：`metric.label.[[metric_label]]`

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。启用*多值*或*包含所有值*选项后，Grafana 会将标签从纯文本转换为兼容正则表达式的字符串，这意味着您必须使用 `=~` 而不是 `=`。

## Annotations
<a name="google-annotations"></a>

 您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。注释呈现的开销很大，因此必须限制返回的行数。目前尚不支持显示 Google Cloud Monitoring 注释和事件，但其能够与 Google Cloud Monitoring 中的[自定义指标](https://cloud.google.com/monitoring/custom-metrics/)配合使用。

有关注释的详细信息，请参阅[Annotations](dashboard-annotations.md)。

 使用注释的查询编辑器，您可以选择指标和筛选条件。**标题**和**文本**字段支持模板化，可使用从查询返回的数据。例如，“标题”字段可能包含以下文本：

 `{{metric.type}} has value: {{metric.value}}` 

 示例结果：`monitoring.googleapis.com/uptime_check/http_status has this value: 502`

### 注解查询编辑器的模式
<a name="patterns-for-the-annotation-query-editor"></a>


|  别名模式格式  |  说明  |  别名模式示例  |  示例结果  | 
| --- | --- | --- | --- | 
|  \$1\$1metric.value\$1\$1  |  指标/点的值。 |  \$1\$1metric.value\$1\$1  |  555  | 
|  \$1\$1metric.type\$1\$1  |  返回完整的指标类型。 |  \$1\$1metric.type\$1\$1  |  compute.googleapis.com/instance/cpu/utilization  | 
|  \$1\$1metric.name\$1\$1  |  返回指标名称部分。 |  \$1\$1metric.name\$1\$1  |  instance/cpu/utilization  | 
|  \$1\$1metric.service\$1\$1  |  返回服务部分。 |  \$1\$1metric.service\$1\$1  |  compute  | 
|  \$1\$1metric.label.xxx\$1\$1  |  返回指标标签值。 |  \$1\$1metric.label.instance\$1name\$1\$1  |  grafana-1-prod  | 
|  \$1\$1resource.label.xxx\$1\$1  |  返回资源标签值。 |  \$1\$1resource.label.zone\$1\$1  |  us-east1-b  | 

## 从 Grafana 面板到 Google Cloud Console 中 Metrics Explorer 的深层链接
<a name="deep-linking-from-grafana-panels-to-the-metrics-explorer-in-google-cloud-console"></a>

**注意**  
 此功能仅适用于指标查询。

 在面板中选择一个时间序列，即可看到一个上下文菜单，其中包含指向“在 Google Cloud Console 的 Metrics Explorer 中查看”的链接。选择此链接将在 Google Cloud Console 中打开 Metrics Explorer，并从其中的 Grafana 面板运行查询。此链接会先将用户导航到 Google Account Chooser。成功选择账户后，用户将被重定向到 Metrics Explorer。提供的链接对任何账户都有效，但仅当您的账户有权访问查询中指定的 GCP 项目时，才会显示查询。