近期也总结了几篇关于巡检的内容,很多同学也很期待,说业务巡检是一个新概念,想做成什么样子,或者说怎么样做起来更好一些。
在这个基础上,我自己也梳理了不少方面的内容,其实发起做这个事情,脑子里面已经有一个基本的框架了,随着各方面准备的情况,我觉得可以把巡检方向的事情排一个整体的数据流程图了。
巡检模块的整体设计是分了三类:系统层,数据库层,业务层,其中系统层的数据根据优先级拆分为了系统监控层和系统信息层。
整体来说,巡检的底层是大量依赖于任务调度来实现。任务调度采用了celery来对接完成,期望实现定时任务和异步任务两种触发模式,队列使用了Redis.
而里面相对重要的部分是OpenTSDB,这是基于HBase的计算层,能够通过OpenTSDB实现两类重要需求:
-
数据聚合和统计,这也是时序数据库擅长的方向
-
历史数据可再生提取,因为在时序中存储了大量的历史数据,如果要提取历史范围内的数据,通过OpenTSDB是一种比较快捷的方式
在这个基础上,借助于任务调度,我们来定时触发,比如每个小时生成一个快照数据,基于这个快照数据是状态值,代表里一个时间周期内的变化情况,数据可以通过提取持久化到MySQL
所以对于业务巡检来说,首先提取的数据是从MySQL中得到的,如果要自定义提取时间范围和维度,可以再从OpenTSDB获得渲染到可视化方案中。
此外还有一类重要的巡检任务信息是可以支持在线检查的方式,是需要通过服务接口访问到指定的数据库中查取相应的数据字典信息实时获得,当然这部分信息可以根据一些指定的维度来下沉到MySQL中。
以上的任务提取的内容都可以设定相应的额维度和阈值,来通过这些信息来触发生成相应的任务。