[已解决]Grafana的panel使用了template后无法配置alert

背景介绍

众所周知,在v4.0以及更高版本的Grafana中,我们可以在panel中配置alert,但是这个alert有个很鸡肋的限制,不允许query语句中引用template(即在dashboard中设置的variables),这大大限制了alert的灵活性。
经过实验,本人成功通过一个取巧的方式解决了这个问题,成功实现了以下目的:

  • 引入变量,通过改变变量取值,改变panel数据显示;
  • 同一个panel中实现alert功能;

下面,我以cpu利用率这一metric来介绍这个过程。

本文中,数据采集用的是node_exporter,然后Prometheus server主动抓取采集到的数据,之后将Prometheus server作为数据源配置到Grafana中进行可视化

具体步骤

  • 安装node_exporter(参考友方链接)
  • 安装配置Prometheus server(官网指导)
  • Grafana配置Prometheus作为数据源(官网指导)
  • 新增Dashboard+新建panel+配置可视化及alert

前三步较为简单,不做赘述,着重说最后一步。

注:本人实验过程用的版本

  • Grafana:v6.0.1
  • node_exporter:0.17.0(不同版本,metrics的名字会有不同,注意!)
  • Prometheus_server:2.7.1

新增Dashboard不说了,这里提一下变量设置。点击进入某个Dashboard,点击Dashboard Setting进入设置页面,点击Variables设置变量(即Grafana中的template概念),新增变量HOST,配置参考下面:

Name: HOST
Type: Query
Label: HOST
Data source: Prometheus
Refresh: On Dashboard Load
Query: label_values(go_info, instance)
Sort: Alphabetical(asc)
其他: 默认即可

新增Graph类Panel,Queries配置查询语句,并引入之前设置的变量:

sum(irate(node_cpu_seconds_total{instance="$HOST",mode="user"}[5m])) * 100 / count(node_cpu_seconds_total{instance="$HOST",mode="user"})

将HOST作为变量插入到语句中,就可以通过改变页面中左上角的HOST值来查看不同主机的CPU利用率走势。
接下来,重点来了,由于Alert配置Conditions的时候,查询语句不允许引用变量(即template),故我们在Queries中新增一条查询,并且通过Legend的变量功能来达到按主机分组的效果,话不多说,直接上查询语句:

sum by(instance) (irate(node_cpu_seconds_total{mode="user"}[5m])) * 100 / count by(instance) (node_cpu_seconds_total{mode="user"})

Legend值设置为:{{instance}}
之后,点击此Query右上角的那只眼睛图标,进行disable处理,使这条语句的结果不展示在Panel中。
后面要做的就简单了,只需在Alert的Conditions中配置查询语句为B即可实现我们最初的目的。

你可能感兴趣的:([已解决]Grafana的panel使用了template后无法配置alert)