Grafana 教程

全局变量

Grafana 具有全局内置变量,可用于查询编辑器中的表达式。本主题按字母顺序列出并定义了这些变量。这些变量在查询、仪表板链接、面板链接和数据链接中非常有用。

$__dashboard

仅适用于 Grafana v6.7+。在 Grafana 7.1 中,该变量从显示当前仪表板的 UID 变为显示当前仪表盘的名称。

此变量为当前仪表盘的名称。

$__from and $__to

Grafana 有两个内置的时间范围变量:$__from 和 $__to。目前默认情况下,它们总是以纪元毫秒的形式插值,但你可以控制日期格式。

注意:此特殊格式化语法仅在 Grafana 7.1.2+ 中可用

语法

示例结果

描述

${__from}

1594671549254

Unix 毫秒纪元

${__from:date}

2020-07-13T20:19:09.254Z

无参数,默认为 ISO 8601/RFC 3339

${__from:date:iso}

2020-07-13T20:19:09.254Z

ISO 8601/RFC 3339

${__from:date:seconds}

1594671549

Unix 秒纪元

${__from:date:YYYY-MM}

2020-07

任何自定义日期格式

不包含:字符的自定义日期格式。使用浏览器时间。使用 :date 或 :date:iso 表示 UTC

上述语法也适用于 ${__to}。

您也可以在 URL 中使用此变量。例如,您可以将用户发送到一个仪表板,显示从六小时前到现在的时间范围: https://play.grafana.org/d/000000012/grafana-play-home?viewPanel=2&orgId=1?from=now-6h&to=now

$__interval

您可以将 $__interval 变量用作按时间分组的参数(适用于 InfluxDB、MySQL、Postgres 和 MSSQL)、日期直方图区间(适用于 Elasticsearch),或用作汇总函数参数(适用于 Graphite)。

Grafana 会自动计算一个时间间隔,用于在查询中按时间分组。当数据点多到无法在图表中显示时,可以通过按更大的时间间隔分组来提高查询效率。在查看 3 个月的数据时,按 1 天分组比按 10 秒分组更有效,而且图表看起来也一样,查询速度也更快。$__interval 是使用时间范围和图表宽度(像素数)计算得出的。

近似计算:(to - from) / resolution

例如,如果时间范围为 1 小时,且图表为全屏显示,那么时间间隔可计算为 2m —— 点按 2 分钟间隔分组。如果时间范围是 6 个月,图表是全屏的,那么间隔可能是 1d(1 天)—— 点按天分组。

在 InfluxDB 数据源中,传统变量 $interval 是同一个变量。应使用 $__interval 代替。

InfluxDB 和 Elasticsearch 数据源有按时间间隔分组字段,可用于硬编码时间间隔或设置 $__interval 变量的最小限制(使用 > 语法 -> >10m)。

$__interval_ms

该变量是以毫秒为单位的 $__interval 变量,而不是时间间隔格式化的字符串。例如,如果 $__interval 是 20m,那么 $__interval_ms 就是 1200000。

$__name

该变量仅在 Singlestat 面板中可用,可用于选项选项卡上的前缀或后缀字段。变量将替换为系列名称或别名。

注意:从 Grafana 8.0 开始,Singlestat 面板不再可用。

$__org

该变量是当前组织的 ID,${__org.name} 是当前组织的名称。

$__user

仅适用于 Grafana v7.1+ 版本

${__user.id} 是当前用户的 ID。${__user.login} 是当前用户的登录句柄。${__user.email} 是当前用户的电子邮件地址。

$__range

目前仅支持 Prometheus 和 Loki 数据源。该变量表示当前仪表板的范围。它的计算方法是 to - from。它有毫秒和秒两种表示形式,分别称为 $__range_ms 和 $__range_s。

$__rate_interval

目前仅支持 Prometheus 数据源。$__rate_interval 变量应在速率函数中使用。有关详情,请参阅 Prometheus 查询变量

$__rate_interval_ms

这个变量是以毫秒为单位的 $__rate_interval 变量,而不是时间间隔格式的字符串。例如,如果 $__rate_interval 是 20m,那么 $__rate_interval_ms 就是 1200000。

$timeFilter or $__timeFilter

$timeFilter 变量以表达式的形式返回当前选定的时间范围。例如,时间范围间隔最后 7 天表达式为 time > now() - 7d。

这在多处使用,包括:

  • InfluxDB 数据源的 WHERE 子句。在查询编辑器模式下,Grafana 会将其自动添加到 InfluxDB 查询中。您可以在文本编辑器模式下手动添加: WHERE $timeFilter.

  • Azure Monitor 数据源中的日志分析查询。

  • MySQL、Postgres 和 MSSQL 中的 SQL 查询。

  • $__timeFilter 变量用于 MySQL 数据源。

$__timezone

$__timezone 变量返回当前选择的时区,可以是 UTC 或 IANA 时区数据库的一个条目(例如,America/New_York)。

如果当前选择的时区是浏览器时间,Grafana 将尝试确定您的浏览器时区。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号