Alertmanager是一种开源软件,用于管理和报警监视警报。它与Prometheus紧密集成,后者是一种流行的开源监视和警报系统。Alertmanager从多个源接收警报和通知,并根据一组配置规则来决定如何处理和发送这些警报。
因此,Alertmanager的功能可以概括为:
Alertmanager支持各种通知方式,例如电子邮件、钉钉等。
在Prometheus中一条告警规则组成
关键特点:
Alertmanager安装
1.下载Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
2.解压
tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz
#启动
./alertmanager --config.file=alertmanager.yml
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
关于Alertmanager的使用流程:
Alert的三种状态:
pending:警报被激活,但是低于配置的持续时间。这里的持续时间即rule里的FOR字段设置的时间。改状态下不发送报警。
firing:警报已被激活,而且超出设置的持续时间。该状态下发送报警。
inactive:既不是pending也不是firing的时候状态变为inactive
prometheus触发一条告警的过程:
prometheus—>触发阈值—>超出持续时间—>alertmanager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信等。
OK,现在我们部署了Alertmanager,那么我们的需求就是应用程序监控,如果应用程序挂了,触发邮件发送开发人员。
首先进到Promethus的根目录下:创建rule.yml文件。
我们先来简单介绍一下rule.yaml的配置属性。
groups: # 告警规则组
- name: server-alarm
rules: #规则,可以配置多个alert告警
- alert: # 告警名称
expr: # 告警表达式,基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
for: # 评估等待时间,可选,用于表示只有当触发条件持续一段时间后才发送告警,在等待期间新产生告警 的状态为pending。
labels: #自定义标签,允许用户指定要附加到告警上的一组附加标签。
severity: # 告警严重程度
annotations: #用于指定一组附加信息,比如用于描述告警详细信息的文字等
summary: # 告警摘要
description: # 告警详细描述
其中severity有以下几种常用值。
#配置规则
groups:
- name: server-alarm
rules:
- alert: "InstanceDown"
expr: up == 0
for: 1m
labels:
severity: warning
annotations:
summary: "{{ $labels.instance }}"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."
配置Prometheus关联Alertmanager地址和rule规则启用。
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.140.133:9093
rule_files:
- "rule.yml"
动态更新配置 curl -X POST http://localhost:9090/-/reload
配置Alertmanager的alertmanager.yml配置文件
alertmanager.yml主要包含两个部分:路由(route) + 接收器(receivers)
编辑alertmanager.yml文件保存。
global:
smtp_smarthost: 'smtp.163.com:25' # SMTP服务器地址和端口
smtp_from: '[email protected]' # 显示在邮件“发件人”字段中的地址
smtp_auth_username: '[email protected]' # STMP认证时使用的用户名
smtp_auth_password: 'TCNTXJTZUXJHJJPX' # SMTP认证时使用的密码,不是密码
smtp_require_tls: false # SMTP服务器是否需要TLS加密
route:
receiver: 'email' # 发送告警通知的收件人,和下面的接受者名称匹配
group_wait: 10s # 在发送前等待各个警报的时间
group_interval: 30s # 相同警报名称的警报发送间隔
repeat_interval: 10m # 重复发送警报的时间间隔
group_by: ['alertname'] # 根据警报名分组告警接收者
# 告警接收者
receivers:
- name: 'email' # 接收者名称
email_configs:
- to: '[email protected]' # 接收告警邮件的收件人
#守护进程方式启动
nohup ./alertmanager --config.file=alertmanager.yml &
查看Prometheus配置,以及rules是否生效
在看一下Alertmanager。
OK,接下来 就开始验证告警的功能。
首先,我们先停止springboot应用程序。
Prometheus中已经看到服务down了。
Alertmanager中发现了一处告警。
查看邮件: