目录

  • 官方解释
    • group_wait(default: 30s)
    • group_interval(default: 5m)
    • repeat_interval(default: 4h)
  • 实验
    • 参数
    • 告警过程
  • 结论
  • 补充
  • 参考

官方解释

group_wait(default: 30s)

How long to initially wait to send a notification for a group of alerts. Allows to wait for an inhibiting alert to arrive or collect more initial alerts for the same group. (Usually ~0s to few minutes.)
一组告警第一次发送之前等待的时间。用于等待抑制告警,或等待同一组告警采集更多初始告警后一起发送。(一般设置为0秒 ~ 几分钟)

group_interval(default: 5m)

How long to wait before sending a notification about new alerts that are added to a group of alerts for which an initial notification has already been sent. (Usually ~5m or more.)
一组已发送初始通知的告警接收到新告警后,再次发送通知前等待的时间(一般设置为5分钟或更多)

repeat_interval(default: 4h)

How long to wait before sending a notification again if it has already been sent successfully for an alert. (Usually ~3h or more).
一条成功发送的告警,在再次发送通知之前等待的时间。 (通常设置为3小时或更长时间)。


实验

参数

group_wait: 10s
group_interval: 30m
repeat_interval: 50m

告警过程

  1. alertmanager收到告警后,等待group_wait(10s),发送第一次通知
  2. 未达到group_interval(30m 10s),休眠
  3. 达到group_interval(30m 10s)时,小于repeat_interval(50m 10s),休眠
  4. 到下一个group_interval(60m 10s),大于repeat_interval(50m 10s),发送第二次通知

Firing(0s) - 第一次通知(10s) - 第二次通知(60m 10s)


结论

  1. 当repeat_interval小于group_interval时,repeat_interval不影响告警
  2. 当repeat_interval大于group_interval,且不为group_interval倍数,影响告警
  3. 当repeat_interval大于group_interval,且为group_interval倍数,可能影响告警(*注)

注:
当repeat_interval大于group_interval,且为group_interval倍数时,可能发生两种情况:

  1. 在repeat_interval时发出告警
  2. 在repeat_interval + group_interval时发出告警(原因是如果repeat_interval是group_interval的倍数,则在需要发出通知时会同时判断两个值,程序耗时 + 网络耗时会导致对比结果不准确)

补充

根据这篇文章对alertmanager高可用实现的描述:

当AlertManager启动时,它会首先从cluster.peer参数指定的地址和端口进行Push/Pull:即首先将本节点的状态信息(全部的Silence以及Notification Log)发送到对端,再从对端拉取状态信息并与本节点的状态信息合并:例如,对于从对端拉取到的静默规则,如果有本节点不存在的规则则直接添加,若是规则在本节点已存在但是更新时间更晚,则用对端规则覆盖已有的规则。对于Notification Log的做法类似。最终,集群中的所有AlertManager都会有同样的静默规则以及Notification Log。

如果此时用户在某个AlertManager请求增加新的静默规则呢?根据Gossip协议,该实例应该从集群中选取几个实例,将新增的静默规则发送给它们。而当这些实例收到广播信息时,一方面它会合并这一新的静默规则同时再对其进行广播。最后,整个集群都会接收到这一新添加的静默规则,实现了最终一致性。

不过,Notification Log的同步并没有静默规则这么容易。我们可以假设如下场景:由于高可用的要求,Prometheus会向每个AlertManager发送告警实例。如果该告警实例不属于任何之前已有的Alert Group,则会新建一个Group并最终创建一个相应的Notification Log。而Notification Log是在通知完成之后创建的,所以在这种情况下,针对同一个告警发送了多次通知。

为了避免这种情况的发生,社区给出的解决方案是错开各个AlertManager发送通知的时间。如上文的整体架构图所示,Notification Pipeline在进行去重之前其实还有一个Wait阶段。该阶段会将对于告警的通知处理暂停一段时间,不同的AlertManager实例等待的时间会因为该实例在整个集群中的位置有所不同。根据实例名进行排序,排名每靠后一位,默认多等待15秒。

假设集群中有两个AlertManager实例,排名靠前的实例为A0,排名靠后的实例为A1,此时对于上述问题的处理如下:

  1. 假设两个AlertManager同时收到告警实例并同时到达Notification Pipeline的Wait阶段。在该阶段A0无需等待而A1需要等待15秒。
  2. A0直接发送通知,生成相应的Notification Log并广播
  3. A1等待15秒之后进入去重阶段,但是由于已经同步到A0广播的Notification Log,通知不再发送

当集群中排名靠前的alertmanager由于某种原因导致通知发送失败时,后续实例会等待一段时间再尝试发送,此时也会影响最终收到告警的时间。


参考

  1. 关于 Alertmanager 中 group_interval 与 repeat_interval 上的一些坑
  2. issue:Some troubles about group_interval, group_wait and repeat_interval
  3. Prometheus告警模型分析
  4. alertmanager集群实例Wait阶段时长(很多博客写的是5s,实际为15s,见209行peerTimeout参数)

group_wait、group_interval、repeat_interval对告警的影响相关推荐

  1. Prometheus一条告警是怎么触发的

    2019独角兽企业重金招聘Python工程师标准>>> 文章来源:爱可生云数据库 作者:张沈波 第一节:监控采集.计算和告警 第二节:告警分组.抑制.静默 告警分组 告警抑制 告警静 ...

  2. prometheus+alertmanager 企业微信告警

    一.应用安装启动 1.软件准备 alertmanager-0.24.0.linux-amd64.tar.gz blackbox_exporter-0.22.0.linux-amd64.tar.gz n ...

  3. Prometheus+Grafana监控告警配置

    文章目录 Prometheus介绍 Prometheus及其组件安装 Prometheus安装 PromQL介绍 mysqld_exporter组件安装 node_exporter组件安装 alert ...

  4. Kubernetes监控体系(12)-alertmanager配置钉钉和邮件告警

    打开电脑版钉钉创建机器人 1.创建钉钉机器人 打开电脑版钉钉,创建一个群,创建自定义机器人,按如下步骤创建 https://ding-doc.dingtalk.com/doc#/serverapi2/ ...

  5. 运维监控系列(15)-Alertmanager添加163邮箱、钉钉、微信告警通知功能

    163邮箱 可用通过邮件方式进行告警通知的发送,接着上篇文档,我们配置发送邮件告警方式. 1. 设置163邮箱 发送邮件,需要smtp邮件服务器,首先需要对网易邮箱进行设置. 首先登陆163邮箱,进入 ...

  6. Alertmanager 使用阿里云电话告警。

    描述 上篇文章Prometheus.Alertmanager.Grafana讲述到了最基础的邮件告警和基础的告警规则. 生产环境中,只有邮件告警,基础的告警规则是不够的,需要多种告警方式,接收方式. ...

  7. Prometheus之Alertmanager告警

    文章目录 告警流程 部署Alertmanager Alertmanager配置介绍 Prometheus rule文件配置 邮件告警 开启邮箱授权 配置Alertmanager 验证 钉钉告警 钉钉创 ...

  8. 搭建Prometheus配置企业微信告警

    ** 一.各种配置文件和容器准备 ** 1.数据监测端口 docker run -d -p 9100:9100 -v /proc:/bridge/proc -v /sys:/bridge/sys -v ...

  9. 使用 Prometheus 实现邮件/企业微信告警

    一.安装 AlterManager 如果没有安装 Prometheus 以及监控客户端的话,可以看博主前面的文章:Prometheus(普罗米修斯)监控系统 [root@k8s-master01 ~] ...

最新文章

  1. ViewPager与Fragment结合使用,以及切换的时候Fragment 的生命周期
  2. 编程语言代码编写指南
  3. mysql迭代查询并分页_mysql 数据库 分页查询优化
  4. iOS开发Objective-C基础之──多态
  5. 华为手机连接电脑用什么软件_屏幕镜像怎么连接电脑?使用这款软件,轻松投屏苹果手机到电脑...
  6. 如何在局域网上托管ASP.NET Web应用程序
  7. Android开发笔记(一百七十六)借助FileProvider发送彩信
  8. nodejs模块hashmap
  9. 亚信安全“双引擎”AI技术 亮相2017华为全联接大会
  10. 你是否需要购买网站重构?
  11. PS 曲线(改变图片不同的色彩效果)
  12. Blender建模:如何改变窗口布局?
  13. 谷粒商城P46 gulimall-gateway刷新验证码出现503错误
  14. 华为收入超过阿里腾讯总和!等等,先把鸿蒙说清楚!
  15. 江苏在职读研计算机专业,计算机技术专业江苏科技大学在职研究生的相关信息介绍...
  16. android友盟埋点,React Native 的友盟统计--打点/埋点
  17. Java实现 蓝桥杯VIP 算法提高 促销购物
  18. neo4j ogm_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
  19. Diary(八)——日志信息删除与修改(下)
  20. 数据包络分析法(DEA)在数学建模中的应用

热门文章

  1. linux shell编写脚本,执行命令同时操作多台主机
  2. ThreeJS后期处理
  3. 深度清理C盘空间,让你的C盘多出20G
  4. 我的世界个人服务器搭建
  5. npm引入小程序官方WeUI组件库weui-miniprogram
  6. 【Linux】Rsync基于SSH认证的使用(rsync 命令属于1 v 4 的命令、rsync常用参数基本用法)
  7. python输出随机字符串代码
  8. 微信公众号添加word文档附件教程_公众号添加Excel、PDF、PPT等附件教程
  9. GraphQL实战-第一篇-GraphQL介绍
  10. 三星note20u计算机功能,三星Note20Ultra隐藏功能有哪些,三星Note20Ultra使用教程