基于SpringBoot的轻量非侵入式数据库数据告警器
基于SpringBoot的轻量、非侵入式数据库数据告警器
「 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波」 我的需求:
需要写一个数据库数据监控的告警小工具,要求: 非侵入式的,对监控的数据只有查询权限,没有写权限 可以对数据表的部分数据状态,数据数量进行监控告警 监控数据,告警条件等是可配置的 我需要解决的问题:抽象告警行为,解耦告警流程构建过程 告警命中之后如何避免重复告警 可配置的部分如何从流程代码中解耦为配置 如何动态配置告警扫描计划 我是这样做的:
整体来讲,逻辑很简单,没啥技术难点,属于重复造轮子,考虑到需要解析配置文件、多数据源配置,定时任务等,所以使用SpringBoot,利用其自动化配置,类型安全配置属性,集成简单的任务调度等优点,可以方便地的配置不同的数据源,同时将复杂配置文件中的数据注入Bean中,动态配置定时计划
关于多数据源配置和类型安全配置属性等不是本文重点,这里不多讲。 编码思路:一是解耦告警器类的构建和构建步骤 二是解耦告警流程,涉及的单个行为从流程解耦,对于行为可变的部分从代码解耦为配置文件。 三是对于告警缓存的处理,非侵入式需要解决重复告警,当前集成了H2,但是没有使用,感觉有点重,所以利用 WeakHashMap 构建了一个弱键的缓存工具类来实现。 解耦告警器类的构建和构建步骤
对于告警器类的构建,涉及 初始化 和告警规则生成 两部分,初始化负责告警配置文件加载解析校验,告警规则生成负责告警流程的建立。
这里可以使用默认的初始化规则,和告警解析规程,也可以使用自定义的规则。整体上编码基于 构建者设计模式 ,类似于Spring Security配置对象 的构建
可以使用默认的告警解析流程,调用方式 alarms.alarmStart()
或者 alarms.alarmsInit(null).alarmsRun(null);
也可以通过自定义告警解析流程,这里采用函数式编程的思想,通过行为参数化的方式,可以动态编写告警解析流程。 // 告警器初始化 alarms.alarmsInit(alarmsInit -> { logger.info("告警器扫描时间周期cron:" + alarmsInit.getMinute()); alarmsInit.getAlarms().forEach((alarm -> { logger.info("加载的告警器名称:" + alarm.getItemsName()); logger.info("触发器:" + alarm.getTrigger()); logger.info("动作:" + Arrays.toString(alarm.getActions())); logger.info("告警媒介:" + Arrays.toString(alarm.getMediaType())); logger.info("告警内容:" + alarm.getMedia()); logger.info("告警短信插表SQL:" + alarm.getMediaSql()); })); return alarmsInit; // 告警规则生成 }).alarmsRun(alarmsRun -> { logger.info("告警器扫描......"); alarmsRun.getAlarms().forEach(alarm -> { Boolean boo = Long.class.cast(jdbcTemplateOne.queryForList(alarm.getTrigger()).get(0).get("isAlarms")) == 1L ? Boolean.TRUE : Boolean.FALSE; if (boo) { logger.info("告警规则命中......" + alarm.getTrigger()); Arrays.stream(alarm.getActions()).forEach(sql -> { List
航天爱好者的福音!华硕a豆发布两款航天联名新品,这科技感绝了对于每一个航天爱好者来说,能够见证这些年中国航天事业的蓬勃发展,无疑是令人振奋和激动的。特别是这两年,中国航天事业迎来重大突破,例如向月球成功发射了嫦娥五号天问1号火星探测器和祝融
综合实力秒杀特斯拉Model3,小鹏P5正式上市,15。79万元起小鹏P5是旗下的第三款量产车型,定位紧凑型轿车,与特斯拉Model3处于同一级别。9月15日,小鹏P5正式上市,补贴后售价15。7922。39万元。新车的售价相比特斯拉Model3
淘菜菜美团优选多多买菜,社区电商上演三国杀!9月14日,阿里宣布将盒马集市和淘宝买菜整合升级为社区电商淘菜菜。今年年初我接了美团买菜多多买菜兴盛优选十荟团橙心优选的南京地推订单,短短半年多时间,社区团购的大局悄然改变。互联网
A15处理器全新发布性能领先竞品50iPhone13系列如期而至,新一代A15处理器也如期而至,意外的是第六代iPadmini用的也直接就是A15,要是到上一代还是A12。A15处理器集成多达150亿个晶体管,对比上
对抗黑客零日攻击苹果发布紧急安全更新稿源3DMGame如果您用的是苹果生态设备,并且一直不喜欢更新软件,您可能处在被黑客攻击的危险当中。一家网络安全研究公司最近披露了一个大规模的安全漏洞,随后苹果发布了iOS和mac
失去滴滴供血的橙心优选,败局已定大家都知道,目前滴滴生死未卜,有关部门已经介入调查,滴滴的命运已经无法掌握在自己手里了。不过落得如此田地也是滴滴咎由自取,一个靠出卖利益换取资源的企业是不会得到消费者和国家支持的,
联想少帅往事能干的孙宏斌救火的郭为沉默的杨元庆作者阿政柴狗夫斯基专题网事哈喽大家好,我是宇宙第二反套路防忽悠揭秘商业和资本真相的镰刀粉碎机小柴(点击下方关注)锁定小柴网事专题,每周一期互联网激荡三十年,他们的故事足够精彩,小柴
为什么抓了那么多,做电信诈骗的还是那么多?为什么抓了那么多,做电信诈骗的还是那么多?的确,电信诈骗犯,抓了很多。据公安部刑事侦查局副局长姜国利介绍,今年1至5月,全国共破获电信网络诈骗案件11。4万起,打掉犯罪团伙1。4万
数字服务专区首次亮相服贸会数字开启美好生活据人民网,未来生活,数字将无处不在。2021年服贸会首次设置的数字服务专区成为一大亮点。让传统文化瑰宝活起来的数字故宫刷新世界天际线的智慧建造超高层建筑守护全球自然生态的AI智能系
雷军谈小米梦想让全球每个人都能享受科技带来的美好生活作者龚进辉日前,小米掌门人雷军在微博上表示,小米的梦想是让全球每个人都能享受科技带来的美好生活。不得不说,小米的梦想很伟大,是一家非常有追求有情怀的科技公司。事实上,成立11年来,
身为穷人,你自卑吗?身为穷人我认为,完全不该自卑,自卑者在于站在原地,躺倒不干仼人宰割,脚踏西瓜皮,滑到哪里是那里没志气的人,才感到悲哀而自卑。凡是在面临穷的面前,只要能有坚强的自信和毅力,去努力拚搏