PrometheusAlert 简介
node
PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的预警消息,支持将收到的这些消息发送到钉钉,短信和语音提醒等linux
PrometheusAlert具有以下特性
- 支持多种消息来源,目前主要有prometheus,graylog,grafana
- 支持多种类型的发送目标,支持钉钉,短信,语音
- 针对Prometheus增长了告警级别,而且支持按照不一样级别发送消息到不一样目标对象
- 简化Prometheus分组配置,支持按照具体消息发送到单个或多个接收方
- 增长手机号码配置项,和号码自动轮询配置,可固定发送给单一我的告警信息,也能够经过自动轮询的方式发送到多我的员且支持按照不一样日期发送到不一样人员git
部署方式
github
PrometheusAlert能够部署在本地和云平台上,支持windows、linux、公有云、私有云、混合云、容器和kubernetes。你能够根据实际场景或需求,选择相应的方式来部署PrometheusAlert:web
- 使用容器部署docker
docker run -d -p 8080:8080 --name prometheusalert-center feiyu563/prometheus-alert:latest
- 在linux系统中部署windows
git clone https://github.com/feiyu563/PrometheusAlert.git cd PrometheusAlert/example/linux/ ./PrometheusAlert #后台运行请执行nohup ./PrometheusAlert &
- 在windows系统中运行api
git clone https://github.com/feiyu563/PrometheusAlert.git cd PrometheusAlert/example/windows/ 双击运行 PrometheusAlert.exe便可
- 在kubernetes中运行bash
kubectl app -f https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/example/kubernetes/PrometheusAlert-Deployment.yaml
配置说明
app
PrometheusAlert 暂提供如下三个接口,分别对应各自接入端
/prometheus/alert
/grafana/alert
/graylog/alert
1. Prometheus 接入配置
在 Prometheus Alertmanager 中启用 Webhook,可参考以下模板:
global:
resolve_timeout: 5m
route:
group_by: ['instance'] group_wait: 10m group_interval: 10s repeat_interval: 10m receiver: 'web.hook.prometheusalert' receivers: - name: 'web.hook.prometheusalert' webhook_configs: - url: 'http://[prometheusalert_url]:8080/prometheus/alert'
Prometheus Server 的告警rules配置,可参考以下模板:
groups:
1. name: node_alert rules: 2. alert: 主机CPU告警 expr: node_load1 > 3 labels: severity: warning annotations: description: "{{ $labels.instance }} CPU load占用太高" #告警信息 summary: "{{ $labels.instance }} CPU load占用太高已经恢复" #告警恢复信息 level: 3 #告警级别,告警级别定义 0 信息,1 警告,2 通常严重,3 严重,4 灾难 mobile: 15888888881,15888888882,15888888883 #告警发送目标手机号(须要设置电话和短信告警级别) ddurl: "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #支持添加多个钉钉告警,用,号分割便可,若是留空或者未填写,则默认发送到配置文件中填写的钉钉地址
最终告警效果:
2. Grafana 接入配置
打开grafana管理页面,登陆后进入notification channels配置
注意这里的url地址填写上本身部署所在的url
配置完成后保存便可.继续进行告警消息配置,选择任意一个折线图,点击编辑,进入aler配置,配置参考下图:
Notifications配置格式参考,支持配置多个钉钉机器人url:
告警消息内容&&ddurl[钉钉机器人url,钉钉机器人url....]
最终告警效果:
3. Graylog 接入配置
打开Graylog管理页面,登陆后进入Alerts配置
点击Add new notification建立新的告警通道,选择以下图配置:
在弹出的窗口中填入名称和对应的PrometheusAlert的地址便可,配置参考下图:
配置完成后,点击Test测试下是否可以正常接收告警消息便可
最终告警效果:
4. 配置文件解析
短信告警和语音告警均使用的是腾讯云的短信和语音提醒接口,具体参数获取可去腾讯云开通相关服务便可
appname = PrometheusAlert
#监听端口
httpport = 8080 runmode = dev #开启JSON请求 copyrequestbody = true #钉钉机器人地址 ddurl=https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx #告警消息标题 title=NB云平台 #点击告警消息后连接到告警平台地址 alerturl=http://prometheus.haima.me #告警消息中显示的logo图标地址 logourl=https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/haima.png #腾讯短信接口key appkey=e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx #腾讯短信模版ID tpl_id=143xxxxx #腾讯短信sdk app id sdkappid=140xxxxxxx #短信告警级别(等于3就进行短信告警) 告警级别定义 0 信息,1 警告,2 通常严重,3 严重,4 灾难 messagelevel=3 #腾讯电话接口key phonecallappkey=c24xxxxxxxxxxxxxxx #腾讯电话模版ID phonecalltpl_id=29xxxxx #腾讯电话sdk app id phonecallsdkappid=140xxxxx #电话告警级别(等于4就进行语音告警) 告警级别定义 0 信息,1 警告,2 通常严重,3 严重,4 灾难 phonecalllevel=4 #默认拨打号码,默认不配置,若是配置了此项,那么按照user.csv文件轮询的方式将自动失效 #defaultphone=
另外 PrometheusAlert 同时支持按照日期发送告警到不一样号码,只需新建user.csv文件,并将文件放到程序运行目录下便可自动加载,user.csv文件格式以下:
2019年4月10日,15888888881,a
2019年4月11日,15888888882,b 2019年4月12日,15888888883,c 2019年4月13日,15888888884,d 2019年4月14日,15888888885,e 2019年4月15日,15888888886,f 2019年4月16日,15888888887,g 2019年4月17日,15888888888,h 2019年4月18日,15888888889,i 2019年4月19日,15888888810,g 2019年4月20日,15888888811,k 2019年4月21日,15888888812,l 2019年4月22日,15888888813,zhangsan 2019年4月23日,15888888814,lilei
项目源码
----
FOR HELP
Email: 244217140@qq.com