Alertmanager收敛提供四种方式:
分组(group): 将类似性质的警报合并为单个通知
示例:假设MySQL A产生了一个报警,另外一台MySQL B,这台MySQL挂掉了,监控系统检测到IO线程和SQL也挂了。通过ID进行分组,不同的实例分配到不同的分组,最后运维将会收到两条告警消息,一条是关于MySQL A CPU过高的告警;另外一条是关于MySQL B挂掉的告警消息。
group_by: [‘alertname‘] # 以标签作为分组依据
group_wait: 10s # 分组报警等待时间
group_interval: 10s # 发送组告警间隔时间
repeat_interval: 1h # 重复告警发送间隔时间
抑制(inhibition): 当警报发出后,停止重复发送由此警报引发的其他警报,可以消除冗余告警
示例:假设MySQL服务器A上面运行着MySQL服务,当这台服务器突然宕机时候,这两条告警都会出来,但是你配置一条抑制规则,抑制掉MySQL的告警,最后收到服务器挂掉的告警。
inhibit_rules:
- source_match: # 当此告警发生,其他的告警被抑制
severity: ‘critical‘
target_match: # 被抑制的对象
severity: ‘warning‘
equal: [‘id‘, ‘instance‘]
静默(silences): 是一种简单的特定时间静音的机制
示例:假设要在MySQL A上面跑一个批处理任务,这个批处理任务消耗系统资源比较大,会触发这些告警。同时你的系统中还有一台MySQL B的服务器,这个是对外提供服务的,你不希望把它的报警给静默掉,所以可以配置一条静默规则,把MySQL A告警给静默掉,最后就收不到关于MySQL A的告警,同时其他服务不会被影响到。
# 静默在alertmanager的web界面silence里面配置。
- 选择 create silence 创建一个新的静默配置
- 在 start 与 end 中填写静默的时间段
- 在 name 中给 silence 取名
- 在 Value 中 填写需要静默的实例(例如172.16.214.141:9100)
# 配置完成后在静默的时间端就看不到此实例的报警了
系统发生故障产生告警,每分钟发送一条告警消息,这样的告警信息十分令人崩溃。Alertmanager提供第一个参数是repeat interval,可以将重复的告警以更大频率发送,但是只有这个参数会带来两个的问题。
Prometheus alertmanager告警收敛 搭建监控系统十(进阶篇)
原文:https://www.cnblogs.com/Atonement/p/14688897.html