PrometheusAlert+prometheus+Alertmanager实现企业微信告警
prometheus+Alertmanager部署详见 https://blog.youkuaiyun.com/dragonQuncle/article/details/134304685?spm=1001.2014.3001.5502
软件包-版本:
PrometheusAlert-4.8.2:
https://github.com/feiyu563/PrometheusAlert/releases/download/v4.8.2/linux.zip
下载地址-官网:https://github.com/feiyu563/PrometheusAlert
进阶版调试参考
https://feiyu563.gitbook.io/prometheusalert/system/system-func
部署prometheusalert:
wget https://github.com/feiyu563/PrometheusAlert/releases/download/v4.8.2/linux.zip -C /opt/
cd /opt/
unzip linux.zip
mv linux prometheusAlert
cd prometheusAlert/
chmod +x PrometheusAlert
修改端口及密码(默认端口8080,这里修改为9097):
vim conf/app.conf
设置企业微信机器人告警:
修改为企业微信内机器人URL
设置 systemd启动管理
cat > /usr/lib/systemd/system/prometheusAlert.service << EOF
[Unit]
Description=Prometheus AlertManager
After=network.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/opt/prometheusAlert//PrometheusAlert --config.file=/opt/prometheusAlert/conf/app.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
启动prometheusAlert:
systemctl daemon-reload
systemctl enable prometheusAlert.service
systemctl start prometheusAlert.service
systemctl status prometheusAlert.service
配置企业微信机器人:
url最后微信机器人地址更改为-相对应的企业微信群机器人地址
global:
resolve_timeout: 5m
route:
group_by: ['instance']
group_wait: 10s
group_interval: 2m #在发送新警报前的等待时间
repeat_interval: 1m #发送重复警报的周期
receiver: 'web.hook.prometheusalert'
receivers:
- name: 'web.hook.prometheusalert'
webhook_configs:
- url: 'http://192.168.a.a:9097/prometheusalert?type=wx&tpl=prometheus-wx&wxurl=微信机器人地址'
重启alertmanager
systemctl restart alertmanager.service
测试机器人告警
prometheusAlert消息模板:
{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}{{if eq $v.status "resolved"}}[------------------PROMETHEUS-恢复信息------------------]({{$v.generatorURL}})
> <font color="#FF0000">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
> <font color="info">告警级别:</font> {{$v.labels.severity}}
> <font color="info">开始时间:</font> {{GetCSTtime $v.startsAt}}
> <font color="info">结束时间:</font> {{GetCSTtime $v.endsAt}}
> <font color="info">故障主机IP:</font> {{$v.labels.instance}}
> <font color="info">恢复描述</font>:{{$v.annotations.resolved}}
> <font color="info">**{{$v.annotations.resolved}}**</font>{{else}}[------------------PROMETHEUS-告警信息------------------]({{$v.generatorURL}})
> <font color="#FF0000">告警名称</font>:[{{$v.labels.alertname}}]({{$var}})
> <font color="#FF0000">告警级别:</font> {{$v.labels.severity}}
> <font color="#FF0000">开始时间:</font> {{GetCSTtime $v.startsAt}}
> <font color="#FF0000">故障主机IP:</font> {{$v.labels.instance}}
> <font color="#FF0000">告警描述</font>:{{$v.annotations.description}}{{end}}{{ end }}
{{ $urimsg:=""}}{{ range $key,$value:=.commonLabels }}{{$urimsg = print $urimsg $key "%3D%22" $value "%22%2C" }}{{end}}[*** 点我屏蔽该告警]({{$var}}/#/silences/new?filter=%7B{{SplitString $urimsg 0 -3}}%7D)
效果
撒花!!