Junety-C / alarm

告警系统。通过提供一个上报接口,程序可以通过这个接口发送告警信息。目前支持通过邮件、微信、QQ三个渠道发送告警信息。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

告警系统

这是一个基于SpringBoot的告警项目。

该项目的主要目的是为监控系统、程序的异常消息等告警信息提供一个统一的上报接口,方便告警信息的发送。

该项目目前支持通过邮件、微信、QQ三个渠道发送告警信息,你可以通过配置中心选择想要发送的渠道。

该项目主要分为如下四个模块:

  • 告警API
  • 告警配置中心
  • 告警服务端
  • 告警发送端

告警API(alarm-api)

提供一个统一的告警发送接口,只要把这个接口打包并发布到maven库里,就可以供其他项目引用了。

使用的方式很简单,只要输入告警代号和告警内容就可以了,如下:

AlarmClient.info(20, "你的程序炸了,快点起来修复.");

告警配置中心(alarm-web)

提供一个简单的web界面,用户账号由管理员分配,最好接入运维系统,你可以在这里创建和设置告警的相关信息。

一个告警的创建流程大致如下:

  • 进入项目页面,创建项目(表示这个告警是属于哪个项目的)
  • 进入项目模块页面,创建模块(表示这个告警是属于哪个项目中的哪个模块)
  • 进入项目成员页面,选择项目并添加项目成员(只有属于该项目的用户,才可以添加进该项目的接收组)
  • 进入接收组页面,选择项目并创建接收组和添加接收人(接收人只能是该项目的成员)
  • 进入告警页面,创建告警(告警的配置就是上述的项目、模块、接收组,代号可以自定义,必须是正整数)

创建成功后,这个告警中的代号就是上述API模块中所说的告警代号。那么接下来就可以通过这个代号来发送告警信息了。

当然,一个代号是可以对应多条告警的,当你通过这个代号发送告警信息的时候,所有属于这个代号的告警都会进行发送。但是,有时候我们只是想发送给这个代号下的某些告警,那么我们就可以通过设置路由来解决这个问题。当我们通过发送一条带路由的告警信息,告警系统会通过路由匹配来确认要发送到哪些告警。 例如,代号233对应有下面这4条告警,接着发送如下告警信息:

代号 告警名称 接收组 路由 是否发送
233 机器CPU监控 运维小组A monitor.cpu.*
233 机器硬盘监控 运维小组B monitor.disk.*
233 机器内存监控 运维小组C monitor.ram.*
233 告警机器监控 告警维护小组 monitor.ram.alarm
AlarmClient.info(233, "monitor.ram.alarm", "告警机器的内存炸了, 快来看看啊!")

如上表,"monitor.ram.alarm"这个路由值能匹配到"monitor.ram.alarm"和"monitor.ram.*",所以实际上就只有"运维小组C"和"告警维护小组"能接收到告警信息。

注:路由值通过"."来分割词组,其中"*"代表匹配任意一个词组

(PS:界面不好看或者不好用不要太介意,毕竟没怎么写过前端)

告警服务端(alarm-server)

告警API发送的告警信息都是发送至告警服务端处理,告警服务端会根据告警的配置来组织告警文本,然后交给发送端发送。

告警发送端(alarm-sender)

负责处理告警服务端递交的告警文本及相关信息,发送给对应的告警接收人。

目前支持邮件、微信、QQ三个渠道。

发送的文本大致如下,你也可以自己重新组织:

告警名称:告警系统异常
上报编号:7
项目-模块:告警系统-alarm-server
级别:ERROR
IP:127.0.0.1
时间:2017-03-29 11:55:34
内容:你的程序炸了,快点起来修复.

使用/运行

  1. 初始化数据库,数据库脚本在sql文件夹下,注意修改脚本中的初始化数据。
  2. 把各个模块中 resources/properties/product 目录下的配置文件修改成你的配置,可以参考 dev 目录下的配置。
  3. 执行 mvn clean package -Pproduct 进行打包。

打包后分别运行 java -jar alarm-server.jar 和 java -jar alarm-web.jar,启动服务端和配置中心。

运行 java -jar alarm-server.jar {channel} {name} 启动发送端。例如:

  • java -jar alarm-server.jar delivery delivery_1 (启动推送状态记录,必须)
  • java -jar alarm-server.jar mail mail_1 (启动邮件发送端)
  • java -jar alarm-server.jar qq qq_1 (启动QQ发送端,会要你扫二维码登录QQ)
  • java -jar alarm-server.jar wechat wechat_1 (启动微信发送端,会要你扫二维码登录微信)

使用QQ和微信只能把告警信息发送给好友,所以申请个账号作为告警机器人,然后添加上要发送的接收人即可。

(PS:如果有微信企业号,那么就直接使用微信企业号发送吧,微信企业号不用登陆,机器人容易被封...)

About

告警系统。通过提供一个上报接口,程序可以通过这个接口发送告警信息。目前支持通过邮件、微信、QQ三个渠道发送告警信息。


Languages

Language:Java 62.9%Language:HTML 19.8%Language:JavaScript 16.2%Language:CSS 1.1%