Prometheus教程(6)AlertManager告警部署与配置

Prometheus教程(6)AlertManager告警部署与配置

一、 Alertmanager 介绍

AlertManager 是 Prometheus 生态中实现告警管理的关键组件。Prometheus会定期检查指标数据是否与设定好的告警规则匹配,如果达到了告警阈值,会生成相应的告警通知并发送给AlertManager。告警通知包括邮件、电话、短信、钉钉、企业微信等多种方式,并且还有类似睿象云(https://www.aiops.com/)等第三方告警平台提供了电话告警、短信告警API

AlertManager 还可以根据告警消息包含的标签和事先配置的路由规则,将告警消息通知给不同的接收者,在告警过程中还支持对告警信息进行分组、去重、抑制和分发工作,确保告警信息的精准送达和高效处理,例如将带有"database"标签的告警通过WeChat发给DBA。

二、安装与配置Alertmanager

1、下载安装包

通过github下载二进制格式的安装包,进行解压后可以获取到二进制程序以及配置文件alertmanager.yml

wget https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz
tar zxf alertmanager-0.28.1.linux-amd64.tar.gz -C /data/alertmanager

altermanager1.png

2、Alertmanager的配置

通过alertmanager.yml文件可以进行告警分组、告警路由、告警抑制、告警静默等配置,配置文件分为以下几个主要部分:

· 全局配置(global):全局通用参数,比如用于邮件通知的SMTP配置以及其他第三方配置

· 模板(templates):定义告警通知时使用的模板。例如HTML模板、邮件模板

· 告警路由(route):根据告警标签进行匹配,确定告警分组和通知逻辑

· 接收人 (receivers):接收人信息,配合告警路由使用,确保告警通知到达正确的目的地,可以是邮箱、微信等

· 抑制规则 (inhibit rules):通过设置抑制规则来减少不必要的告警,避免告警泛滥


alertmanager.yml 基础配置示例

global:
  #定义发送邮件所使用的服务器信息,这里使用的是QQ邮箱,相关信息都在QQ邮箱中获取
  smtp_smarthost: 'smtp.qq.com:587'
  smtp_from: '13841276@qq.com'
  smtp_auth_username: '13841276@qq.com'
  smtp_auth_password: 'xxxxxxxxxxxxxxxx'
  smtp_require_tls: true 

route:
  group_by: ['alertname']    #按标签对告警分组,同一标签下的多条告警会合并成一条消息,减少邮件数量。该标签要和Prometheush rules里定义的一致  
  group_wait: 30s    #收到第一条新告警后等待30秒再一起发送,避免告警风暴
  group_interval: 5m    #如果同一分组下的告警在上次发送后又出现,需要等5分钟才再次发送  
  repeat_interval: 1h    #如果告警持续存在,重复发送的间隔,避免频繁发送
  receiver: 'email-alert'    #指定告警接受者

receivers:                                   #定义告警接受者
  - name: 'email-alert'                      #告警接受者的名字
    email_configs:                           #配置邮件告警
      - to: '13841276@qq.com'                # 收件人邮箱
        send_resolved: true                  # 发送恢复通知


#inhibit_rules:
#  - source_match:
#      severity: 'critical'
#    target_match:
#      severity: 'warning'
#    equal: ['alertname', 'dev', 'instance']


3、启动Altermanager

· 使用amtool检查配置文件语法

#检查配置文件
./amtool check-config alertmanager.yml

altermanager2.png


· 配置文件检测没有问题后就可以启动服务,默认监听9093端口,通过浏览器访问可以看到相关配置信息,并且可以进行静默配置等操作

#启动服务
./alertmanager --config.file=alertmanager.yml


altermanager3.png


4、对接Prometheus

· 修改prometheus配置文件,增加alerting区域配置,让alertmangers能与Prometheus通信

global:
  scrape_interval: 60s

#配置Altermanager信息  
alerting:
  alertmanagers:
    - static_configs:
      - targets:
        - 10.128.35.242:9093

#指定Prometheus告警规则文件
rule_files:
    - "/data/prometheus/conf/node.yml"

scrape_configs:
  - job_name: "prometheus"
    metrics_path: "/metrics"
    static_configs:
    - targets: ["10.128.35.242:9090"]

  - job_name: "node"
    metrics_path: "/metrics"
    static_configs:
    - targets:
      - "10.128.35.242:9100"
      - "10.128.35.243:9100"
      - "10.128.35.244:9100"


· 配置Prometheus告警规则,虽然脱离Altermanager也可以进行配置,但是没有告警功能。这里建议为不同的对象建立不同的规则文件,比如web.yml、mysql.yml,便于管理

vi /data/prometheus/rules/node.yml
groups:
  - name: node_alerts  #告警分组,组下的告警会整合在一个通知中,需要和Altermanager里的group_by一致
    rules:
      - alert: InstanceDown  #定义告警事件名
        expr: up == 0    #报警表达式,当表达式成立时就满足告警条件 
        for: 1m  #事件持续时长,当表达式和持续时间都满足后就触发告警,如果为0代表立即触发
        labels:   #为告警事件自定义标签
          severity: critical  #定义了severity标签,值为critical,可用于告警分组
        annotations:  #告警注释内容
          summary: "Instance {{ $labels.instance }} down"    #告警主题
          description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute"  #告警详情


观察Prometheus与Alertmanager的联通状态

altermanager4.png

5、告警状态与查看

当报警触发后访问Altermanager Web控制台可以看到具体的信息以及告警状态,告警状态会分为 Inactive(无事件)、Pending(触发阈值,但未满足告警持续时间)、Firing(触发告警)三种,当满足触发告警条件后就会发送告警通知,此时在Altermanager和Prometheus控制台都可以看到信息

altermanager2.png

文章评论

猜你喜欢

Prometheus教程(7)使用PushGateway自定义监控

运维技术 Prometheus教程(7)使用PushGateway自定义监控

一、PushGateway 介绍在 Prometheus 的体系结构中,需要依赖 PushGateway 来对一些生命周期较短的任务或者无法被 Prometheus 直接拉取到指标的对象进行...

Prometheus教程(5)常用exporter的安装与使用配置

运维技术 Prometheus教程(5)常用exporter的安装与使用配置

一、exporter介绍Prometheus exporter的作用是通过HTTP协议开放符合规范的指标数据给Prometheus抓取。在Prometheus官网提供了大量现成的exporter,基本...

Prometheus教程(4)指标类型与常用函数

运维技术 Prometheus教程(4)指标类型与常用函数

一、Prometheus 指标类型介绍Prometheus 提供了四种指标类型,这些类型定义了指标值的语义和处理方式,不同的指标类型也有不同的聚合函数搭配使用1、Gauges仪表盘型,该指标类型的值会...

Prometheus教程(3)PromQL用法详解

运维技术 Prometheus教程(3)PromQL用法详解

一、PromQL 基本介绍PromQL 全称 Prometheus Query Language,它是 Prometheus 专用查询语言。通过PromQL可以灵活的对每个指标实现条件查询、...

运维技术 Prometheus教程(2)安装部署Grafana并对接Prometheus

Prometheus教程(2)安装部署Grafana并对接Prometheus

一、Grafana介绍Grafana是一款开源的可视化平台,它能够将来自不同数据源的数据(可以集成 Prometheus、Elasticsearch、MySQL 等多种数据源)转换成丰富的图形、图表(...