group_wait、group_interval、repeat_interval对告警的影响
目录
- 官方解释
- 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
告警过程
- alertmanager收到告警后,等待group_wait(10s),发送第一次通知
- 未达到group_interval(30m 10s),休眠
- 达到group_interval(30m 10s)时,小于repeat_interval(50m 10s),休眠
- 到下一个group_interval(60m 10s),大于repeat_interval(50m 10s),发送第二次通知
Firing(0s) - 第一次通知(10s) - 第二次通知(60m 10s)
结论
- 当repeat_interval小于group_interval时,repeat_interval不影响告警
- 当repeat_interval大于group_interval,且不为group_interval倍数,影响告警
- 当repeat_interval大于group_interval,且为group_interval倍数,可能影响告警(*注)
注:
当repeat_interval大于group_interval,且为group_interval倍数时,可能发生两种情况:
- 在repeat_interval时发出告警
- 在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,此时对于上述问题的处理如下:
- 假设两个AlertManager同时收到告警实例并同时到达Notification Pipeline的Wait阶段。在该阶段A0无需等待而A1需要等待15秒。
- A0直接发送通知,生成相应的Notification Log并广播
- A1等待15秒之后进入去重阶段,但是由于已经同步到A0广播的Notification Log,通知不再发送
当集群中排名靠前的alertmanager由于某种原因导致通知发送失败时,后续实例会等待一段时间再尝试发送,此时也会影响最终收到告警的时间。
参考
- 关于 Alertmanager 中 group_interval 与 repeat_interval 上的一些坑
- issue:Some troubles about group_interval, group_wait and repeat_interval
- Prometheus告警模型分析
- alertmanager集群实例
Wait
阶段时长(很多博客写的是5s,实际为15s,见209行peerTimeout
参数)
group_wait、group_interval、repeat_interval对告警的影响相关推荐
- Prometheus一条告警是怎么触发的
2019独角兽企业重金招聘Python工程师标准>>> 文章来源:爱可生云数据库 作者:张沈波 第一节:监控采集.计算和告警 第二节:告警分组.抑制.静默 告警分组 告警抑制 告警静 ...
- prometheus+alertmanager 企业微信告警
一.应用安装启动 1.软件准备 alertmanager-0.24.0.linux-amd64.tar.gz blackbox_exporter-0.22.0.linux-amd64.tar.gz n ...
- Prometheus+Grafana监控告警配置
文章目录 Prometheus介绍 Prometheus及其组件安装 Prometheus安装 PromQL介绍 mysqld_exporter组件安装 node_exporter组件安装 alert ...
- Kubernetes监控体系(12)-alertmanager配置钉钉和邮件告警
打开电脑版钉钉创建机器人 1.创建钉钉机器人 打开电脑版钉钉,创建一个群,创建自定义机器人,按如下步骤创建 https://ding-doc.dingtalk.com/doc#/serverapi2/ ...
- 运维监控系列(15)-Alertmanager添加163邮箱、钉钉、微信告警通知功能
163邮箱 可用通过邮件方式进行告警通知的发送,接着上篇文档,我们配置发送邮件告警方式. 1. 设置163邮箱 发送邮件,需要smtp邮件服务器,首先需要对网易邮箱进行设置. 首先登陆163邮箱,进入 ...
- Alertmanager 使用阿里云电话告警。
描述 上篇文章Prometheus.Alertmanager.Grafana讲述到了最基础的邮件告警和基础的告警规则. 生产环境中,只有邮件告警,基础的告警规则是不够的,需要多种告警方式,接收方式. ...
- Prometheus之Alertmanager告警
文章目录 告警流程 部署Alertmanager Alertmanager配置介绍 Prometheus rule文件配置 邮件告警 开启邮箱授权 配置Alertmanager 验证 钉钉告警 钉钉创 ...
- 搭建Prometheus配置企业微信告警
** 一.各种配置文件和容器准备 ** 1.数据监测端口 docker run -d -p 9100:9100 -v /proc:/bridge/proc -v /sys:/bridge/sys -v ...
- 使用 Prometheus 实现邮件/企业微信告警
一.安装 AlterManager 如果没有安装 Prometheus 以及监控客户端的话,可以看博主前面的文章:Prometheus(普罗米修斯)监控系统 [root@k8s-master01 ~] ...
最新文章
- ViewPager与Fragment结合使用,以及切换的时候Fragment 的生命周期
- 编程语言代码编写指南
- mysql迭代查询并分页_mysql 数据库 分页查询优化
- iOS开发Objective-C基础之──多态
- 华为手机连接电脑用什么软件_屏幕镜像怎么连接电脑?使用这款软件,轻松投屏苹果手机到电脑...
- 如何在局域网上托管ASP.NET Web应用程序
- Android开发笔记(一百七十六)借助FileProvider发送彩信
- nodejs模块hashmap
- 亚信安全“双引擎”AI技术 亮相2017华为全联接大会
- 你是否需要购买网站重构?
- PS 曲线(改变图片不同的色彩效果)
- Blender建模:如何改变窗口布局?
- 谷粒商城P46 gulimall-gateway刷新验证码出现503错误
- 华为收入超过阿里腾讯总和!等等,先把鸿蒙说清楚!
- 江苏在职读研计算机专业,计算机技术专业江苏科技大学在职研究生的相关信息介绍...
- android友盟埋点,React Native 的友盟统计--打点/埋点
- Java实现 蓝桥杯VIP 算法提高 促销购物
- neo4j ogm_带有Hibernate OGM的NoSQL –第一部分:持久化您的第一个实体
- Diary(八)——日志信息删除与修改(下)
- 数据包络分析法(DEA)在数学建模中的应用
热门文章
- linux shell编写脚本,执行命令同时操作多台主机
- ThreeJS后期处理
- 深度清理C盘空间,让你的C盘多出20G
- 我的世界个人服务器搭建
- npm引入小程序官方WeUI组件库weui-miniprogram
- 【Linux】Rsync基于SSH认证的使用(rsync 命令属于1 v 4 的命令、rsync常用参数基本用法)
- python输出随机字符串代码
- 微信公众号添加word文档附件教程_公众号添加Excel、PDF、PPT等附件教程
- GraphQL实战-第一篇-GraphQL介绍
- 三星note20u计算机功能,三星Note20Ultra隐藏功能有哪些,三星Note20Ultra使用教程