

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

# 连接到 Graphite 数据来源
<a name="using-graphite-in-AMG"></a>

 Grafana 具有高级 Graphite 查询编辑器，可让您快速浏览指标空间、添加函数、更改函数参数等等。编辑器可处理所有类型的 Graphite 查询。甚至可以通过使用查询引用来处理复杂的嵌套查询。

## Graphite 设置
<a name="graphite-settings"></a>

 要访问 Graphite 设置，请将鼠标悬停在**配置**（齿轮）图标上，选择**数据来源**，然后选择 Graphite 数据来源。


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板和查询中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  |  graphite-web 或 graphite-api 安装的 HTTP 协议、IP 和端口。 | 
|  Access  |  服务器（默认）= 必须可从 Grafana 后端/服务器访问 URL。 | 
|  Auth  |  | 
|  Basic Auth  |  启用对数据来源的基本身份验证。 | 
|  User  |  用于基本身份验证的用户名。 | 
|  Password  |  用于基本身份验证的密码。 | 
|  Custom HTTP Headers  |  选择添加标头以添加自定义 HTTP 标头。 | 
|  Header  |  输入自定义标头名称。 | 
|  Value  |  输入自定义标头值。 | 
|  Graphite details  |  | 
|  Version  |  选择 Graphite 版本。 | 
|  Type  |  选择 Graphite 类型。 | 

 访问模式控制对数据来源请求的处理方式。如果没有其他说明，服务器应该是首选方式。

### 服务器访问模式（默认）
<a name="graphite-server-access-mode-default"></a>

 所有请求都是从浏览器向 Amazon Managed Grafana 发出的，Amazon Managed Grafana 会将请求转发到数据来源，从而规避了可能的跨源资源共享（CORS）要求。如果选择此访问模式，则必须可以从 Amazon Managed Grafana 访问 URL。

### 浏览器访问模式
<a name="graphite-browser-access-mode"></a>

 Amazon Managed Grafana 不支持浏览器直接访问 Graphite 数据来源。

## Graphite 查询编辑器
<a name="graphite-query-editor"></a>

 Grafana 包含一个特定于 Graphite 的查询编辑器，可帮助您构建查询。

 要查看发送到 Graphite 的查询原始文本，请选择**切换文本编辑模式**（铅笔）图标。

### 选择要查询的指标
<a name="graphite-choose-metrics-to-query"></a>

 选择**选择指标**以浏览指标空间。开始后，您可以使用指针或键盘箭头键继续操作。您可以选择通配符，然后继续。

### 函数
<a name="graphite-functions"></a>

 要添加函数，请选择**函数**旁边的加号图标。您可以搜索此函数或从菜单中选择。选择一个函数后，该函数将被添加，而焦点将位于第一个参数的文本框中。要编辑或更改参数，请将其选中，该函数将变成一个文本框。要删除函数，请选择函数名称，然后选择 x 图标。

 某些函数（如 `aliasByNode`）支持第二个可选参数。要添加参数，请将鼠标悬停在第一个参数上，然后选择出现的 `+` 符号。要移除第二个可选参数，请选择该参数，并将其留空。编辑器会将其移除。

### 对标签排序
<a name="graphite-sort-labels"></a>

 如果想要一致的排序，请使用 `sortByName`。如果在多个图形上使用相同的标签，而其排序方式和使用的颜色又不同，就会很麻烦。要解决此问题，请使用 `sortByName()`。

### 嵌套查询
<a name="graphite-nested-queries"></a>

 您可以通过查询所在的行*字母*来引用查询（类似于 Microsoft Excel）。如果向图形中添加第二个查询，则可以键入 \$1A 来引用第一个查询。这是一种构建复合查询的便捷方法。

### 使用通配符避免多次查询
<a name="avoiding-many-queries-by-using-wildcards"></a>

 有时，您可能希望在同一个图形上查看多个时间序列。例如，您可能想查看计算机 CPU 使用情况。最初创建图形时，您可以为每个时间序列添加一个查询，如 `cpu.percent.user.g`、`cpu.percent.system.g` 等。这会导致对数据来源进行 *n* 次查询，效率低下。

 为了提高效率，可以在搜索中使用通配符，在一次查询中返回所有时间序列。例如 `cpu.percent.*.g`。

### 修改表或图表中的指标名称
<a name="modify-the-metric-name-in-my-tables-or-charts"></a>

 使用 `alias` 函数更改 Grafana 表或图形上的指标名称；如 `aliasByNode()` 或 `aliasSub()`。

## 点合并
<a name="graphite-point-consolidation"></a>

 所有 Graphite 指标都经过合并，这样 Graphite 返回的数据点就不会多于图形中的像素。默认情况下，合并是使用 `avg` 函数完成的。您可以通过添加 Graphite consolidateBy 函数来控制 Graphite 合并指标的方式。

**注意**  
 这意味着图例汇总值（最大值、最小值、总计）不能同时全部正确。这些值由 Grafana 在客户端计算。根据合并函数，一次只能有一两个是正确的。

## 合并时间序列
<a name="graphite-combine-time-series"></a>

 要合并时间序列，请在**函数**列表中选择**合并**。

## 数据探索和标签
<a name="data-exploration-and-tags"></a>

 在 Graphite 中，一切都采用标签形式。

 浏览数据时，将使用先前选择的标签来筛选剩余的结果集。要选择数据，需要使用 `seriesByTag` 函数，该函数使用标签表达式（`=`、`!=`、`=~`、`!=~`）来筛选时间序列。

 当您选择标签时，Grafana 查询生成器会自动为您执行此操作。

**注意**  
 **提示：**对于高基数标签，正则表达式搜索可能很慢，所以先尝试使用其他标签来缩小搜索范围。先从特定的名称或命名空间开始有助于减少结果。

## 模板变量
<a name="graphite-template-variables"></a>

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

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

 要使用标签值创建变量，请使用 Grafana 函数 `tags` 和 `tag_values`。


|  Query  |  说明  | 
| --- | --- | 
|  tags()  |  返回所有标签。 | 
|  tags(server=\$1backend\$1\$1)  |  仅返回与筛选条件表达式匹配的序列中出现的标签。 | 
|  tag\$1values(server)  |  返回指定标签的标签值。 | 
|  tag\$1values(server, server=\$1backend\$1\$1)  |  返回与这些表达式匹配的序列中指定标签出现的筛选标签值。 | 
|  tag\$1values(server, server=\$1backend\$1\$1, app=\$1\$1\$1apps:regex\$1)  |  多个筛选条件表达式和表达式可以包含其他变量。 | 

 有关更多详细信息，请参阅[有关标签自动完成 API 的 Graphite 文档](https://graphite.readthedocs.io/en/latest/tags.html#auto-complete-support)。

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

 您在查询字段中指定的查询应为指标查找类型的查询。例如，`prod.servers.*` 之类的查询将使用通配符位置中存在的所有可能值填充变量。

 您也可以创建嵌套变量，在其定义中使用其他变量。例如，`apps.$app.servers.*` 在其查询定义中使用变量 `$app`。

#### 使用 `__searchFilter` 筛选查询变量结果
<a name="using-__searchfilter-to-filter-query-variable-results"></a>

 在查询字段中使用 `__searchFilter`，根据您在下拉选择框中输入的内容筛选查询结果。如果不输入任何内容，则 `__searchFilter` 的默认值为 `*`，如果作为正则表达式的一部分，则为 ``。

 以下示例显示了当用户在下拉选择框中输入文本时，如何使用 `__searchFilter` 作为查询字段的一部分来启用 `server` 搜索。

 Query 

```
apps.$app.servers.$__searchFilter
```

 TagValues 

```
tag_values(server, server=~${__searchFilter:regex})
```

### 变量使用
<a name="variable-usage"></a>

 您可以在指标节点路径中使用变量，也可以将变量用作函数的参数。

 共有两种语法：
+  `$<varname>` 示例：apps.frontend.\$1server.requests.count 
+  `${varname}` 示例：apps.frontend.\$1\$1server\$1.requests.count 

 为什么是两种？ 第一种语法更容易读写，但不能在词中间使用变量。在表达式中使用第二种语法，比如 `my.server${serverNumber}.count`。

### 标签查询中的变量使用
<a name="variable-usage-in-tag-queries"></a>

 标签查询中的多值变量使用 Grafana 5.0 中引入的变量高级格式语法：`{var:regex}`。非标签查询将对多值变量使用默认的 glob 格式。

 以下代码示例显示了具有正则表达式格式并使用 Equal Tilde 运算符 `=~` 的标签表达式。

```
server=~${servers:regex}
```

 有关更多信息，请参阅 [高级变量格式选项](templates-and-variables.md#advanced-variable-format-options)。

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

 您可以使用注释在图形上叠加丰富的事件信息。您可以通过控制面板菜单/注释视图添加注释查询。有关更多信息，请参阅 [Annotations](dashboard-annotations.md)。

 Graphite 支持两种查询注释的方式：
+ 常规指标查询。为此，您可以使用 **Graphite 查询**文本框。
+ Graphite 事件查询。为此，您可以使用 `Graphite event tags` 文本框，并指定标签或通配符（留空也可以）。