
四、详细介绍Alertmanager告警
发布日期:2021-05-07 12:05:32
浏览次数:18
分类:原创文章
本文共 3188 字,大约阅读时间需要 10 分钟。
1、告警状态
在prometheus上有三种告警状态
- Inactive:什么都没有发生
- Pending:已触发阈值,但为满足告警持续时间
- Fifing:已触发阈值且满足告警持续时间。警告会发送给接收者
2、告警分配
在alertmanager.yml中合理分配告警
示例:
route: # 默认路由 receiver: 'default-receiver' group_wait: 30s group_interval: 5m repeat_interval: 6h group_by: [cluster, alertname]routes: # 子路由,这里的规则都不匹配,就会使用route的默认路由- receiver: 'data-pager' group_wait: 10s match_re: # 正则匹配 service: mysql|cassandra # 匹配service为mysql或cassandra的数据- receiver: 'frontend-pager' group_by: [product, environment] match: # 精准匹配 team: frontend # 匹配team的值为frintend的数据receivers:- name: 'dev' email:_configs: - to: 'xxxx@163.com'- name: 'dba' email_configs: - to: 'xxxx@qq.com'
3、告警的收敛
告警的收敛有三种机制(分组、抑制、静默)
-
分组(group):将类似性质的警告分类为单个通知
场景:1. 减少同类消息的数量
:::::::::: 2.同类告警聚合(帮助运维排查) -
抑制(Inhibitor):当警告发出后,停止重复发出由此警告引发的其他警告
场景:mysql服务嘎调造成mysql主从不同步,这个现象会出现两种告警,但是其根本原因是mysql服务挂掉造成的,抑制就能避免重复发送,直发送主要告警原因 -
静默 (Silences):是一种简单的特定时间的提醒机制
场景:比如夜里要进行服务升级,需要让告警暂停一段时间,就可以配置静默,在这段时间内是不发送告警的
Alertmanager的工作流程:
1、Alertmanager收到prometheus发来的告警
2、会先到DIspatcher进行Group分组
3、然后到Notification Pipeline的通道中,先进行inhibitor抑制,然后Silences静默,之后到route,route下可以有多个子路由routes,配置发送告警到不同的组
分组使用示例:
# 先查看prometheus的告警配置[root@localhost prometheus]# vim rules/alert.ymlgroups:- name: example rules: # alert for any instance that is unreachable for >5 minutes - alert: InstanceDown # 这里定义了告警名称 expr: up == 0 for: 1m labels: serveriry: error annotations: sumary: "Instance { { $labels.instance }} down" description: "{ { $labels.instance }} of job { { $labels.job }} has been down for more than 5 minutes." [root@localhost alertmanager]# vim alertmanager.yml ……省略部分route: # 发送告警的规则 group_by: ['alertname'] # 根据标签进行分组(可以写多个标签,逗号分隔)默认是以告警名称为分组依据。 group_wait: 10s # 分组等待时间(等待10s发送一次,将10s内的告警一次发送出去) group_interval: 10s # 告警分组之间发送告警的间隔时间 repeat_interval: 1h # 重复告警的时间(发送的频率)
抑制的使用示例:
# 在这个示例中,通过告警级别来抑制,级别高的抑制级别低的,由此来发送高级别的告警[root@localhost alertmanager]# vim alertmanager.yml ……省略部分inhibit_rules: # 抑制,用于告警收敛 - source_match: severity: 'critical' # 危险的告警级别 target_match: severity: 'warning' # 紧急的告警级别 equal: ['alertname', 'dev', 'instance'] # equal的列表值中的标签值都匹配的告警之间才会抑制
静默配置
在alertmanager的web页面上配置,默认是9093端口(如:192.168.10.100:9093)
prometheus告警触发流程图
4、常用监控
常见的监控指标
cpu使用率: 100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100)内存使用率: 100 - (node_memory_Menfree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes)/ node_memory_MemTotal_bytes * 100磁盘使用率: 100 - (node_filesystem_free_bytes{mountpoint = "/",fstype =~"ext4|xfs"} / node_filesystem_size_bytes{mountpoint = "/",fstype =~"ext4|xfs"} * 100)
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月10日 05时09分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Asp.Net Core 2.1+的视图缓存(响应缓存)
2019-03-06
服务器开发- Asp.Net Core中的websocket,并封装一个简单的中间件
2019-03-06
没花一分钱的我竟然收到的JetBrains IDEA官方免费赠送一年的Licence
2019-03-06
Redis 集合统计(HyperLogLog)
2019-03-06
RE套路 - 关于pyinstaller打包文件的复原
2019-03-06
【wp】HWS计划2021硬件安全冬令营线上选拔赛
2019-03-06
Ef+T4模板实现代码快速生成器
2019-03-06
dll详解
2019-03-06
c++ static笔记
2019-03-06
C++中头文件相互包含与前置声明
2019-03-06
JQuery选择器
2019-03-06
MVC中在一个视图中,怎么加载另外一个视图?
2019-03-06
SQL--存储过程
2019-03-06
MVC学习系列5--Layout布局页和RenderSection的使用
2019-03-06
MVC学习系列13--验证系列之Remote Validation
2019-03-06
多线程之volatile关键字
2019-03-06
2.1.4奇偶校验码
2019-03-06
2.2.2原码补码移码的作用
2019-03-06
多线程之Lock显示锁
2019-03-06
ForkJoinPool线程池
2019-03-06