Prometheus开源运维告警中心消息转发系统

2019年6月5日 387点热度 0人点赞 0条评论

图片


作者:海马云 资深工程师 张吉坤


PrometheusAlert 简介

PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的预警消息,支持将收到的这些消息发送到钉钉,短信和语音提醒等


PrometheusAlert具备如下特性

  • 支持多种消息来源,目前主要有prometheus,graylog,grafana

  • 支持多种类型的发送目标,支持钉钉,短信,语音

  • 针对Prometheus增加了告警级别,并且支持按照不同级别发送消息到不同目标对象

  • 简化Prometheus分组配置,支持按照具体消息发送到单个或多个接收方

  • 增加手机号码配置项,和号码自动轮询配置,可固定发送给单一个人告警信息,也可以通过自动轮询的方式发送到多个人员且支持按照不同日期发送到不同人员


部署方式

PrometheusAlert可以部署在本地和云平台上,支持windows、linux、公有云、私有云、混合云、容器和kubernetes。你可以根据实际场景或需求,选择相应的方式来部署PrometheusAlert:

  • 使用容器部署

  1. docker run -d -p 8080:8080 --name prometheusalert-center feiyu563/prometheus-alert:latest

  • 在linux系统中部署

  1. git clone https://github.com/feiyu563/PrometheusAlert.git

  2. cd PrometheusAlert/example/linux/

  3. ./PrometheusAlert #后台运行请执行nohup ./PrometheusAlert &

  • 在windows系统中运行

  1. git clone https://github.com/feiyu563/PrometheusAlert.git

  2. cd PrometheusAlert/example/windows/

  3. 双击运行 PrometheusAlert.exe即可

  • 在kubernetes中运行

  1. kubectl app -f https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/example/kubernetes/PrometheusAlert-Deployment.yaml

配置说明


PrometheusAlert 暂提供以下三个接口,分别对应各自接入端

  • prometheus接口 /prometheus/alert

  • grafana接口 /grafana/alert

  • graylog接口 /graylog/alert


1. Prometheus 接入配置

在 Prometheus Alertmanager 中启用 Webhook,可参考如下模板:

  1. global:

  2. resolve_timeout: 5m

  3. route:

  4. group_by: ['instance']

  5. group_wait: 10m

  6. group_interval: 10s

  7. repeat_interval: 10m

  8. receiver: 'web.hook.prometheusalert'

  9. receivers:

  10. - name: 'web.hook.prometheusalert'

  11. webhook_configs:

  12. - url: 'http://[prometheusalert_url]:8080/prometheus/alert'

Prometheus Server 的告警rules配置,可参考如下模板:

  1. groups:

  2. 1. name: node_alert

  3. rules:

  4. 2. alert: 主机CPU告警

  5. expr: node_load1 > 3

  6. labels:

  7. severity: warning

  8. annotations:

  9. description: "{{ $labels.instance }} CPU load占用过高" #告警信息

  10. summary: "{{ $labels.instance }} CPU load占用过高已经恢复" #告警恢复信息

  11. level: 3 #告警级别,告警级别定义 0 信息,1 警告,2 一般严重,3 严重,4 灾难

  12. mobile: 15888888881,15888888882,15888888883 #告警发送目标手机号(需要设置电话和短信告警级别)

  13. 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:

  1. 告警消息内容&&ddurl[钉钉机器人url,钉钉机器人url....]

最终告警效果:

图片


3. Graylog 接入配置打开Graylog管理页面,登录后进入Alerts配置

图片点击 Addnewnotification创建新的告警通道,选择如下图配置:图片在弹出的窗口中填入名称和对应的PrometheusAlert的地址即可,配置参考下图:图片配置完成后,点击 Test测试下是否能够正常接收告警消息即可

最终告警效果:

图片


4. 配置文件解析

短信告警和语音告警均使用的是腾讯云的短信和语音提醒接口,具体参数获取可去腾讯云开通相关服务即可

  1. appname = PrometheusAlert

  2. #监听端口

  3. httpport = 8080

  4. runmode = dev

  5. #开启JSON请求

  6. copyrequestbody = true

  7. #钉钉机器人地址

  8. ddurl=https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  9. #告警消息标题

  10. title=NB云平台

  11. #点击告警消息后链接到告警平台地址

  12. alerturl=http://prometheus.haima.me

  13. #告警消息中显示的logo图标地址

  14. logourl=https://raw.githubusercontent.com/feiyu563/PrometheusAlert/master/doc/haima.png

  15. #腾讯短信接口key

  16. appkey=e7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  17. #腾讯短信模版ID

  18. tpl_id=14386

  19. #腾讯短信sdk app id

  20. sdkappid=1400027785

  21. #短信告警级别(等于3就进行短信告警) 告警级别定义 0 信息,1 警告,2 一般严重,3 严重,4 灾难

  22. messagelevel=3

  23. #腾讯电话接口key

  24. phonecallappkey=c24xxxxxxxxxxxxxxx

  25. #腾讯电话模版ID

  26. phonecalltpl_id=29xxxxx

  27. #腾讯电话sdk app id

  28. phonecallsdkappid=140xxxxx

  29. #电话告警级别(等于4就进行语音告警) 告警级别定义 0 信息,1 警告,2 一般严重,3 严重,4 灾难

  30. phonecalllevel=4

  31. #默认拨打号码,默认不配置,如果配置了此项,那么按照user.csv文件轮询的方式将自动失效

  32. #defaultphone=

另外 PrometheusAlert 同时支持按照日期发送告警到不同号码,只需新建user.csv文件,并将文件放到程序运行目录下即可自动加载,csv文件格式如下:

  1. 2019年4月10日,15888888881,a

  2. 2019年4月11日,15888888882,b

  3. 2019年4月12日,15888888883,c

  4. 2019年4月13日,15888888884,d

  5. 2019年4月14日,15888888885,e

  6. 2019年4月15日,15888888886,f

  7. 2019年4月16日,15888888887,g

  8. 2019年4月17日,15888888888,h

  9. 2019年4月18日,15888888889,i

  10. 2019年4月19日,15888888810,g

  11. 2019年4月20日,15888888811,k

  12. 2019年4月21日,15888888812,l

  13. 2019年4月22日,15888888813,zhangsan

  14. 2019年4月23日,15888888814,lilei


项目源码

  • PrometheusAlert

  • https://github.com/feiyu563/PrometheusAlert

FOR HELP

Email: [email protected]

Service Mesh 实战培训


如果用一句话来解释什么是 Service Mesh,可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。

目前比较热门的Service Mesh开源解决方案有IstioIstio 有着丰富的功能、设计,活跃的社区。为实现大家对Service MeshIstio掌握与落地,为此我们推出2Service Mesh实战培训班。

采用3+1+1新的培训模式(3天线下实战培训,1年内可免费再次参加,每期前10名报名,可免费参加价值3600元的K8S线上直播班;),资深一线讲师,实操环境实践,现场答疑互动,培训内容覆盖:Istio简介、安装、数据平面Envoy、控制平面介绍、Mixer详解、Pilot详解、主要配置资源、流量管控、策略配置、遥测、落地的实战、运维等


北京:6月22-23日

报名:https://www.bagevent.com/event/5262973


图片

图片

推荐阅读

64250Prometheus开源运维告警中心消息转发系统

这个人很懒,什么都没留下

文章评论