@cdmonkey
2025-08-28T01:46:48.000000Z
字数 5664
阅读 11
Grafana
https://github.com/prometheus/alertmanager
https://blog.yangx.site/2016/03/07/prometheus-alertmanager
https://yunlzheng.gitbook.io/prometheus-book/parti-prometheus-ji-chu/alert/install-alert-manager
Download
wget https://github.com/prometheus/alertmanager/releases/download/v0.18.0/alertmanager-0.18.0.linux-amd64.tar.gz
[root@cdmonkey03 tools]# tar zxvf alertmanager-0.18.0.linux-amd64.tar.gz -C /opt/
[root@cdmonkey03 tools]# cd /opt/
[root@cdmonkey03 opt]# ln -s alertmanager-0.18.0.linux-amd64 alertmanager
# 创建用户:
useradd prometheus -s /sbin/nologin -M
# 创建数据目录:
mkdir -pv /opt/alertmanager/data
chown -R prometheus.prometheus /opt/alertmanager
chown -R prometheus.prometheus /opt/alertmanager-0.18.0.linux-amd64
创建 Alertmanager 服务启动文件:/usr/lib/systemd/system/alertmanager.service
https://github.com/yeaheo/prometheus-huang/blob/master/service/alertmanager.service
[Unit]
Description=Alertmanager
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动服务:
systemctl start alertmanager
检查运行状态:
Alertmanager 启动后可通过 9093
端口进行访问。
普罗米修斯中的相关配置:
alerting:
alertmanagers:
- static_configs:
- targets: ["172.16.138.55:9093"]
重启 Prometheus 服务,若是配置成功,可从 http://<ip-addr>:9090/config
查看 alerting 配置是否生效。
[root@cdmonkey03 ~]# vim /opt/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m # 处置超时时间,缺省为五分钟
smtp_smarthost: 'smtp.sina.com:25' # 邮箱 SMTP 服务器
smtp_from: 'cdmonkey@sina.com' # 发送方邮箱
smtp_auth_username: 'cdmonkey@sina.com' # 登录用户账号
smtp_auth_password: '******' # 账号密码
wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/' # 企业微信地址
# 定义路由树信息:
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']
一个 inhibition 规则是在同另一组匹配器匹配的警报存在的条件下,使匹配一组匹配器的警报失效的规则。两个警报必须具有一组相同的标签。
配置文件参考:
https://github.com/yeaheo/prometheus-huang/blob/master/config/alertmanager/alertmanager.yml
Prometheus 还提供一个有用的工具 promtool
,可用于检查我们规则编写是否正确。
go get github.com/prometheus/prometheus/cmd/promtool
promtool check rules /etc/prometheus/prometheus.rules.yml
https://blog.pytool.com/post/prometheus/prometheus-altermanager
三台机器:
172.16.138.11 alert01
172.16.138.18 alert02
172.16.138.79 alert03
安装过程同上,不再赘述,主要是服务启动文件:
# 172.16.138.11
# vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/opt/alertmanager/alertmanager \
--config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data \
--cluster.listen-address=172.16.138.11:12001 \
--log.level=debug
Restart=on-failure
[Install]
WantedBy=multi-user.target
# 172.16.138.18
ExecStart=/opt/alertmanager/alertmanager \
--config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data \
--cluster.listen-address=172.16.138.18:12001 \
--cluster.peer=172.16.138.11:12001 \
--log.level=debug
# 172.16.138.79
ExecStart=/opt/alertmanager/alertmanager \
--config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data \
--cluster.listen-address=172.16.138.79:12001 \
--cluster.peer=172.16.138.11:12001 \
--log.level=debug
说明:命令启动参数不要使用引号,否则会报语法错误。
其中:
--cluster.listen-address # 当前实例集群服务监听地址
--cluster.peer # 初始化时关联的其它实例的集群服务地址
alerting:
alertmanagers:
- static_configs:
- targets:
- 172.16.138.11:9093
- 172.16.138.18:9093
- 172.16.138.79:9093
receivers:
...
- name: 'wechat'
wechat_configs:
- corp_id: 'wx199a931d3f700098'
to_party: '1'
to_user: "3"
agent_id: '1000004'
api_secret: 'M5FDNO3wGYBMBFwmEbhwa0jRcKnJUaCRd3Yzwa9a0lI'
send_resolved: true
所谓认证,就是配置一个简单的用户名及密码用于页面登录。
首先是配置 Alertmanager。创建一个 password.yml
文件用于存放用户名及口令。
basic_auth_users:
suixingpay: $2a$12$CUQFtHQtZLx9yLZYHw1q7.Lk1MLcq.FCoyQy0OoEaNPcpg9nhJKmy
其中 username
为自定义用户名,明文写;:
后为加密后的口令,可使用 https://bcrypt-generator.com 这个工具。
若是不使用上面那个线上工具,就需要使用命令行工具 htpasswd
。
yum install -y httpd-tools
而后需要修改 Alertmanager 的服务 Unit 文件:
# vim /usr/lib/systemd/system/alertmanager.service
ExecStart=/opt/alertmanager/alertmanager \
--config.file=/opt/alertmanager/alertmanager.yml \
--storage.path=/opt/alertmanager/data \
--data.retention=5h \
--web.config.file=/opt/alertmanager/password.yml \ # <-- 新增上这一行
--cluster.listen-address=
还需要配置普罗米修斯,否则不能把报警信息发送给 Alertmanager(报出 401 Unauthorized
错误):
# vim prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
basic_auth: # <-- 这部分就是 Alertmana 认证配置
username: 'suixingpay'
password: '...' # 注意这里是密码原文,而不是密文
最后还需要配置 Karma,否则显示不出报警条目。
# vim karma.yaml
- name: cogoam
cluster: COGO
uri: http://dh.suixingpay.com/cogoam
timeout: 1m
proxy: true
headers:
Authorization: "Basic c3VpeGluZ3BheTpTdWl4aW5ncGF5QDIwMjU="
可使用这个工具:
location /cogoam/ {
gzip_types *;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.80.1.221:9093/;
}
安装 0.21.0
后,无法启动服务,报错信息:
Aug 27 11:31:42 ZF-ITYW-ALERTMANAGER-2c7b74 alertmanager: level=error ts=2020-08-27T03:31:42.388Z caller=main.go:241 msg="unable to initialize gossip mesh"
err="create memberlist: Failed to get final advertise address: No private IP address found, and explicit IP not provided"
需要于服务配置文件中配置以下启动参数关闭集群服务:
--cluster.listen-address=
参考内容:
https://www.cnblogs.com/longcnblogs/p/9620733.html
https://aeric.io/post/prometheus-alertmanager-config
认证部分请参考: