首页 > 其他 > 详细

Prometheus alertmanager告警收敛 搭建监控系统十(进阶篇)

时间:2021-04-22 15:28:48      阅读:128      评论:0      收藏:0      [点我收藏+]

告警收敛

Alertmanager收敛提供四种方式:

  • 分组
  • 抑制
  • 静默
  • 延时

分组(group)

分组(group): 将类似性质的警报合并为单个通知

  • 优势:假设有一大堆关于MySQL的告警,但是希望在分析问题时能够针对不同的实例进行,所以可以针对不同实例进行分组。每一个告警都会被分往不同实例分组中去,每一个分组最后都会合成一个消息发送给接收者。所以最后运维人员收到的是一封封邮件,而每一封邮件都是关于一个实例的告警。通过这种方式有效的减少了告警消息数量;每一封邮件都是关于一个实例的告警,这种方式可以帮助运维排查一些问题。

示例:假设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)

抑制(inhibition): 当警报发出后,停止重复发送由此警报引发的其他警报,可以消除冗余告警

  • 优势:假设有一台主机挂掉了,上面运行着MySQL的服务,这个时候主机挂掉和MySQL挂掉的两条告警到达Alertmanager的顺序可能不一样,运维人员接收的告警顺序也可能不一样。如果先收到MySQL服务挂掉的告警,排查问题的思路可能就往别的方向走了,但是实际上这不是最根本的原因,所以我们可以通过抑制,将主机挂掉的告警把这主机上面MySQL服务挂掉告警抑制掉,最后只收到主机挂掉的告警。这样能够把冗余信息消除掉,最后得到故障发生最本质的原因。

示例:假设MySQL服务器A上面运行着MySQL服务,当这台服务器突然宕机时候,这两条告警都会出来,但是你配置一条抑制规则,抑制掉MySQL的告警,最后收到服务器挂掉的告警。

inhibit_rules:
  - source_match:                # 当此告警发生,其他的告警被抑制
      severity: ‘critical‘   
    target_match:                # 被抑制的对象
      severity: ‘warning‘  
    equal: [‘id‘, ‘instance‘]

静默(silences)

静默(silences): 是一种简单的特定时间静音的机制

  • 优势:假设你有一堆分别关于MySQL实例1、2、3的告警,如果服务器要升级维护,不希望这个时间段收到关于实例1的告警,可以先设置这个时间段告警静默,就能不再收到关于这台实例的告警,但是你仍然可以收到其他实例的告警,通过这种方式你可以阻止系统发送一些可以预期的告警。

示例:假设要在MySQL A上面跑一个批处理任务,这个批处理任务消耗系统资源比较大,会触发这些告警。同时你的系统中还有一台MySQL B的服务器,这个是对外提供服务的,你不希望把它的报警给静默掉,所以可以配置一条静默规则,把MySQL A告警给静默掉,最后就收不到关于MySQL A的告警,同时其他服务不会被影响到。

# 静默在alertmanager的web界面silence里面配置。

- 选择 create silence 创建一个新的静默配置
- 在 start 与 end 中填写静默的时间段
- 在 name 中给 silence 取名
- 在 Value 中 填写需要静默的实例(例如172.16.214.141:9100)

# 配置完成后在静默的时间端就看不到此实例的报警了

延时(Delay)

系统发生故障产生告警,每分钟发送一条告警消息,这样的告警信息十分令人崩溃。Alertmanager提供第一个参数是repeat interval,可以将重复的告警以更大频率发送,但是只有这个参数会带来两个的问题。

  • 问题一:第一个问题是告警不能及时收到。假设当前发送一条告警,下一次告警在一个小时之后,但在这一个小时之内系统产生了一条告警,这时告警无法被及时发出去。所以alertmanager提供了第二个参数group inteval,让报警能够及时的发送出去。
  • 问题二:当故障发生时,告警条件一个个被满足,到达Alertmanager的顺序也分先后,所以在最开始的时候可能收到多个消息。Alertmanager提供了第三个参数叫做group wait,在一个分组收到第一条报警消息之后,通过等到group wait,把故障最开始发生时候产生告警收敛掉,最后作为一条消息发送出来。

Prometheus alertmanager告警收敛 搭建监控系统十(进阶篇)

原文:https://www.cnblogs.com/Atonement/p/14688897.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!