Grafana:使用名为“/var(avail_MB)”的指标覆盖系列:"Panel rendering error '/var(avail_MB)' is not a valid regular expression."

Grafana: Overrriding series with metric named `/var(avail_MB)`: "Panel rendering error '/var(avail_MB)' is not a valid regular expression."

一个 Icinga2 插件(由我自己编写)returns 性能数据,其指标名为 /var(avail_MB)/var(total_MB) 等。数据被转发到以 Grafana 作为前端的 InfluxDB。

我在仪表板的面板查询中使用 "GROUP BY" "tag(metric)" 和 "ALIAS BY"“$tag_metric”。 指标名称会在图表下方正确显示。

然而,当我尝试通过指定 "alias or regex" /var(avail_MB) 来覆盖系列时,它似乎不起作用,并且当从面板配置返回到仪表板时,我收到一条错误消息说“面板渲染错误 '/var(avail_MB)' 不是有效的正则表达式。"。 我试图在 () 前面加一个反斜杠,但这没有帮助。 更糟糕的是,整个图表都消失了,当试图打开 "Query Inspector" 时,前端似乎一直在等待(查询从未出现)。

这是什么问题,我该如何解决? 我是 Icinga2、Grafana 和 InfluxDB 的新手(我只是 "user" 而不是这些的管理员)。

颜色更改未应用于图形。

这是插件输出的示例:

OK: /var: 3114/5632MB (55.30%), slope is NaN|/var(total_MB)=5631.56MB;;;0 /var(avail_pct)=55.30%;25;5;0;100 /var(avail_MB)=3114.12MB;10;5;0;5632 /var(est_avail_MB)=nanMB;10;5;0;5632

("nanMB" 是插件中的错误,已修复,但数据并非来自相关机器。)

问题似乎出在字符串的开头(“/var”)。 Grafana 似乎将每个以 / 开头的字符串视为正则表达式,并且它期望任何正则表达式也以 / 开头(似乎)。

因此解决方法是添加尾随 /,并将文字 / 转义为 \/

不幸的是,这只会删除错误消息,但不会使覆盖工作(匹配)。 还需要对括号和斜杠进行反斜杠转义:

而不是 /var(total_MB) 你需要写 /\/var\(total_MB\).

原问题有两个来源:

  1. https://www.monitoring-plugins.org/doc/guidelines.html#AEN201 处的监控插件规范指出:“2. 标签可以包含 除等号或单引号 (') 之外的任何字符") 声明除了 =' 之外的任何字符都可以作为度量标准名称。

  2. Grafana v6.7.3 为“别名或正则表达式”提出了不正确的(即:未转义的)值。

这就是我造成问题的方式。