Alertmanager的安装和详细使用步骤总结
一、安装步骤
1. 二进制安装
-
下载与解压
- 从GitHub下载最新版本(如v0.23.0):
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz tar -xzf alertmanager-0.23.0.linux-amd64.tar.gz -C /usr/local/ ln -s /usr/local/alertmanager-0.23.0.linux-amd64/ /usr/local/alertmanager
- 创建数据存储目录:
mkdir -p /data/alertmanager/data
。
- 从GitHub下载最新版本(如v0.23.0):
-
配置Systemd服务
- 创建服务文件
/usr/lib/systemd/system/alertmanager.service
:[Unit] Description=Alertmanager After=network.target[Service] Type=simple User=root ExecStart=/usr/local/alertmanager/alertmanager \--config.file=/usr/local/alertmanager/alertmanager.yml \--storage.path=/data/alertmanager/data Restart=on-failure[Install] WantedBy=multi-user.target
- 启动服务:
systemctl enable alertmanager systemctl start alertmanager
- 创建服务文件
2. Docker安装
docker run -d --name alertmanager \-p 9093:9093 \-v /path/to/alertmanager.yml:/etc/alertmanager/alertmanager.yml \-v /data/alertmanager/data:/alertmanager/data \prom/alertmanager:latest
需确保配置文件alertmanager.yml
和存储目录已正确挂载。
二、配置邮件告警
-
全局配置(SMTP设置)
修改alertmanager.yml
文件:global:resolve_timeout: 5msmtp_smarthost: 'smtp.qq.com:465' # QQ邮箱SMTP服务smtp_from: 'sender@qq.com'smtp_auth_username: 'sender@qq.com'smtp_auth_password: 'your_auth_code' # 邮箱授权码,非登录密码smtp_require_tls: false # 必须设为false
-
路由与接收者配置
route:group_by: ['alertname'] # 按告警名称分组group_wait: 10s # 初始等待时间group_interval: 10s # 组内新告警间隔repeat_interval: 1h # 重复发送间隔receiver: 'mail' # 默认接收者receivers: - name: 'mail'email_configs:- to: 'receiver@example.com' # 收件人地址send_resolved: true # 发送恢复通知
-
自定义邮件模板
- 创建模板文件
/data/alertmanager/template/email.tmpl
:{{ define "email.to.html" }} {{ range .Alerts }} 告警名称: {{ .Labels.alertname }}<br> 级别: {{ .Labels.severity }}<br> 实例: {{ .Labels.instance }}<br> 摘要: {{ .Annotations.summary }}<br> {{ end }} {{ end }}
- 在配置中引用模板:
templates:- '/data/alertmanager/template/*.tmpl'
- 创建模板文件
三、核心功能配置
1. 告警分组
- 通过
group_by
字段定义分组标签(如alertname
或instance
),减少重复通知。
2. 抑制规则
inhibit_rules:- source_match: # 匹配源告警severity: 'critical'target_match: # 抑制目标告警severity: 'warning'equal: ['alertname'] # 需匹配的标签
3. 静默配置
- 通过Alertmanager Web界面(默认端口9093)设置静默规则,临时屏蔽特定告警。
4. 路由策略
- 按标签匹配不同接收者:
routes:- receiver: 'slack-team'match:team: 'slack'- receiver: 'email-dba'match:team: 'dba'
四、与Prometheus集成
-
修改Prometheus配置
在prometheus.yml
中添加Alertmanager地址:alerting:alertmanagers:- static_configs:- targets: ['alertmanager:9093']
-
创建告警规则
在Prometheus规则文件(如rules.yml
)中定义触发条件:groups: - name: examplerules:- alert: HighCPUexpr: (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 > 80for: 5mlabels:severity: criticalannotations:summary: "CPU使用率超过80%"
五、高可用性(HA)配置
-
集群部署
启动多个Alertmanager实例,通过--cluster.peer
参数指定对等节点:# 节点1 ./alertmanager --cluster.listen-address=IP1:9094 # 节点2 ./alertmanager --cluster.listen-address=IP2:9094 --cluster.peer=IP1:9094
-
Prometheus多目标配置
在Prometheus中指定所有Alertmanager实例:alertmanagers:- static_configs:- targets:- 'alertmanager1:9093'- 'alertmanager2:9093'
六、验证与测试
-
检查配置文件
amtool check-config alertmanager.yml
-
发送测试告警
使用curl
模拟告警:curl -XPOST http://localhost:9093/api/v1/alerts -d '[{"labels": {"alertname": "TestAlert", "instance": "example"},"annotations": {"summary": "This is a test"}} ]'
注意事项
- 权限问题:确保数据目录(如
/data/alertmanager
)有写入权限。 - 防火墙:开放Alertmanager的端口(默认9093)和集群通信端口。
- 模板调试:使用
amtool
验证模板语法。
更多配置细节可参考官方文档或相关技术博客(如网页1、网页5、网页6)。