一.安装并启动sendmail
yum install -y sendmail
systemctl start sendmail
二.修改Grafana配置文件,设置发件人
vim /etc/grafana/grafana.ini
在[smtp] 标签下 修改配置
[smtp]
enabled = true
host = localhost:25
from_address = your address
from_name = your name
其他还可以配置用户名密码来使用公网上有验证的smtp服务,但是这里我用的是本地smtp,不需要配置这些
保存好配置文件之后,重启Grafana
systemctl restart grafana-server
三.配置Notification channels
点击页面左边的铃铛,并选择 Notification channels
然后选择 new channels 创建一个 channel,填写 Name 和收件人邮箱地址
然后点击send Test ,提示成功后,刚填写的邮箱应该就可以收到如下内容的测试邮件
四.添加 Alert Rules
首先到进入dashboard页面,左键点击你想添加Alert告警的 graph 面板的面板名,并点解 EDIT,进入面板编辑页面。
注意:只有graph panel 也就是图表面板(一般都是折线图和柱状图或者点状图)可以添加Alert ,其他面板不支持。
然后点击 左边的铃铛图标,并点击 Create Alert 进入 Alert的设置页面
这里解释下上图中六个参数的作用
1.Rule Name :Alert规则 的名称
2 每多少时间评估一次
3的输入框里有个提示的图标,鼠标移上去会看到提示,提示的
大概意思是:如果配置了这个参数,那么当查询结果超过阀值的时候,首先会从ok状态转到pedding状态,此时是不会发邮件的,而当 超过阀值的状态的持续时间 过了配置的持续时间时,才会从pending 状态 转成 Alerting状态,并发送通知邮件
在上图中我设置的是Evaluate every 1m for 5m, 也就是说每分钟计算一次是否超过阀值,如果超过阀值的时间持续了5分钟,就发送邮件通知,如果没有的话,只是从ok 状态转为 pedding状态.
发送了通知之后还是会每分钟检查一次,状态恢复正常之前是不会再发邮件的。
而且我们配置的prometheus还有个拿数据的时间间隔,这个也会影响数据的计算。
4、5、6为触发Alert的条件
4是查询的类型,可选项有很多,最大值、最小值、平均值等等
5.这里有三个参数 , 第一个是查询的编号,这个是在Queries里面设置的,稍后再讲,每个查询在每个时间点的结果值就构成了我们看到的图。 第二个是多少时间内, 第三个是开始时间
6. 是阀值
上图的配置简单来说就是 :
A查询从当前时间开始的1分钟内的结果值的平均值如果高于阀值0.002,将会从ok状态 转变为 pedding状态,但不会发邮件,然后每分钟查询一次,如果高于阀值的持续时间超过五分钟,就会发邮件通知。
上图中还有个警告,这个警告的意思是:警报查询中不支持模板变量
这个问题刚碰到的时候确实不知道错哪了。
grafana发送报警的json格式:
{
"evalMatches": [
{
"value": 623.2111111111111,
"metric": "averageSeries(test_api.formal.*.cr_api_cost.cost.p99)",
"tags": null
}
],
"message": "????",
"ruleId": 1,
"ruleName": "test_api接口",
"ruleUrl": "http://localhost:3000/d/rh3bYAfnz/test-ji?fullscreen=true&edit=true&tab=alert&panelId=16&orgId=1",
"state": "alerting",
"title": "[Alerting] test_api接口"
}
其实这个是 Queries里的问题,我们先切换到Queries 的设置页面
这里我们就看到了 我之前说的查询编号了,每个编号都有一个查询,然后每个查询有个Legend ,也就是对应着图旁边的某个图例,所以某个查询在每个时间点的结过值的连线,就是折线图中的某条折线。
我们刚刚设置Alert的时候用的是查询A, 也就是system这条线的查询,在查询语句中就用到了模板变量$node
这个变量是在 dashbord setting 里设置的
其实就是一个全局的变量,可以自定义值,也可以读取配置文件里的某个标签的值
,在查询中使用。设置好的变量 可以在dashboard的顶部进行选择切换。
显然,之前的报错是不支持我们在 Alert 查询中使用这个模板变量的,所以我们把他改成具体的值。
改了以后就不会报错了,然后我们回到 Alert的配置页面
添加一个或多个需要通知的,配置好的联系人,并在Message填写你自定义的通知内容。
配置好了之后,记得保存dashboard的设置
然后当Alert的条件被满足后,就会发邮件了。
我们可以在Alert rules 页面看到我们添加 的Alert Rules ,并且可以暂停某个 Alert ,也可以从这里点击某个Alert 进入编辑页面进行编辑。
在编辑页面我们还可以点击 state history ,查看 Alert 的历史状态。