菜单
Grafana Cloud 企业版 开源

InfluxDB 查询编辑器

Grafana 的查询编辑器对每个数据源都是唯一的。有关 Grafana 查询编辑器的通用信息,请参阅查询编辑器。有关在 Grafana 中查询数据源的通用信息,请参阅查询和转换数据

InfluxDB 查询编辑器位于探索页面上。您也可以从仪表盘面板访问 InfluxDB 查询编辑器。点击面板右上角的省略号并选择编辑

您还可以使用查询编辑器检索日志数据并为可视化添加标注

选择查询编辑模式

InfluxDB 数据源有三种不同的查询编辑器类型,每种类型对应于数据源配置中选择的查询语言

编辑器选项因查询语言而异。

InfluxQL 查询编辑器

InfluxQL 查询编辑器可帮助您选择指标和标签来创建 InfluxQL 查询。有两种模式:可视化编辑器模式原始查询模式。要在这两种模式之间切换,请点击右上角的铅笔图标

可视化查询编辑器模式包含以下组件

  • FROM - 选择要查询的测量。
  • WHERE - 通过点击+ 号选择过滤器。
  • SELECT - 从下拉菜单中选择字段和函数。您可以通过点击+ 号添加多个字段和函数。
  • GROUP BY - 从下拉菜单中选择一个标签。
  • TIMEZONE - 可选 按特定时区对数据进行分组。
  • ORDER BY TIME - 按升序或降序按时间排序数据。
  • LIMIT - 可选 限制查询返回的行数。
  • SLIMIT - 可选 限制查询返回的系列数。有关此选项的更多信息,请参阅SLIMIT 子句
  • FORMAT AS - 从下拉菜单中选择格式选项。
  • ALIAS - 添加别名。有关更多信息,请参阅别名模式

原始查询编辑器模式

您可以通过切换到原始查询模式来编写原始 InfluxQL 查询。点击查询编辑器右上角的铅笔切换模式。请注意,当您切换到可视化编辑器模式时,您在原始查询模式中所做的任何更改都将丢失。

如果您使用原始查询模式,您的查询必须包含WHERE $timeFilter。您还应该提供一个按时间分组和聚合函数。否则,InfluxDB 可能会返回数十万个数据点,可能导致您的浏览器卡住。

InfluxQL query editor

通过正则表达式匹配

您可以为指标名称或标签过滤值输入正则表达式。将 regex 模式用正斜杠 (/) 包围,如本例所示:/measurement/

Grafana 自动调整过滤标签条件以使用 InfluxDB regex 匹配条件运算符 (=~)。

字段和聚合函数

SELECT 行中,您可以指定要使用的字段和函数。

如果您按时间分组,则必须使用聚合函数。某些函数,如 derivative,也需要聚合函数。

如果您有以下内容

查询编辑器输入生成一个 InfluxDB SELECT 子句

sql
SELECT derivative(mean("value"), 10s) / 10 AS "REQ/s"
FROM....

您还可以在 SELECT 语句中使用 * 来选择所有字段。

sql
SELECT * FROM <measurement_name>

GROUP BY 结果

要按标签对结果分组,请在 GROUP BY 行中指定该标签

  1. 单击 GROUP BY 行中的 + 号
  2. 从下拉列表中选择一个标签。

您可以按多个选项进行 GROUP BY。

要移除 GROUP BY 选项,请单击选项旁边的 X 图标

别名模式

别名模式替换为
GROUP BY 结果要按标签对结果进行分组,请在GROUP BY 行中指定标签
点击 GROUP BY 行中的+ 号要按标签对结果进行分组,请在GROUP BY 行中指定标签
$1 - $9从下拉菜单中选择一个标签。
您可以按多个选项进行 GROUP BY。要移除一个 GROUP BY 选项,请点击该选项旁边的X 图标
别名模式别名模式

替换为

$m

测量名称。

$measurement

测量名称的一部分(如果您使用点分隔测量名称)。

$col

