prometheus 告警配置以及配置项解释

监控是脱离不了告警的。告警是指把监控发现的问题通过微信或者短信等通信手段,告诉我们。zabbix有他的告警机制。而prometheus是通过alertmanager实现的。

alertmanager的安装

alertmanager是支持集群模式的。本文也是用集群方式安装。

  • 选择两台或者三台机器用于部署alertmanager。
  • 下载alertmanager安装包,这个在官方下载就行了。
  • 分别把压缩包解压到各个机器上
  • 修改配置文件alertmanager.yml
global:
  resolve_timeout: 5m

receivers:
- name: magpie.ding
  webhook_configs:
  - url: http://10.252.3.10:9002/ding_message
    send_resolved: false

route:
  receiver: magpie.ding
  group_by: ['kind']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1m
  routes:
  - receiver: magpie.ding
    match_re: 
      severity: warnging

inhibit_rules:
  - source_match:
      alertname: 'node_time:sum:error'
    target_match:
      alertname: 'node_netstat_Icmp_InMsgs:error'
    equal: ['kind','severity']

global 这个是全局设置
resolve_timeout 当告警的状态有firing变为resolve的以后还要呆多长时间,才宣布告警解除。这个主要是解决某些监控指标在阀值边缘上波动,一会儿好一会儿不好。


receivers 定义谁接收告警。也就是PrometheUS把告警内容发送到这个地方,然后这个地方的某些东东把告警发送给我们。
name就是个代称方便后面用
webhook_configs 这个是说 PrometheUS把告警发送给webhook,也就是一个http的url,当然这个url需要我们自己定义服务实现了。PrometheUS还支持其他的方式,具体可以参考官网:https://prometheus.io/docs/alerting/configuration/
在这里插入图片描述
send_resolved 当问题解决了是否也要通知一下


route 是个重点,告警内容从这里进入,寻找自己应该用那种策略发送出去
receiver 一级的receiver,也就是默认的receiver,当告警进来后没有找到任何子节点和自己匹配,就用这个receiver
group_by 告警应该根据那些标签进行分组
group_wait 同一组的告警发出前要等待多少秒,这个是为了把更多的告警一个批次发出去
group_interval 同一组的多批次告警间隔多少秒后,才能发出
repeat_interval 重复的告警要等待多久后才能再次发出去
routes 也就是子节点了,配置项和上面一样。告警会一层层的找,如果匹配到一层,并且这层的continue选项为true,那么他会再往下找,如果下层节点不能匹配那么他就用区配的这一层的配置发送告警。如果匹配到一层,并且这层的continue选项为false,那么他会直接用这一层的配置发送告警,就不往下找了。
match_re 用于匹配label。此处列出的所有label都匹配到才算匹配


inhibit_rules这个叫做抑制项,通过匹配源告警来抑制目的告警。比如说当我们的主机挂了,可能引起主机上的服务,数据库,中间件等一些告警,假如说后续的这些告警相对来说没有意义,我们可以用抑制项这个功能,让PrometheUS只发出主机挂了的告警。
source_match 根据label匹配源告警
target_match 根据label匹配目的告警
equal 此处的集合的label,在源和目的里的值必须相等。如果该集合的内的值再源和目的里都没有,那么目的告警也会被抑制。


  • 分别启动alertmanager
    比如在A,B两个节点上部署alertmanager,那么A节点的启动命令:
#你应该用nohup后台启动 
./alertmanager --config.file=alertmanager.yml --cluster.peer=hostB:9094

B节点的启动命令:

#你应该用nohup后台启动 
./alertmanager --config.file=alertmanager.yml --cluster.peer=hostA:9094
  • 在PrometheUS上进行配置
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - hostA:9093
      - hostB:9093
  • 重启或者重新加载PrometheUS的配置
  • 访问http://hostA:9093 就能看到alertmanager的页面
    在这里插入图片描述
    alertmanager部署完毕
测试
  • 设置监控规则和阀值
    新建一个文件名字是prometheus.rules.yml(名字是自定义的),
- name: test_alert_up
  rules:
  - alert: node_time:sum:error
    expr: up < 1
    #for: 10s
    labels:
      severity: warnging
      action: text
      kind: node_export
    annotations:
      summary: not up 
      last: "{{ $value }}"

上面的规则是检查,node_export是不是存活
for 当一个监控项超过了阀值时,这个告警处于pengding状态,而pending状态维持for秒以后,就会切换为fire状态,也就是将告警信息发送给了alertmanager

  • 把规则和PrometheUS关联起来,修改PrometheUS的配置文件
rule_files:
  - "prometheus.rules.yml"
  • 重新加载配置或者重启
    在这里插入图片描述
  • 停掉一个node_export
    在这里插入图片描述
  • 查看你的告警服务是不是告警了,我这里的服务是我自己写的,通过钉钉告警
    在这里插入图片描述
其他

如果你觉得alertmanager的inhibit_rules麻烦,你可以不配置inhibit_rules,而是登录alertmanager的页面,新建slience规则,也能达到关闭某个告警的效果。
在这里插入图片描述
在这里插入图片描述


先写到这里了,有问题进QQ群630300475聊一聊,大家一起进步

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值