alertmanager 报警工具

AlertManager 简介

Prometheus将数据采集和报警分成了两个模块。报警规则配置在Prometheus Servers上,然后发送报警信息到AlertManger,然后我们的AlertManager就来管理这些报警信息,包括silencing、inhibition,聚合报警信息过后通过email、PagerDuty、HipChat、Slack 等方式发送消息提示。

  • 让AlertManager提供服务总的来说就下面3步:

    • 安装和配置AlertManger
    • 配置Prometheus来和AlertManager通信
    • 在Prometheus中创建报警规则
  • prometheus报警触发流程

    • prometheus采集数据
    • 判断当前数据指标有没有到达阈值
    • 如果触发,根据配置文件中的for字段判断持续时间
    • 是的话发送给alertmanager
    • alertmanager经过
    • 分组
    • 抑制
    • 静默等一些列处理流程
    • 发送给指定的接收器, 如:邮件、微信等

部署AlertManager

wget https://github.com/prometheus/alertmanager/releases/download/v0.17.0/alertmanager-0.17.0.linux-amd64.tar.gz
tar xvf alertmanager-0.17.0.linux-amd64.tar.gz
mv alertmanager-0.17.0.linux-amd64 /usr/local/alertmanager
cd /usr/local/alertmanager/

配AlertManager

# 编辑主配置文件
vim /usr/local/alertmanager/alertmanager.yml
global: 
  resolve_timeout: 5m #解析的超时时间
  smtp_smarthost: 'smtp.163.com:25' #邮箱smtp地址
  smtp_from: '[email protected]' #来自哪个邮箱发出的
  smtp_auth_username: '[email protected]' #邮箱的用户名
  smtp_auth_password: 'PASSWORD' #这里是邮箱的授权密码,不是登录密码
  smtp_require_tls: false #是否启用tls

route:  #设置报警的分发策略,通过route实现告警的分配,所有的报警都会发送到mail这个接收器中
  group_by: ['alertname'] #采用哪个标签进行分组
  group_wait: 60 #分组等待的时间为10秒,收到报警后并不是马上发送出去,看看还有没有alertname这个标签的报警发过来,如果有的话,一起发出报警
  group_interval: 60 #上一组报警与下一组报警的间隔时间为10秒
  repeat_interval: 24h #重复报警时间
  receiver: 'mail'
  
receivers: #报警接收人
- name: 'mail' #谁来接收这个报警
  email_configs: #email的配置
  - to: '[email protected]' #报警接收人的邮件地址
    send_resolved: true  #发送恢复通知
  
inhibit_rules: #抑制规则,报警抑制角色,用于报警收敛,发送关键报警
  - source_match: #匹配我这个报警发生后,其它报警被抑制掉,
      severity: 'critical' #报警级别为critical
    target_match: #其它报警
      severity: 'warning' #报警级别为warning
    equal: ['alertname', 'dev', 'instance'] #对哪些报警进行抑制,要匹配这里的标签

# 检查alertmanager.yml配置文件是否正确
/usr/local/alertmanager/amtool check-config /usr/local/alertmanager/alertmanager.yml

# 生成服务文件
cat > /usr/lib/systemd/system/alertmanager.service << EOF
[Unit]
Description=prometheus

[Service]
Restart=on-failure
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
systemctl daemon-reload
systemctl start  alertmanager
systemctl enable alertmanager
ps -ef|grep alertmanager

alertmanager与prometheus集成

  • prometheus与alertmanager通信
    • 在prometheus server上定义监控规则
    • 当监控的阈值超过定义的阈值后会发送报警
    • 推送报警规则给alertmanager
    • 通过alertmanager的流程处理发送给报警接收人
# 创建报警规则目录
mkdir -p /usr/local/prometheus/rules

vim /usr/local/prometheus/prometheus.yml
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 127.0.0.1:9093

rule_files:
  - "rules/*.yml" #报警规则存放文件夹

配置监控实例,监控job的状态

vim /usr/local/prometheus/rules/unreachable.yml
groups: 
  - name: general.rules #同性质的一组报警,监控当前节点的指标的组名称
    rules:
    - alert: InstanceDown
      expr: up == 0 #每一个实例都会有一个up的状态,up是默认赋予被监控端的一个指标,0为失败状态,1为存活状态
      for: 1m #当前报警的持续时间,1分钟之内如果都是up == 0的状态,才会发出报警
      labels: #设置报警级别
        severity: error #报警级别为error级别
      annotations: #注释信息
        summary: "Instance {{ $labels.instance }} down"
        description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."

/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
kill -hup `ps -ef |grep prometheus|grep -v grep|awk '{print $2}'`        
image.png

报警状态

  • 报警状态

    • inactive-已收到报警
    • pending-已经触发报警阈值,但未满足告警持续时间 #/usr/local/prometheus/rules/unreachable.yml 中设置的for时间
    • firing-已触发阈值,且满足报警持续时间,将报警发送给报警接收者
  • 报警的触发流程

    • 第一次发现expr: up == 0,prometheus此时将报警状态设置为inactive
    • 第二次发现expr: up == 0,prothemeus不会立即通知alertmanager,要等待for: 1m的持续时间,如果1分钟后还是expr: up == 0的状态,prometheus会将pending状态变更为firing状态,变为firing状态时,prometheus将通知alertmanager发送报警
    • 发送报警的时间取决于数据采集时间+报警评估时间

报警邮件

image

恢复邮件

image

报警收敛-静默

静默是一种简单的特定时间的静音提醒机制,使用标签来匹配这一批是不发送的

添加静默
http://192.168.21.37:9093/#/alerts

右上角-->new silence-->start开始时间-->end结束时间-->matchers匹配
-->name匹配名称-->填写job-->value值-->填写linux-node-->
creator名称-->填写静默名称-->点击create

作用
阻止预期的报警,通常是在系统上线或维护阶段使用

你可能感兴趣的:(alertmanager 报警工具)