文章目录
- alerts(报警设置)
- Create a Grafana managed alerting rule
- Add Grafana managed rule
- alert notifications
- 增加一个notification channel
- alert报警邮件中的链接地址错误如何配置
- alert产生的报警如何删除?
- alert设置注意事项
alerts(报警设置)
注意:grafana的alert和Transform是互斥的,用来一个,另一个就用不了了。且经过调查,发现阈值和alert的设置中,很多地方不支持变量的使用。
grafana报警功能包含以下四个关键组件。
组件 | 说明 |
---|---|
Alerting rule | 决定一个报警是否启动的评估标准。它由一个或多个请求和表达式,一个条件,评估频率,以及满足条件的持续时间(可选)组成。 |
Contact point | 当alerting rule的条件被满足时,发送通知的渠道。 |
Notification policy | 匹配或者分组哪些评估标准。用来决定在哪或者多久一次发送通知。 |
Silences | 用于关闭通知的日期和匹配标准。 |
Create a Grafana managed alerting rule
详见https://grafana.com/docs/grafana/latest/alerting/old-alerting/create-alerts/
grafana允许你创建alerting rules,这些报警规则请求一个或多个数据源,降低或转换结果,然后把它们和给定的阈值比较。当这些被执行时,grafana会方式通知给contact point(发送通知的渠道)。
一个报警规则是一系列评估标准的集合,这些评估标准决定了报警是否会被触发。
Add Grafana managed rule
选中panel的编辑界面(如下图)|Alert|Create Alert
出现如下界面,选项的说明如下:
-
Rule(规则)
- Name:报警规则的名字。可以使用默认值。可以使用变量。
- Evaluate every:指明评估的频率。必须是10s的倍数。
- For:指明报警触发前,条件为真需要持续的时间。注意:只要一个条件满足了,报警就会进入预备状态(Pending state,查看grafana上的State history可以看到状态),此时并不会立即发送通知(如邮件)。如果条件保持为真的时间达到指定的持续时间,报警会转换为触发状态(Alerting state),此时会发送通知,且状态恢复正常也会发通知;否则,报警会变回正常状态。
注意:可以在grafana的配置文件里面通过修改
alerting.min_interval_seconds
来设置最小的评估时间间隔。If no data or all values are null
设置为No Data
时,For
不起作用。No Data
会立即除法。这也可能导致OK
通知不发送,如果警告转换过程为No Data -> Pending -> OK
-
Conditions
目前唯一支持的条件类型是
Query
条件,它允许指定一个请求字母(代表某个请求),时间范围和聚合函数。如下示例
avg() OF query(A, 15m, now) IS BELOW 14
avg()
,设置该用哪个函数将一个序列的值减少(转换)为一个值,再用这个值和阈值比较。点击下面的函数名(如last)可以切换聚合函数。query(A, 15m, now)
,字母对应的是请求(建立panel时,每个请求前的字母)。后两个参数定义了时间范围:15m, now
代表15min前到现在。10m, now-2m
代表10分钟前到两分钟前。IS BELOW 14
定义了比较方式和阈值。点击IS BELOW
可以切换比较方法。
说明:报警中的请求不支持变量。多个条件只支持
AND
和OR
运算且是顺序执行。如condition:A(evaluates to: TRUE) OR condition:B(evaluates to: FALSE) AND condition:C(evaluates to: TRUE)计算为 ((TRUE OR FALSE) AND TRUE) = TRUE
-
Multiple Series(请求包含多个序列)
如果一个请求返回多个序列,则聚合函数和阈值检查将会作用为每个序列评估一次。grafana当前并不追踪每个序列的警告规则状态。例如:
报警条件中的请求返回两个序列server1 和server2。server1序列触发报警,状态转换为
Alerting
,发送通知;若接下来对同样的报警规则,server1 也触发了,则不会发送通知,应为状态已经是
Alerting
。即若当前报警规则状态为
Pending
,则其他的序列触发报警并不会通知。因此,强烈建议一个请求返回一个序列,降低alert设置的复杂度(使用where)。
-
No Data和Error Handing
无数据选项 说明 No Data 设置报警规则状态为 NoData
,这会触发通知。Alerting 设置报警规则状态为 Alerting
Keep Last State 保持当前报警规则的状态 Ok 设置报警规则状态为 OK
-
Execution errors or timeouts
错误或超时选项 说明 Alerting 设置报警规则状态为 Alerting
Keep Last State 保持当前报警规则的状态 若数据不稳定,建议设置为
Keep Last State
-
Notifications
实际中通知被配置然后在多个报警中共享。详见
选项 | 说明 |
---|---|
Send to | 选择一个报警通知渠道(如某个email) |
Message | 输入一些要发送的信息。一些警告通知支持html或者更多形式。支持模板 |
Tags | 指明一系列tag(键值对),它们会被包含在通知中。只有某些通知支持,参见some notifiers |
- Alert state history and annotations
警报状态更改记录在 Grafana 数据库的内部注释表中。可以在报警的State history
部分看到相关信息或者情况历史状态。
下面是alert配置界面。
alert notifications
报警状态发生改变时,会发送通知。每个报警可以有多个通知。为了给报警增加一个通知,首先要增加一个notification channel
(如邮件,pageDuty等)。
增加一个notification channel
在dashboard的左侧栏目上:Alerting(铃状标志)|Notification channels|new channel
详见https://grafana.com/docs/grafana/latest/alerting/old-alerting/notifications/
alert报警邮件中的链接地址错误如何配置
https://stackoverflow.com/questions/41282961/how-to-edit-the-link-in-a-slack-notification-from-grafana
https://blog.csdn.net/west_jing/article/details/112873302
修改[server]
部分,以冒号开头的时注释。详见https://en.wikipedia.org/wiki/INI_file
alert产生的报警如何删除?
前往alert|Status history|Clear history|保存刷新dashboard即可清除伯氨基标志(带颜色的竖直虚线)
alert设置注意事项
- 报警基于某个请求的,而覆写(overwrite设置,如下图)某个measurement(对应一个序列)让它不在图中显示是请求后处理,这个报警是识别不了的,所有覆写的序列也会参与报警评估。因此为了方便报警设置建议:不需要的序列建议请求中用
where
排除。