@cdmonkey
2025-08-28T01:46:48.000000Z
字数 5664
阅读 89
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/datachown -R prometheus.prometheus /opt/alertmanagerchown -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=AlertmanagerAfter=network.target[Service]Type=simpleUser=prometheusExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/dataRestart=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.ymlglobal: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/promtoolpromtool check rules /etc/prometheus/prometheus.rules.yml
https://blog.pytool.com/post/prometheus/prometheus-altermanager
三台机器:
172.16.138.11 alert01172.16.138.18 alert02172.16.138.79 alert03
安装过程同上,不再赘述,主要是服务启动文件:
# 172.16.138.11# vim /usr/lib/systemd/system/alertmanager.service[Unit]Description=AlertmanagerAfter=network.target[Service]Type=simpleUser=prometheusExecStart=/opt/alertmanager/alertmanager \--config.file=/opt/alertmanager/alertmanager.yml \--storage.path=/opt/alertmanager/data \--cluster.listen-address=172.16.138.11:12001 \--log.level=debugRestart=on-failure[Install]WantedBy=multi-user.target
# 172.16.138.18ExecStart=/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.79ExecStart=/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.serviceExecStart=/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.ymlalerting:alertmanagers:- static_configs:- targets:- localhost:9093basic_auth: # <-- 这部分就是 Alertmana 认证配置username: 'suixingpay'password: '...' # 注意这里是密码原文,而不是密文
最后还需要配置 Karma,否则显示不出报警条目。
# vim karma.yaml- name: cogoamcluster: COGOuri: http://dh.suixingpay.com/cogoamtimeout: 1mproxy: trueheaders: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
认证部分请参考: