

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

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

 Loki 数据来源提供对 Loki（Grafana 的日志聚合系统）的访问权限。

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

1.  打开 Grafana 工作区，确保您已登录。

1.  在**配置**链接下的侧边菜单中，您应该可以找到**数据来源**链接。

1.  选择顶部的**添加数据来源**按钮。

1.  从数据来源列表中选择 **Loki**。

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


|  Name  |  说明  | 
| --- | --- | 
|  Name  |  数据来源名称。您将在面板、查询和 Explore 中通过其名称查看数据来源。 | 
|  Default  |  默认数据来源意味着将为新面板预先选择该数据来源。 | 
|  URL  | Loki 实例的 URL；例如，http://localhost:3100。这可以是 Amazon EC2 主机的网址，也可以是 Amazon EKS 集群前面的应用程序负载均衡器或 Loki 实例的任何其他 URL。 | 
|  Maximum lines  |  Loki 返回的日志行数上限（默认为 1000）。如果在 Explore 中显示日志时浏览器运行缓慢，则减小此值。 | 

### 派生字段
<a name="loki-derived-fields"></a>

 您可以使用*派生字段*配置执行以下操作：
+  添加从日志消息中解析的字段。
+  添加使用字段值的链接。

 您可以使用此功能直接从日志链接到跟踪后端，或者如果日志行中存在 userId，则链接到用户配置文件页面。这些链接显示在日志详细信息中。有关更多信息，请参阅 [标签和检测到的字段](explore.md#labels-and-detected-fields)。

每个派生字段由以下部分组成：
+  **名称**：在日志详细信息中显示为标签。
+  **正则表达式**：一种正则表达式模式，可在日志消息上运行，并捕获其中部分内容作为新字段的值。只能包含一个捕获组。
+  **URL/查询**：如果是外部链接，则输入完整的链接 URL。如果是内部链接，则此输入将用作目标数据来源的查询。在这两种情况下，您都可以使用 `${__value.raw }` 宏从字段中插值。
+  **内部链接**：选择此选项以确定是内部链接还是外部链接。如果是内部链接，您可以使用数据来源选择器选择目标数据来源。仅支持跟踪数据来源。

 您可以使用调试部分来查看字段提取的内容以及 URL 是如何插值的。选择**显示示例日志消息**以显示文本区域，您可以在其中输入日志消息。

 带有链接的新字段显示在日志详细信息中。

## 查询 日志
<a name="loki-querying-logs"></a>

 可通过 Explore 以及可视化中的日志面板查询和显示 Loki 的日志数据。选择 Loki 数据来源，然后输入 LogQL 查询以显示日志。有关 LogQL 的更多信息，请参阅 [LogQL](https://grafana.com/docs/loki/latest/logql/)。

### 日志查询
<a name="loki-log-queries"></a>

 日志查询由两部分组成：**日志流选择器**和**搜索表达式**。出于性能考虑，必须先为日志流选择日志标签。

 查询字段旁边的 Logs Explorer（**日志标签**按钮）显示可用日志流的标签列表。另一种编写查询的方法是使用查询字段的自动完成功能。先键入左大括号 `{`，自动完成菜单将建议标签列表。按 **Enter** 键运行查询。

 返回结果后，日志面板会显示日志行列表和条形图，其中 x 轴显示时间，y 轴显示频率/计数。

### 日志流选择器
<a name="log-stream-selector"></a>

 对于查询表达式的标签部分，用大括号 `{}` 括起来，然后使用键值语法选择标签。多个标签表达式用逗号分隔：

 `{app="mysql",name="mysql-backup"}` 

 目前支持以下标签匹配运算符：
+  `=` 完全相等。
+  `!=` 不等于。
+  `=~` 正则表达式匹配。
+  `!~` 正则表达式不匹配。

 示例：
+  `{name=~"mysql.+"}` 
+  `{name!~"mysql.+"}` 

 添加标签选择器的另一种方法是在表部分选择标签旁边的**筛选器**，将标签添加到查询表达式。这甚至适用于多个查询，并将标签选择器添加到每个查询。

### 搜索表达式
<a name="loki-search-expression"></a>

 编写日志流选择器后，您可以编写搜索表达式来进一步筛选结果。搜索表达式可以是文本或正则表达式。

 示例查询：
+  `{job="mysql"} |= "error"` 
+  `{name="kafka"} |~ "tsdb-ops.*io:2003"` 
+  `{instance=~"kafka-[23]",name="kafka"} != "kafka.server:type=ReplicaManager"` 

 筛选运算符可以链接起来，并按顺序筛选表达式。生成的日志行将满足所有筛选条件。

 示例 

 `{job="mysql"} |= "error" != "timeout"` 

 目前支持以下筛选类型。
+  `|=` 行包含字符串。
+  `!=` 行不包含字符串。
+  `|~` 行匹配正则表达式。
+  `!~` 行不匹配正则表达式。

**注意**  
 有关 LogQL（Loki 的查询语言）的更多信息，请参阅 [Loki LogQL](https://grafana.com/docs/loki/latest/logql/)。

## 日志上下文
<a name="loki-log-context"></a>

 使用上述搜索表达式时，您现在可以检索筛选结果的相关上下文。通过选择筛选行上的 `Show Context` 链接，可以调查您感兴趣的日志消息之前和之后的日志消息。

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

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

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

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

 您可以使用任何非指标 Loki 查询作为注释来源。日志内容将用作注释文本，日志流标签将用作标签，因此无需额外的映射。