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