Prometheus Alert 是开源的运维告警中心消息转发系统,支持主流的监控系统 Prometheus,日志系统 Graylog 和数据可视化系统 Grafana 发出的预警消息。通知渠道支持钉钉、微信、华为云短信、腾讯云短信、腾讯云电话、阿里云短信、阿里云电话等等。
部署PrometheusAlert
wget https://github.com/feiyu563/PrometheusAlert/releases/download/v4.8.1/linux.zip
unzip linux.zip
cd linux/
修改端口 账号密码添加告警地址在conf/app.conf 配置文件
登录用户名、密码、端口 按需修改,默认不改也可以。
用什么接收告警就修改那个配置,我这边使用的是企业微信机器人进行的告警
chmod +x PrometheusAlert
启动 nohup ./PrometheusAlert & 后台运行
停止 ps -ef |grep PrometheusAlert 关闭 kill -9 进程号
192.168.197.138:8080
默认登录帐号prometheusalert 密码prometheusalert
部署好了PrometheusAler之后更改Alertmanager的配置,将所有告警信息都转发到PrometheusAlert
我这里配置的是企业微信机器人
vim alertmanager.yml
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.197.142:8080/prometheusalert?type=wx&tpl=prometheus-wx&wxurl=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=53fdb356-4446-42e5-b8bd-f7da63bcfe76'
systemctl restart alertmanager.service 重启alertmanager
配置好之后来到web端测试一下是否能够发送告警信息
点击告警测试 回显是ok 企业微信机器人就收到了测试信息
PrometheusAlert接口说明
PrometheusAlert 目前提供以下几类接口,分别对应各自接入端,负责解析各自接口传入或者传出的消息。
type=?:指定消息转发的目标类型,如钉钉、企业微信、飞书等;该参数为必选参数
tpl=?: 指定消息所使用的模版,如prometheus-dd(Prometheus针对钉钉的模板);模版可以去PrometheusAlert 页面的模版管理-->自定义模板页面查看或新建;该参数为必选参数
如果是使用其他服务进行告警 把wxurl=换成你要用的即可 比如 钉钉 则配置ddurl= 即可
如果用默认模板进行告警的话他的时间是UTC的和东八区差8个小时
在配置模板的时候将时间定义的参数加上GetCSTtime 即可
如果觉得自定义模板的内容不符合要求把企业微信自定义模板内容替换以下内容
下面图片是效果
新建模板添加或者删除之前的内容都行
{{ $var := .externalURL}}{{ range $k,$v:=.alerts }}
{{if eq $v.status "resolved"}}
#### [Prometheus恢复信息]({{$v.generatorURL}})
> <font color="info">告警名称</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">故障主机</font>:{{$v.labels.instance}}
> <font color="info">恢复描述</font>:{{$v.annotations.resolved}}
{{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">故障主机</font>:{{$v.labels.instance}}
> <font color="#FF0000">告警描述</font>:{{$v.annotations.description}}
{{end}}
{{ end }}
以上配置就完成了,简单便捷。