Grafana的告警规则是附加在一个个"Graph Panel"上。Grafana仅支持大部分数据源的告警,如Graphite、Prometheus、InfluxDB、Elasticsearch、MySQL等,但不支持对Zabbix数据源的告警,Zabbix本身就是一个强大的监控告警系统。

另外,Grafana的告警规则仅支持在Graph Panel上配置,且不支持带有变量,即其它诸如Table Panel、Stat Panel或者带有模板变量的Dashboard中的Graph Panel均不支持配置告警规则。

综上,我们大致可以知道Grafana的核心还是在数据可视化,告警功能也仅是促进Grafana这款产品更趋于完善。

要实现邮件告警功能,需完成以下三步设置:

1、修改/etc/grafana/grafana.ini,配置SMTP

[smtp]
enabled = true
host = smtp.163.com:465
user = cookingit222@163.com
password = AuthTokencode
skip_verify = true
from_address = 
from_name = Grafana

重启grafana

systemctl restart grafana-server

说明:上述使用163邮箱发送告警邮件时,password为账号的授权码,需登录163邮箱在设置中开启客户端授权,否则会报"550 User has no permission"。

备注:大家验证时最好自己申请邮件实际操作一下,视频教程中的AuthToken已经做过处理。

2、Notification Channel(通知通道)配置,面板设置如下:


可以为不同的业务组创建不同的通知通道,例如,运维通道为Ops,研发为Dev。然后可以为一个Metrics指定多个通知通道。

Name为通道名称

Type为通道类型,此处选Email,也可选择钉钉告警或者Alert Manager等告警类型。

Default(send on all alerts)开启后,表示在所有Graph Panel中配置告警规则时默认都会选用此通道。该选项默认为关闭。

Include image开启后,表示是发送告警图片。

Disable Resove Message开启后,表示不发送恢复邮件,默认会发送告警恢复邮件(视频中此处讲得有误)。

Send reminders开启后,还需设置下方的发送间隔,表示发送告警邮件的间隔,默认关闭表示若某个告警发生后即使持续很长时间也仅发送一次邮件。

多个邮箱地址间用分号";"隔开。

点击Send Test出现以下提示即设置成功。

3、在每一个Graph Panel上配置告警规则(设定阈值),面板设置如下图所示:

① Rule(规则),可设置规则名称Name,评估(检查)间隔Evaluate every,持续多长时间for后仍然满足告警条件就开始告警,即在for的这段时间,告警是处于Pending状态。

② Conditions(条件),WHEN的聚合函数包括last()、avg()、min()、max()、sum()、count()、median()等等。OF后面的query(A,1m,now)含义是:A表示Metrics中选项卡为A,查询的时间范围是从现在(now)到1分钟前这段时间间隔。若query(B,6m,now-2m)则表示Metrics中选项卡为B,查询的时间范围是6分钟前到2分钟前这段时间间隔。IS ABOVE 80 是超出阈值80,也可以是IS BELOW(低于)或者IS OUTSIDE RANGE(超出范围)等设置。上图示例含义就是:查询Metrics中选项卡为A,时间间隔是近1分钟且当前值超过80就满足告警条件。

③ No Data & Error Handling,告警规则对查询返回无数据或者查询出现错时的处理。当无数据或者为空时,可以设置状态有No Data,Keep Last State,Ok三种。当查询出错或者超时时,可以设置状态为Alerting,Keep Last State二种。

④ Notifications(通知),用于设置将告警通过什么告警通道(Send to用于设置告警通道channel)发出,这里默认就会选择Dev,原因是在创建Notification channel时启用了Default(send on all alerts)。Message用于添加告警的详细信息。

⑤ Tags(标签),用于添加标签以及标签值,可忽略。

在v6.7.3版本中,最后收到的告警邮件如下,没有正确捕获到告警的图片,在v6.6.x上可以正常捕获。

正常应该能捕获到图,如下测试图所示


总结:现在互联网邮件管理非常严格,各大云厂商的服务器都禁用了25端口,想测试发个邮件都有难度,还有可能就是被当垃圾邮件过滤从而导致无法收到邮件。