告警配置
在部署好 prometheus 及 相关服务的 exporter 后,监控指标数据会存储在 prometheus,通过 grafana 将监控数据可视化展示
下面通过 alertmanager 与 prometheusalert 对接 prometheus 来完成自定义告警指标与告警消息发送
-
alertmanager:用于处理由 prometheus 服务生成的告警,根据配置的规则将告警路由到指定的接收端
-
prometheusalert:一个告警中心消息转发系统,支持从 alertmanager 接收到的告警消息发送到钉钉,企业微信,飞书,email 等
开始部署
本文档以企微群机器人为接收告警者为例
-
提前获取企微机器人的 webhook 地址

部署 prometheusalert
-
下载 prometheusalert
wget https://github.com/feiyu563/PrometheusAlert/releases/download/v4.9/linux.zip -
解压 prometheusalert 并移至安装目录
unzip linux.zipmv linux /usr/local/prometheusalert -
配置启停脚本
cat > /usr/local/prometheusalert/start_prometheusalert.sh <<EOFnohup cd /usr/local/prometheusalert && ./PrometheusAlert &EOFcat > /usr/local/prometheusalert/stop_prometheusalert.sh <<EOFkill \$(pgrep -f 'PrometheusAlert')EOFchmod +x /usr/local/prometheusalert/start_prometheusalert.shchmod +x /usr/local/prometheusalert/stop_prometheusalert.sh -
修改 prometheusalert 配置文件
编辑
/usr/local/prometheusalert/conf/app.conf文件,默认仅需修改下面几行配置为实际部署信息#登录用户名login_user=prometheusalert#登录密码login_password=******#监听端口httpport = 8085#告警消息标题title=明道云告警推送#默认企业微信机器人地址wxurl=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=******- 登陆用户名与密码自定义修改即可
- 监听端口默认8080,可能与服务器上一些常用服务端口冲突,可以自定义修改一下
- 告警消息标题自定义即可
- 默认企微机器人的地址,需修改为实际的地址(如是钉钉、飞书等,按照 app.conf 中默认的注释提示修改即可)
- 如果服务器无法访问互联网,可通过配置
proxy =参数指定正向代理,达到消息推送至外部的需求
-
启动 prometheusalert
cd /usr/local/prometheusalertchmod +x PrometheusAlertbash start_prometheusalert.sh -
将 prometheusalert 加入开机自启动
echo "cd /usr/local/prometheusalert && /bin/bash start_prometheusalert.sh" >> /etc/rc.localchmod +x /etc/rc.local
配置 prometheusalert 告警模板
-
访问
http://$ip:$port登陆 prometheusalert -
编辑自定义模板


- 企业微信模板内容
- 企业微信告警消息示例
{{ range $k,$v:=.alerts }}{{if eq $v.status "resolved"}} ## Prometheus-恢复消息> 事件: **{{$v.labels.alertname}}**> 告警级别: {{$v.labels.level}}> 开始时间: {{GetCSTtime $v.startsAt}}> 结束时间: {{GetCSTtime $v.endsAt}}> 主机: {{$v.labels.instance}}> <font color="info">**事件详情: {{$v.annotations.description}}**</font>{{else}} ## Prometheus-告警消息> 事件: **{{$v.labels.alertname}}**> 告警级别: {{$v.labels.level}}> 开始时间: {{GetCSTtime $v.startsAt}}> 主机: {{$v.labels.instance}}> <font color="warning">**事件详情: {{$v.annotations.description}}**</font>{{end}}{{end}}