本文将主要说明QuickAlarm该如何使用,以及使用时需要注意事项
1. 基本使用姿势
首先我们不做任何的自定义操作,全部依靠系统默认的实现,我们的使用步骤如下
1. 添加注册文件
首先在项目的资源目录下,添加注册文件 alarm.properties
,文件内容如下
1 | ## 应用名,必填 |
具体存放的位置,可以参考下图,放在resources目录下(源码中,是放在测试资源目录下的)
2. 添加报警规则
根据注册文件中指定的路径,设置报警规则文件,如我们的报警规则文件
内容为json串格式,支持格式化的json串解析,为了节省篇幅,下面压缩成一行,点击获取json格式化小工具
/tmp/alarmConig:
1 | {"default":{"level":"LOG","autoIncEmergency":true,"max":30,"min":3,"threshold":[{"level":"SMS","threshold":20,"users":["345345345345","123123123123"]},{"level":"WEIXIN","threshold":10,"users":["yihui","erhui"]},{"level":"LOG","threshold":5,"users":["yihui","erhui"]}],"users":["yihui"]},"NPE":{"level":"WEIXIN","autoIncEmergency":false,"max":30,"min":0,"threshold":[{"level":"SMS","threshold":20,"users":["345345345345","123123123123"]},{"level":"WEIXIN","threshold":10,"users":["3h ui","4hui"]}],"users":["yihui"]},"XXX,YYY":{"level":"EMAIL","autoIncEmergency":true,"max":30,"min":3,"threshold":[{"level":"SMS","threshold":20,"users":["345345345345","123123123123"]},{"level":"WEIXIN","threshold":10,"users":["yihui","erhui"]},{"level":"EMAIL","threshold":5,"users":["yihui@xxx.com","erhui@xxx.com"]}],"users":["yihui@xxx.com"]}} |
3. 测试类
一个简单的使用测试
1 | @Test |
II. 报警执行机器扩展
前面的报警规则配置中,有WEIXIN, SMS, EMAIL的报警,但是系统只提供了两个NONE和LOG,所以我们可以看下如何自定义实现上面的三个
1. 实现IExecute接口
邮件报警
1 | public class EmailExecute extends LogExecute { |
短信报警
1 | /** |
微信报警
1 | /** |
说明,因为没有具体的实现,所以我们直接用日志输出来模拟,所以就都继承了LogExecute, 实际使用中,可以在上面补上相应的实现代码
2. 添加SPI定义
在 resources 目录下,新增
- 目录:META-INF/services/
- 文件:com.hust.hui.alarm.core.execut.api.IExecute
文件内容为上面几个实现类的全路径
1 | com.hust.hui.alarm.core.test.execute.EmailExecute |
目录结构如:
3. 测试
1 | public static void main(String[] args) throws InterruptedException { |
实测输出结果如下:
1 | 18:36:28.997 [Thread-12] INFO alarm - Do send msg by SMS to user:[345345345345, 123123123123], title: [test], msg: ip:172.17.13.18 >>> key:YYY >>> 异常数: 26 >>> 异常报警升级测试 |
III. 报警规则加载自定义
1. 实现IConfLoader接口
自定义加载器,给了一个最基本的
1 | public class SelfAlarmConfLoader implements IConfLoader { |
2. 添加SPI配置
在resources目录下新增
- 目录: META-INF/services
- 文件: com.hust.hui.alarm.core.loader.api.IConfLoader
文件内容
1 | com.hust.hui.alarm.core.test.loader.SelfAlarmConfLoader |
3. 测试
同样是上面的代码,输出结果
1 | 18:43:04.275 [sms-sender1-thread-2] INFO alarm - Do send msg by WEIXIN to user:[yihui], title: [test], msg: ip:172.17.13.18 >>> key:YYY >>> 异常数: 10 >>> 异常报警升级测试 |
4. 说明
系统默认的order是10,所以如果在测试上面的第二步时,不妨把com.hust.hui.alarm.core.test.loader.SelfAlarmConfLoader#order
返回值,改成大于10,这样就会走到默认的配置加载类
采用 SelfAlarmConfLoader
时,前面说的两个基础配置文件,是可以没有的,完全不会有任何影响,因为对应的注册类和报警规则,都是右这个类内部提供了
IV. 小结
所有测试相关数据,均可以在测试工程中获取,请主要关注:
- 测试case
- 注册文件:alarmConfig
- 报警规则配置文件:alarm.properties
V. 其他
相关博文
- 报警系统QuickAlarm总纲
- 报警系统QuickAlarm之报警执行器的设计与实现
- 报警系统QuickAlarm之报警规则的设定与加载
- 报警系统QuickAlarm之报警规则解析
- 报警系统QuickAlarm之频率统计及接口封装
- 报警系统QuickAlarm使用手册
- 报警系统QuickAlarm之默认报警规则扩展
项目: QuickAlarm
- 项目地址: Quick-Alarm
- 博客地址: 小灰灰Blog
个人博客: Z+|blog
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
声明
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正,我的微博地址: 小灰灰Blog