一种简单的业务数据监控告警设计方案

⼀种简单的业务数据监控告警设计⽅案
⼀、设计⽅案背景:
随着业务的不断丰富,为了提⾼系统的性能,⼤量的采⽤异步处理的形式,使得产⽣了较多的待处理数据。准确⽽⼜及时的监控这些庞⼤复杂业务场景产⽣的业务数据便成了重要的任务
针对每个业务场景或者异步待处理表,都需要使⽤JOB定时去监控并及时告警通知到相关⼈员处理,⽽这种任务需要有开发⼯作量并且不同表之间只有少量的区别。重复⽽⼜必要的监控需求,导致系统代码量和代码重复度上升、⼤量JOB⼜增加了调度平台任务的维护成本。
⼆、解决的问题:
减少监控开发⼯作量,实现快速告警配置。
告警配置⽀持告警执⾏频率(cron表达式)、告警阈值(异常、积压)、告警频率(防⽌频繁告警)、模板动态配置、⼈员配置等灵活的告警策略配置。
告警系统告警可配置不同的执⾏bean,⽀持多种业务告警,同时可定制bean⽅法,增加告警灵活性
使⽤技术:spring、redis、mysql
告警配置表模型:(部分字段)
告警名称备注该条告警信息等
分组
执⾏bean
bean参数
执⾏频率cron表达式
告警阈值
告警频率
告警模板xxx短信模板。。
告警级别⾼、中、底
告警类型⼿机、邮件、、公司聊天软件等
告警值⼿机号等
三、基础⼯作流:
四、Redis队列
五、组件⼯作图:
名词解释
调度平台:承担定时任务集中进⾏管理和调度,集中解决了集环境下任务并发执⾏的控制,对任务调度执⾏情况的监控和异常短信告警、重试机制;同时也提供跨业务系统的后继任务调度。
队列管理器:提供告警任务队列的加载,并发控制。其中队列加载包含任务分组规则、任务状态的管理。
调度规则管理器:告警任务触发的规则管理,包含执⾏频率、告警频率等规则。
⾏为动作:定义执⾏前后业务操作和逻辑,例如ftp的连接创建释放、数据清理、初始化等操作
执⾏管理器:根据beanname获取Spring容器,并从Spring容器中确定代理对象,获取代理对象的执⾏器。
执⾏器:根据告警任务配置的阈值、业务规则等,返回需要告警的任务、和拼装告警所需的信息。
消息管理器:告警信息的内容拼接、告警事件聚合、分派规则管理(个⼈、组、等)。
六、核⼼⼯作流程图及步骤:
1、调度开始,从任务队列获取要执⾏的任务组,如果任务队列为空(队列长度=0),代表是⾸次全量加载任务或者新⼀轮调度任务。
⾸次加载场景:
2、 先加共享锁(setnx),保证同⼀时间只有⼀个调度任务全量加载到REDIS队列中,防⽌并发导致REDIS队列中有重复数据。
3、加锁失败,代表有其他调度正在加载(并发),结束流程,等待下次调度。
4、加锁成功,全量加载任务到REDIS队列中,全量的任务可以存储在ehcache(ehcache全量任务数据可以从DB加载,同时配置失效时间),避免透库增加DB压⼒。
5、全量加载的规则:根据任务组号分组,封装任务List,push到REDIS队列中,这么做的原因是避免多次重复查询DB。
例如⼀种业务数据,根据监控维度可能有多种阈值、告警类型、执⾏频率等,但是都是查询⼀种数据,这种场景避免多次透库查询,可以分组,只查询⼀次。
6、加载成功后,需要释放共享锁,并从REDIS队列POP⼀组告警任务,继续处理。
⾮⾸次加载场景:
7、从REDIS队列获取告警任务组(List),根据分组号加共享锁(setnx),防⽌并发。
8、根据beanName获取Spring容器,并从Spring容器中确定代理对象,获取代理对象的执⾏器,并把执⾏参数等代⼊执⾏器执⾏。
9、执⾏器根据积压阀值、执⾏频率、告警频率等规则判断是否达到告警门槛,把满⾜告警门槛的告警任务返回给消息管理器。
10、消息管理器结合任务优先级、告警事件聚合、分派规则等,发送邮件、短信、等消息。

本文发布于:2024-09-21 19:48:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/383305.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:告警   任务   规则   队列   加载   业务   调度   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议