列名。

$tag_exampletag

exampletag 标签的值。语法是 $tag*yourTagName,必须以 $tag* 开头。要在 ALIAS BY 字段中使用您的标签作为别名,您必须在查询中使用该标签进行分组。替换为
您还可以使用 [[tag_hostname]] 模式替换语法。例如,在 ALIAS BY 字段中输入值 Host: [[tag_hostname]] 会将其替换为每个图例值的 hostname 标签值。
一个示例图例值为 Host: server1SQL 查询编辑器
Grafana 支持 InfluxDB v3.0 及更高版本中的SQL 查询语言您直接在查询编辑器中构建 SQL 查询。
您可以在查询中使用宏,自动替换为 Grafana 上下文中的值。
宏示例$__timeFrom
当前活动时间选择的开始,例如 2020-06-11T13:31:00Z$__timeTo

示例

// with macro
1. SELECT * FROM cpu WHERE time >= $__timeFrom AND time <= $__timeTo
2. SELECT * FROM cpu WHERE $__timeFilter(time)
3. SELECT $__dateBin(time) from cpu

// interpolated
1. SELECT * FROM iox.cpu WHERE time >= cast('2023-12-15T12:38:30Z' as timestamp) AND time <= cast('2023-12-15T18:38:30Z' as timestamp)
2. SELECT * FROM cpu WHERE time >= '2023-12-15T12:41:28Z' AND time <= '2023-12-15T18:41:28Z'
3. SELECT date_bin(interval '15 second', time, timestamp '1970-01-01T00:00:00Z') from cpu

$__timeFilter

应用当前活动时间选择的开始和结束的时间范围。

$__interval

与 Grafana 根据活动时间选择的时间范围计算得出的间隔相对应的间隔字符串,例如 5s

$__dateBin(<column>)

exampletag 标签的值。语法是 $tag*yourTagName,必须以 $tag* 开头。要在 ALIAS BY 字段中使用您的标签作为别名,您必须在查询中使用该标签进行分组。替换为
应用date_bin 函数。列必须是时间戳。例如,在 ALIAS BY 字段中输入值 Host: [[tag_hostname]] 会将其替换为每个图例值的 hostname 标签值。
$__dateBinAlias(<column>)SQL 查询编辑器
应用带有 _binned 后缀的date_bin 函数。列必须是时间戳。复制代码到剪贴板 复制
Flux 查询编辑器Grafana 支持运行 InfluxDB v1.8 及更高版本时的 Flux。如果您的数据源配置为 Flux,您可以在查询编辑器中使用Flux,它作为原始 Flux 查询的文本编辑器,支持宏。
有关更多信息和连接详情,请参阅InfluxDB 1.8 API compatibility使用宏

您可以在查询中输入宏,将其替换为 Grafana 上下文中的值。宏支持从Chronograf 复制粘贴。

v.timeRangeStart
from(bucket: v.defaultBucket)
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
  |> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
  |> aggregateWindow(every: v.windowPeriod, fn: mean)
  |> yield(name: "mean")

v.timeRangeStop

v.timeRangeStart
from(bucket: "grafana")
  |> range(start: 2020-06-11T13:59:07Z, stop: 2020-06-11T14:59:07Z)
  |> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
  |> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
  |> aggregateWindow(every: 2s, fn: mean)
  |> yield(name: "mean")

v.windowPeriod

与 Grafana 根据活动时间选择的时间范围计算得出的间隔相对应的 Flux 兼容的间隔字符串,例如 5s

v.defaultBucket

数据源配置的“默认存储桶”设置。

v.organization

数据源配置的“组织”设置。

例如,考虑以下 Flux 查询

flux

此 Flux 查询被插值为以下查询并发送到 InfluxDB,其间隔和时间段值根据活动时间选择而变化

要使用 Query inspector 查看查询的插值版本,请参阅面板检查器

查询日志

sql
SELECT title, description
from events
WHERE $timeFilter
ORDER BY time ASC