Giter Club home page Giter Club logo

alarm's Introduction

告警系统

这是一个基于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:如果有微信企业号,那么就直接使用微信企业号发送吧,微信企业号不用登陆,机器人容易被封...)

alarm's People

Contributors

junety-c avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alarm's Issues

alarm-sender怎么使用

你好,请问下我已经运行了alarm-server和alarm-web,端口分别为8089和80,前面web也可以正常访问,redis也开启了
接下来alarm-sender应该怎么使用?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.