alertmanager使用体验

AlertManager用于接收Prometheus发送的告警并对于告警进行一系列的处理后发送给指定的用户。
在prometheus中的角色:
alertmanager使用体验_第1张图片
对于告警,最简单的原则是来一次告警就发一次,这样会有大量重复且不必要的告警,漏掉重要的告警。
场景:

  • 正在发布,有服务的重启,不想在这段时间进行告警
  • 有些告警是由另一个告警引起,只想对最高级的错误进行告警
  • 类型相同的错误归集到一起告警
  • 一个类型的告警不重复发送,隔一段时间
  • 不同的告警发给不同的人

缺点:无法动态配置

告警过程:
Prometheus->PromQL触发阈值->超出持续时间->alertmanager->分组|抑制|静默|route->媒体类型->邮件|钉钉|微信|web_hook等
alertmanager使用体验_第2张图片

特性:

  • 分组:类型相同的告警会被合并为一个通知。避免一次性加收大量通知。
  • 抑制:当警报发出后,停止重复发送由此警报引发的其他警报。可以消除冗余告警。
  • 静默:是一种简单的特定时间静音的机制。例如:服务器要升级维护可以先设置这个时间段告警静默。

目的:避免重复告警而漏掉重要的报警,也避免漏报。

自定义规则文件,由prometheus定时扫描,包括:

  • expr: PromQL
  • for: 1m # 告警持续时间,超过这个时间才会发送给alertmanager
  • labels:自定义标签,发往alertmanager

Prometheus可查看规则的触发状态:inactive(正常),pending(规则触发但还未发往alertmanager),firing(已发往alertmanager,告警持续了for时间)

配置:

  • 全局配置(global):用于定义一些全局的公共参数,如全局的SMTP配置,Slack配置等内容;
  • 模板(templates):用于定义告警通知时的模板,如HTML模板,邮件模板等;
  • 告警路由(route):根据标签匹配,确定当前告警应该如何处理;
  • 接收人(receivers):接收人是一个抽象的概念,它可以是一个邮箱也可以是微信,Slack或者Webhook等,接收人一般配合告警路由使用;
  • 抑制规则(inhibit_rules):合理设置抑制规则可以减少垃圾告警的产生group_by: ['alertname'] # 采用哪个标签来作为分组依据

重要的参数:

  • group_wait: 10s # 分组报警等待时间,聚合相同组的报警
  • group_interval: 10s # 发送组告警间隔时间(组不同,如CPU_DOWN和MEMOPRY_OUT,发送的间隔时间为group_interval)
  • repeat_interval: 1h # 重复告警发送间隔时间(相同组,如CPU_DOWN重复发的化,需要等repeat_interval的时间)

在项目中的使用:

  • Alertmanager通过web_hook方式告警,配置basic auth
  • 提供短信告警接口,并校验basic auth

告警规则在prometheus中设置,可在rules画面中查看:
image.png

也可以自己写http请求发送至alertmanager,帮助我们更合理地告警,不必捆绑prometheus。后续计划使用flink对网关交易进行监控,如果有异常交易,发送http请求至alertmanager,由alertmanager决定是否告警及何时告警。

你可能感兴趣的