PrometheusAlert 简介

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

PrometheusAlert具备如下特性

- 支持多种消息来源,目前主要有prometheus,graylog,grafana
- 支持多种类型的发送目标,支持钉钉,短信,语音
- 针对Prometheus增加了告警级别,并且支持按照不同级别发送消息到不同目标对象
- 简化Prometheus分组配置,支持按照具体消息发送到单个或多个接收方
- 增加手机号码配置项,和号码自动轮询配置,可固定发送给单一个人告警信息,也可以通过自动轮询的方式发送到多个人员且支持按照不同日期发送到不同人员

部署方式

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

- 使用容器部署

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

- 在linux系统中部署

git clone https://github.com/feiyu563/PrometheusAlert.git
cd PrometheusAlert/example/linux/
./PrometheusAlert #后台运行请执行nohup ./PrometheusAlert &

- 在windows系统中运行

git clone https://github.com/feiyu563/PrometheusAlert.git
cd PrometheusAlert/example/windows/
双击运行 PrometheusAlert.exe即可

- 在kubernetes中运行

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,可参考如下模板:

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

项目源码
----

[PrometheusAlert]

FOR HELP

Email: 244217140@qq.com

prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert的更多相关文章

  1. k8s全方位监控 -prometheus实现短信告警接口编写(python)

    1.prometheus短信告警接口实现(python)源码如下: import subprocess from flask import Flask from flask import reques ...

  2. zabbix3.0 安装方法,一键实现短信、电话、微信、APP 告警

    引言 免费开源监控工具 Zabbix 因其强大的监控功能得到各大互联网公司的广泛认可,具体功能不再详细介绍,在之前发布的 Zabbix 2.4.1 安装及微信短信提醒已经做了详细介绍,本篇主要对 Za ...

  3. 检查ftp备份数据完整性及短信告警的shell脚本

    发布:thebaby   来源:net     [大 中 小] 检查ftp备份数据完整性及短信告警的shell,有需要的朋友可以参考下. 该脚本实现如下的功能: 对远程备份到ftp服务器的数据完整性及 ...

  4. zabbix系列之十——添加短信告警

    zabbix添加短信告警 1.查看zabbix-server脚本存放路径: [root@GYQ-Prod-Zabbix ~]# grep AlertScriptsPath /etc/zabbix/za ...

  5. zabbix配置短信告警

    zabbix版本:3.0.7 短信服务商:云片网 首先在云片网添加相应签名和模板 参照格式 签名:xxx告警 模板: [xxx告警]故障:#status# 服务器:#host# 发生:#trigger ...

  6. zabbix 利用python脚本实现短信告警

    一.编写脚本 cd /usr/local/zabbix-4.0.3/share/zabbix/alertscripts vi zabbix_sms.py 内容如下: #!/usr/bin/python ...

  7. zabbix3调用接口发送短信告警

    一.需求 之前使用的邮件告警,由于经常会忽略邮件,所以有时候告警查看的并不及时,所以增加短信告警的,以便及时处理. 二.zabbix-server端的配置 # 需要在zabbix-server端打开A ...

  8. 整理:iOS 短信与电话事件的获取

    整理:iOS 短信与电话事件的获取   background information: Core Telephony iOS 4.0 的官方 API 裡頭,多了一個叫做 Core Telephony  ...

  9. Auto.js 调用系统短信、电话

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Auto.js 调用系统短信.电话 操作 ...

随机推荐

  1. 在x64计算机上捕获32位进程的内存转储

    这是一个我经常遇到的问题,我们经常会遇到这样的情况:我们必须重新捕获内存转储,因为内存转储是以“错误”的方式捕获的.简而言之:如果在64位计算机上执行32位进程,则需要使用允许创建32位转储的工具捕获 ...

  2. hasura graphql-engine 最近版本的一些更新

    好久没有在关注hasura graphql-engine 了,从最新的release 信息可以看到graphql-engine 已经beta 阶段了,而且目前是v1.0.0-beta.2 估计离生产可 ...

  3. [RN] React Native 生成 Android APK

    在用模拟器或者真机调试完App后,需要将App打包成Apk发布文件. 下面简单记录下打包步骤: 第一:生成签名密钥 这一步的操作主要是生成需要的签名密钥,供android调用,生成的文件待用 在项目根 ...

  4. c博客作业—分支,结构顺序

    1展现PTA总分 1 2 2本章学习类容总结 1常量和变量 常量:在运行中其值不变的量被称为常量,常量的类型通常是由书写格式决定,包括整型常量,实数型变量等等. 变量: 在运行中其值可变的量被称为变量 ...

  5. 京东Java架构师讲解购物车的原理及Java实现

    今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭浏 ...

  6. 20189220 余超《Linux内核原理与分析》第七周作业

    分析Linux内核创建一个新进程的过程 基础知识概括 操作系统内核实现操作系统的三大管理功能,即进程管理功能,内存管理和文件系统.对应的三个抽象的概念是进程,虚拟内存和文件.其中,操作系统最核心的功能 ...

  7. DB proxy, mysql proxy

    db proxy 在大型互联网站的数据库部署中,部署最多的数据库为MySQL.随着MySQL中Innodb存储引擎对事物的支持,MySQL在互联网公司部署中,应用量越来越多.典型应用MySQL的公司有 ...

  8. 范仁义html+css课程---5、列表

    范仁义html+css课程---5.列表 一.总结 一句话总结: 学会基本的使用有序列表.无序列表.定义列表,设置样式的话尽量通过css而不是属性 1.无序列表基本形式(实例)? ul标签包裹li标签 ...

  9. 系统树图 | Dendrogram construction | Phylogenetic Analysis

    Molecular Architecture of the Mouse Nervous System 表示亲缘关系的树状图解 先看文章里是怎么做的: Dendrogram construction A ...

  10. ajax发送json数据时为什么需要设置contentType: "application/json”

    1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别?contentType: "application/js ...