Grafana作为运维监控的常用工具,几乎每天都会出现在工作中。在使用过程中有一个痛点,平时我们配置的告警阈值常常是一个固定的值,而我们的监控内容通常以时间序列方式呈现,这就造成波动的曲线遇上恒定的值,会出现大量的无用告警。
在网上搜索了很久没有发现解决上述问题的方式,因此将自己研究的方法写出来供大家参考。
本文档使用到的软件包括:
Mysql --用于获得动态阈值
grafana --监控工具,数据呈现
zabbix --监控工具,数据获取
整体思路如下:
1、将zabbix监控项的内容通过sql语句生成到一张表中,获取7天的数据,通过sql生成每个时间点的平均值,存入固定表中。作为该监控项的动态阈值。
2、配置grafana告警规则,使MySQL查询到的值作为阈值。
详细步骤如下:(本文中使用的数据为测试数据)
一、将监控指标的7天平均值存入固定表中,因为我的监控项是一分钟一个值,所以我取7天的数据,求取每个时间点的平均值作为该时间点的阈值。(此处只展示阈值表的内容,未展示生成该表数据的sql)
二、阈值表生成后接下来开始配置grafana监控规则
1、阈值的配置(这里我使用变量的方式将阈值显示在仪表盘上方便查看,可以不配置)
选择需要配置阈值变量的仪表盘,点击图像上方的设置按钮,如下图,选择变量选项进行配置。
变量设置可以参考下图,更为具体的配置说明请自行网上搜索。
2、告警规则配置
进入仪表盘编辑界面,新建或修改告警规则。
进入告警规则编辑界面后,本规则需要配置5个表达式。
第一个获取当前时间序列的监控值;
第二个获取阈值;
第三个格式化时间序列监控值;
第四个比较监控值与阈值;
第五个配置告警触发阈值;
1)获取当前时间序列的监控着。一般情况下这一步不需要配置,进入后默认已经具备。
2)点击Add query按钮,新增查询条件,配置阈值获取查询sql
3)点击Add expression按钮,增加计算表达式。将zabbix获取的原始数据格式化。
4)点击Add expression按钮,增加计算表达式。计算格式化后的值与阈值的差。
5)点击Add expression按钮,增加计算表达式。配置触发告警的条件。我这里配置的是当与阈值的差小于0时触发。
3、配置告警确认条件。我这里配置的是监控5分钟,每分钟监控一次。也就是说连续5次当前值小于阈值,则认为出现问题,进行告警。
到此,配置完成,里面的指标和频率需根据实际情况调整。