背景介绍
最近公司内要完善对微服务基础指标的监控,主要针对ADL、CAL、SAL,底层监控的数据以及和grafana的连接一开始就有,这里就不展开了。(很多教程都有怎么连接数据库以及配置告警,本文只描述过程中遇到的问题)
报警通告配置
左侧工具栏点击Alerting–>Notification channels–>New channel 便可新建一个报警通告,v7及以下版本界面可能如下,比较老的版本可能没有后两个选项,但不影响。
因为要发送到钉钉群,所以Type选择dingding,url就是群里机器人的webhook。基于当下时间点,钉钉支持三种方式来保证消息的安全性:自定义关键词、加签、IP地址。而grafana v8.2以上的版本才支持自定义关键词功能,所以这里选择IP地址的方式来配置机器人
这里有两点需要注意
- 如果是公司配置的话,要用公司的公网IP,而不是内网IP,这个一般运维的人会知道
- 要报警的机器人只能有这一种安全验证,若同时配置关键词,他无法同时满足两个安全验证,发送消息会失败
配置完成后,点击test,看看能否成功发送通知到群里,如果不能,上述步骤出有问题,下图为成功的实例:
具体报警规则配置
这里配置路径就不赘述了,直接说注意的问题:
- 首先是conditions,我们在配置query中的条件时可能会动态的配置来更好的展示,但报警条件却不支持动态模版配置;并且不支持by等语法,因为它是将这样一条语句
sum(http_requests_total{env='test'}) by (method)
拆分了而诸如A、B等query只能配置成http_requests_total{env='test'}
这样的一段 Evaluate every
参数指定了 Grafana 每隔多久评估一次警报规则。多久检查一次,这里如果时间很短的话会很消耗cpufor
参数指定了警报条件必须持续满足多长时间后,警报才会被触发。如果短时间内超过阈值便要报警,可以设的短一些- 点击
test rule
便可测试报警条件,若firing为false表示未触发报警,为true的话表示触发报警,但是可能并不会发送消息到钉钉群
如果要想测试一下报警规则并发送消息到钉钉群的话,需注意以下
Evaluate every
和 for
参数都要设置的比较短,并且图表中的数据要满足is above
选项后的配置条件。
grafana只有在发生状态转换时才会发送消息,绿心表示监控正常,红心表示出异常了。从绿心变道红心,grafana便认为触发了报警,会发送消息到钉钉群
而处于红心状态下,grafana不会频繁的触发报警,所以频繁点击test rule并不会生效,并且test rule实际并不会发送告警消息
而当问题解决后,又从红心变成了绿心,这时会发送已解决到钉钉群
至此,grafana告警功能便可正常使用了,以上是基于比较老的版本,还是建议使用较新的版本。