

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

# 连接到 Splunk 数据来源
<a name="splunk-datasource"></a>

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 配置
<a name="splunk-configuration-3"></a>

### 数据来源配置
<a name="splunk-data-source-config"></a>

 配置数据来源时，请确保 URL 字段使用 `https` 并指向您配置的 Splunk 端口。默认 Splunk API 点是 8089，而不是 8000（这是默认的 Web UI 端口）。启用*基本身份验证*并指定 Splunk 用户名和密码。

#### 浏览器（直接）访问模式和 CORS
<a name="splunk-browser-direct-access-mode-and-cors"></a>

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

### 高级选项
<a name="splunk-advanced-options"></a>

#### 流模式
<a name="stream-mode"></a>

 如果您想在搜索结果可用时获取到这些结果，请启用流模式。这是实验性功能，在您真正需要它时再启用。

#### 轮询结果
<a name="splunk-poll-result"></a>

 运行搜索，然后定期检查结果。在后台，此选项在 `exec_mode` 设置为 `normal` 的情况下运行 `search/jobs` API 调用。在本例中，API 请求会返回作业 SID，然后 Grafana 会不时检查任务状态以获得任务结果。对于速度较慢的查询，此选项可能比较有用。默认情况下，此选项处于禁用状态，Grafana 将 `exec_mode` 设置为 `oneshot`，允许在同一 API 调用中返回搜索结果。在 [Splunk 文档](https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTsearch#search.2Fjobs)中查看有关 `search/jobs` API 端点的更多信息。

#### 搜索轮询间隔
<a name="splunk-search-polling-interval"></a>

 此选项允许调整 Amazon Managed Grafana 轮询 Splunk 以获取搜索结果的频率。从 [min, max) 间隔中随机选择下一次轮询的时间。如果您运行大量的搜索，那么增大这些值是有意义的。提示：如果搜索作业执行需要很长时间，则增大 *Min*，如果您运行大量并行搜索（Grafana 控制面板上有很多 Splunk 指标），则增大 *Max*。默认间隔为 [500, 3000) 毫秒。

#### 自动取消
<a name="auto-cancel"></a>

 如果指定该选项，则作业将在处于不活动状态达一定秒数后自动取消（0 表示从不自动取消）。默认值为 30。

#### 状态存储桶
<a name="status-buckets"></a>

 要生成的最多状态存储桶。0 表示不生成时间轴信息。默认值为 300。

#### 字段搜索模式
<a name="splunk-fields-search-mode"></a>

 使用可视化查询编辑器时，数据来源会尝试获取所选来源类型的可用字段列表。
+  快速：使用预览中第一个可用的结果 
+  完整：等待作业完成并获得完整结果。

#### 默认最早时间
<a name="default-earliest-time"></a>

 某些搜索无法使用控制面板的时间范围（例如模板变量查询）。此选项有助于始终阻止搜索，这可能会减慢 Splunk 的速度。语法是一个整数和一个时间单位 `[+|-]<time_integer><time_unit>`。例如 `-1w`。[时间单位](https://docs.splunk.com/Documentation/Splunk/latest/Search/Specifytimemodifiersinyoursearch)可以是 `s, m, h, d, w, mon, q, y`。

#### 变量搜索模式
<a name="splunk-variables-search-mode"></a>

 模板变量查询的搜索模式。可能的值：
+  fast：关闭事件搜索的字段发现。没有用于统计搜索的事件或字段数据。
+  smart：打开事件搜索的字段发现。没有用于统计搜索的事件或字段数据。
+  verbose：所有事件和字段数据。

## 用法
<a name="splunk-usage-5"></a>

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

#### 编辑器模式
<a name="splunk-editor-modes"></a>

 查询编辑器支持两种模式：原始模式和可视化模式。要在这些模式之间切换，请选择编辑器右侧的汉堡图标，然后选择*切换编辑器模式*。

#### 原始模式
<a name="raw-mode"></a>

 对时间序列数据使用 `timechart` 命令，如以下代码示例所示。

```
index=os sourcetype=cpu | timechart span=1m avg(pctSystem) as system, avg(pctUser) as user, avg(pctIowait) as iowait
index=os sourcetype=ps | timechart span=1m limit=5 useother=false avg(cpu_load_percent) by process_name
```

 查询支持模板变量，如以下示例所示。

```
sourcetype=cpu | timechart span=1m avg($cpu)
```

 请记住，Grafana 是面向时间序列的应用程序，您的搜索应返回时间序列数据（时间戳和值）或单个值。您可以阅读有关 [timechart](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Timechart) 命令的信息，也可以在官方 [Splunk 搜索参考](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/WhatsInThisManual)中找到更多搜索示例 

#### Splunk 指标和 `mstats`
<a name="splunk-metrics-and-mstats"></a>

 Splunk 7.x 提供了 `mstats` 命令来分析指标。要使图表和 `mstats` 一起能正常运行，应将其与 `timeseries` 命令结合使用，并且必须设置 `prestats=t` 选项。

```
Deprecated syntax:
| mstats prestats=t avg(_value) AS Value WHERE index="collectd" metric_name="disk.disk_ops.read" OR metric_name="disk.disk_ops.write" by metric_name span=1m
| timechart avg(_value) span=1m by metric_name

Actual:
| mstats prestats=t avg(disk.disk_ops.read) avg(disk.disk_ops.write) WHERE index="collectd" by metric_name span=1m
| timechart avg(disk.disk_ops.read) avg(disk.disk_ops.write) span=1m
```

 阅读 [Splunk 搜索参考](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Mstats)中有关 `mstats` 命令的更多信息。

#### 格式化为
<a name="format-as"></a>

 有两种支持的结果格式模式：*时间序列*（默认）和*表*。表模式适合在想要显示聚合数据时与“表”面板一起使用。这适用于原始事件（返回所有选定的字段）和 `stats` 搜索函数，后者返回类似表的数据。示例：

```
index="os" sourcetype="vmstat" | fields host, memUsedMB
index="os" sourcetype="ps" | stats avg(PercentProcessorTime) as "CPU time", latest(process_name) as "Process", avg(UsedBytes) as "Memory" by PID
```

 结果类似于 Splunk UI 中的*统计数据*选项卡。

 阅读 [Splunk 搜索参考](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Stats)中有关 `stats` 函数用法的更多信息。

#### 可视化模式
<a name="splunk-visual-mode"></a>

此模式提供分步搜索创建。请注意，此模式会创建 `timechart` Splunk 搜索。只需选择索引、来源类型和指标，然后根据需要设置按字段拆分即可。

##### 指标
<a name="splunk-metric"></a>

 您可以通过选择指标行右侧的*加号*按钮来添加多个要搜索的指标。指标编辑器包含常用聚合列表，但您可以在此处指定任何其他函数。只需选择 agg 段（默认情况下为 `avg`），然后键入所需的内容即可。从下拉列表中选择感兴趣的字段（或输入字段），然后根据需要设置别名。

##### Split by 和 Where
<a name="split-by-and-where"></a>

 如果您设置了 Split by 字段并使用*时间序列*模式，则 Where 编辑器将可用。选择*加号*并选择运算符、聚合和值，例如 *Where avg in top 10*。注意，此 *Where* 子句是 *Split by* 的一部分。查看 [timechart 文档](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/timechart#where_clause)中的更多信息。

#### 选项
<a name="splunk-options"></a>

 要更改默认的 timechart 选项，请选择最后一行处的**选项**。

在 [timechart 文档](https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/timechart)中查看有关这些选项的更多信息。

#### 呈现的 Splunk 搜索
<a name="rendered-splunk-search"></a>

 选择左侧的目标字母可折叠编辑器并显示呈现的 Splunk 搜索。

### Annotations
<a name="splunk-annotations-2"></a>

如果您想在图表上显示 Splunk 警报或事件，请使用注释。注释可以是预定义的 Splunk 警报，也可以是常规的 Splunk 搜索。

#### Splunk 警报
<a name="splunk-alert"></a>

 指定警报名称，或将该字段留空以获取所有已触发的警报。支持模版变量。

#### Splunk 搜索
<a name="splunk-search"></a>

 使用 Splunk 搜索来获取所需的事件，如以下示例所示。

```
index=os sourcetype=iostat | where total_ops > 400
index=os sourcetype=iostat | where total_ops > $io_threshold
```

 支持模版变量。

 如果要使用字段值作为注释文本，则可以使用**事件字段作为文本**选项。以下示例显示了日志中的错误消息文本。

```
Event field as text: _raw
Regex: WirelessRadioManagerd\[\d*\]: (.*)
```

 正则表达式允许提取消息的一部分。

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

 模板变量功能支持返回值列表的 Splunk 查询，例如使用 `stats` 命令。

```
index=os sourcetype="iostat" | stats values(Device)
```

 此查询返回 `iostat` 来源中的 `Device` 字段值列表。然后，您可以使用这些设备名称进行时间序列查询或注释。

 Grafana 中可以使用两种可能的变量查询类型。第一种类型是简单查询（如前所述），它返回一个值列表。第二种类型是可以创建 key/value 变量的查询。该查询应返回名为 `_text` 和 `_value` 的两列。`_text` 列值应该是唯一的（如果它不是唯一的，则使用第一个值）。下拉列表中的选项将具有文本和值，因此您可以将友好名称作为文本，将 ID 作为值。

 例如，此搜索会返回包含列 `Name`（Docker 容器名称）和 `Id`（容器 ID）的表。

```
source=docker_inspect | stats count latest(Name) as Name by Id | table Name, Id
```

 要使用容器名称作为变量的可见值并使用 ID 作为其实际值，应修改查询，如以下示例所示。

```
source=docker_inspect | stats count latest(Name) as Name by Id | table Name, Id | rename Name as "_text", Id as "_value"
```

#### Multi-value 变量
<a name="splunk-multi-value-variables"></a>

 可以在查询中使用多值变量。插值搜索将取决于变量使用上下文。插件支持许多这样的上下文。假设有一个变量 `$container`，其中已选择值 `foo` 和 `bar`：
+  `search` 命令的基本筛选器 

  ```
  source=docker_stats $container
  =>
  source=docker_stats (foo OR bar)
  ```
+  Field-value 过滤 

  ```
  source=docker_stats container_name=$container
  =>
  source=docker_stats (container_name=foo OR container_name=bar)
  ```
+  Field-value 使用`IN`运算符和`in()`函数进行过滤 

  ```
  source=docker_stats container_name IN ($container)
  =>
  source=docker_stats container_name IN (foo, bar)
  
  source=docker_stats | where container_name in($container)
  =>
  source=docker_stats | where container_name in(foo, bar)
  ```

#### Multi-value 变量和引号
<a name="multi-value-variables-and-quotes"></a>

 如果变量用引号（双引号或单引号）括起来，则其值也将被引号括起来，如以下示例所示。

```
source=docker_stats container_name="$container"
=>
source=docker_stats (container_name="foo" OR container_name="bar")

source=docker_stats container_name='$container'
=>
source=docker_stats (container_name='foo' OR container_name='bar')
```