Grafana:警报查询中不支持模板变量

Posted

技术标签:

【中文标题】Grafana:警报查询中不支持模板变量【英文标题】:Grafana: Template variables are not supported in alert queries 【发布时间】:2018-12-05 19:47:42 【问题描述】:

您好,我想在 grafana 中创建一个简单的警报,以检查过去 5 分钟内是否没有数据。

但我得到一个错误

警报查询不支持模板变量

好吧,根据issue,grafana 中尚不支持模板。 我有两个问题:

    什么是模板?

    如何避免此错误?

【问题讨论】:

你有没有想过这个问题? @Darryl 很遗憾没有 根据 2021 年 1 月 github.com/grafana/grafana/issues/6557#issuecomment-760228091 的这条评论,他们正在重新设计警报系统,并希望允许对包含变量的查询发出警报。 【参考方案1】:

创建警报时不要在 Grafana 中使用模板,因为它不支持警报中的模板。

尝试硬编码整个公式,然后试一试。

在简单的语言中,不要使用您在顶部模板部分中定义的下拉或模板变量

当您不想一次又一次地使用公式时,模板适用于动态仪表板。您可以重复在模板变量中选择的每个值的图表

【讨论】:

这里的“模板化”是什么意思? 表示使用下拉菜单选择的变量并在查询中使用。有关模板的更多信息,请访问docs.grafana.org/reference/templating 如果您通常使用模板仪表板,您是否会创建一个专门用于更改目的的硬编码?您知道为什么不支持此功能吗?【参考方案2】:

关于你的截图,你正在使用条件

WHEN last() of query(A,5m,now) HAS NO VALUE

所以部分

query(A,5m,now)

正在重用“指标”选项卡中的查询,如果您在此查询中使用变量,则警报将报告此错误

看看这个简单的查询:

upjob="node_exporter", instance="$instance"

这里我想使用用户从下拉菜单中选择的虚拟机名称作为实例,它由变量 $instance 表示

如果我在此查询上创建警报,则会收到错误消息 Template variables are not supported in alert queries

【讨论】:

【参考方案3】:

这意味着您必须在查询中使用硬编码变量。

不好

where host =~ /^$host$/

很好

where host =~ mymachine.com

您的问题位于指标内部。

【讨论】:

【参考方案4】:

在“指标”选项卡下,添加将隐藏在图表中且仅用于提醒的新指标。复制查询并从中删除所有模板变量(即$somevar)。将模板变量替换为您要为其创建警报的硬编码值。通过点击“眼睛”图标隐藏指标。

来源:https://community.grafana.com/t/template-variables-are-not-supported-in-alert-queries-while-setting-up-alert/2514/8

【讨论】:

以上是关于Grafana:警报查询中不支持模板变量的主要内容,如果未能解决你的问题,请参考以下文章

从 InfluxDB 查询关于 Grafana 变量模板的 timeFilter 的标签

Grafana 模板问题

Grafana Query类型模板变量的使用

如何在 Grafana 中进行 Simple-JSON 变量模板查询?

Grafana 警报/值为零

Grafana的介绍与使用