prometheus使用 (十五) alertmanager特性--分组

什么是分组

我现在有200台主机,上面都部署了node-exporter。 我的告警规则和前面一样监听node节点的服务是否正常
现在突然服务器宕机了,这200台节点的告警会同时触发,然后向你发送200个邮件告警((っ °Д °;)っ)完犊子
但是配置了分组后,200条告警发送到alertmanager,一看标签都是一样那就分到一个组里,合并成一条告警进行发送。
以此来减少无用的邮箱信息

#先来看一下我们的配置
#cat /etc/alertmanager/alertmanager.yml 
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'


#这里有一个group_by的参数,它的作用就是将相同k/v的标签放到一个组里

我们这里将两台node-exporter关掉看一下

 

如上,标签alertname的value是相同的,所以会分到一个组中,可以在alertmanager中查看

 

查看邮件,可以看到已经将两条告警合并了

 

我们这里再添加一条告警触发规则

cat >> /etc/prometheus/rules/node_up.yml <<EOF
- name: grafana
  rules:
  - alert: node-up           #这个相当于alertname的值,与之前匹配的相同
    expr: up{job="grafana"} == 0
    for: 10s                  
    labels:                   
      severity: 1             
      team: grafana        #这里标签设置不同的一会用
    annotations:              
      summary: "{{ \$labels.instance }} 已停止运行超过 15s"
      description: hello world
EOF

#重载prometheus
systemctl restart prometheus

我们这里将grafana停掉,因为这里alertname的值和上面的node相同,应该会分配到一个组中告警

 

如上,grafana已经被分配到和node一个组中,我们下面看下邮件

已经合并了,但是我们一般告警名称是不会相同,这里我们去匹配定义告警时的子标签

#我们先看一下设置了那些子标签
groups:
- name: node-up
  rules:
....
      severity: 1              
      team: node
...

- name: grafana
  rules:
...
    labels:              #这个是我们自定义告警时附加的标签
      severity: 1
      team: grafana      #注意,两边的team的值是不同的,我们使用这个去对比
...

修改alertmanager分组(3个节点)

vi /etc/alertmanager/alertmanager.yml
...
route:
  group_by: ['alertname','team']   #在这里添加team匹配的标签
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
...

#重载服务
systemctl restart alertmanager

从下图我们可以看到当有多个标签匹配时,有任意标签k/v不相同时,就不会分为同一组(可以按照不同集群来分发)

我们的邮件也被分成两个组进行发送了

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值