一,alertmanager介绍
根据prometheus官网介绍,Prometheus 报警是通过 AlertManager插件来实现的,Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道(电话,微信,短信,邮件等多种 方式),而且很容易做到告警信息进行去重,降噪,分组等。
alertmanager官网地址: https://prometheus.io/docs/alerting/alertmanager/ 后续设定route路由以及设定报警模板会经常翻阅参数。
prometheus对alertmanger配置说明:
# Alertmanager configuration:告警配置,集成alertmanager插件 alerting: alertmanagers: - static_configs: - targets: - 127.0.0.1:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # 告警规则 # - "first_rules.yml" # - "second_rules.yml"
二,alertmanager安装
1,官网下载二进制安装包
官网下载地址 https://prometheus.io/download/
2,安装(和server、prometheus的node_exporter一样)
wget -c https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz tar zxvf alertmanager-0.20.0.linux-amd64.tar.gz mv alertmanager-0.20.0.linux-amd64/* alertmanager pwd #当前alertmanager的工作目录为:(/usr/local/prometheus/server/alertmanager)
supervisor配置:
[root@cn-hz-21yunwei-devops server]# cat /etc/supervisord.d/alertmanager.conf [program:alertmanager] command=/usr/local/prometheus/server/alertmanager/alertmanager directory=/usr/local/prometheus/server/alertmanager/ stdout_logfile=/logs/prometheus/alertmanager.log autostart=true autorestart=true redirect_stderr=true user=root startsecs=3
启动:
supervisorctl start alertmanager
alertmanager默认监听的是9093端口。
可以通过alertmanager的http访问: http://ip:9093/#/alerts
3,配置prometheus ,集成alertmanager
作用:集成alertmanager插件以及设置报警对象(这里和prometheus部署到同一个机器的,于是填写本地ip和9093端口)
# Alertmanager configuration:告警配置,集成alertmanager插件。 alerting: alertmanagers: - static_configs: - targets: - 127.0.0.1:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: - "rule/*.yml" # - "first_rules.yml" # - "second_rules.yml"
重启prometheus 生效。
三,alertmanager配置文件说明
多查看官方文档: https://prometheus.io/docs/alerting/configuration/
alertmanger.yml主要作用有三个:
(1)设定告警媒介
(2)设定告警模版
(3)路由告警对象。
alertmanger的配置文件放到了alertmanger 安装目录下,文件名:alertmanager.yml,默认配置内容文件如下:
[root@cn-hz-21yunwei-devops alertmanager]# cat alertmanager.yml global: resolve_timeout: 5m route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 1h receiver: 'web.hook' receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:5001/' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance']
alertmanager主要处理流程(引用:https://www.kancloud.cn/huyipow/prometheus/527563,对alertmanager做了很全面到位的解释)
接收到Alert,根据labels判断属于哪些Route(可存在多个Route,一个Route有多个Group,一个Group有多个Alert)
将Alert分配到Group中,没有则新建Group
新的Group等待group_wait指定的时间(等待时可能收到同一Group的Alert),根据resolve_timeout判断Alert是否解决,然后发送通知
已有的Group等待group_interval指定的时间,判断Alert是否解决,当上次发送通知到现在的间隔大于repeat_interval或者Group有更新时会发送通知
配置文件说明: global: resolve_timeout: 5m # 恢复的超时时间,默认是5分钟 #路由树的根节点,每个传进来的报警从这里开始 route: group_by: ['alertname'] #将传入的报警中有这些标签的分为一个组 group_wait: 10s #指分组创建多久后才可以发送压缩的警报,也就是 初次发警报的延时 group_interval: 10s #当第一个通知发送,等待多久发送压缩的警报 repeat_interval: 1h #如果报警发送成功,等待多久重新发送一次,zabbix阶段告警类似 receiver: 'web.hook'# 用于请求接口等, receivers: - name: 'web.hook' webhook_configs: - url: 'http://127.0.0.1:5001/' # 是发送post请求,还携带了 告警的数据内容。--接口就可以入库了。多个告警系统放到同一个数据库来。就 可以统计每周,每个月的告警数量以及相似的告警数量排行 inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' # 告警级别 # 如果警报名称相同,则静音 equal: ['alertname', 'dev', 'instance']
转载请注明:21运维 » Prometheus 常用报警插件alertmanager插件的安装与alertmanager.yml配置文件说明