四、详细介绍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、告警的收敛


在这里插入图片描述
告警的收敛有三种机制(分组、抑制、静默)



  1. 分组(group):将类似性质的警告分类为单个通知
    场景:1. 减少同类消息的数量
    :::::::::: 2.同类告警聚合(帮助运维排查)


  2. 抑制(Inhibitor):当警告发出后,停止重复发出由此警告引发的其他警告
    场景:mysql服务嘎调造成mysql主从不同步,这个现象会出现两种告警,但是其根本原因是mysql服务挂掉造成的,抑制就能避免重复发送,直发送主要告警原因


  3. 静默 (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)
上一篇:2020-10-23(SMC加密技术)
下一篇:三、Prometheus配置告警

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月10日 05时09分09秒