博客
关于我
基于时序数据的微内核预警引擎架构设计
阅读量:457 次
发布时间:2019-03-06

本文共 1651 字,大约阅读时间需要 5 分钟。

基于时序数据的微内核预警引擎架构设计

作者:特来电技术团队

发布时间:2023年X月X日

监控生态体系的三个关键环节

监控生态体系的核心在于"监、析、控"三个环节。作为预警平台的一部分,预警平台需要对监控数据进行规则分析,并为控制系统生成预警日志,起到承上启下的作用。监控平台收集的数据主要是随时间变化的时间序列数据(以下简称"时序数据"),如何设计一个灵活可控的预警引擎,是预警平台的首要任务。

时序数据的快速发展与存储挑战

随着移动互联网、工业互联网、物联网、边缘计算等技术的兴起,时序数据近两年呈爆发式增长。根据DB-Engines公布的权威数据,在各种类型数据库发展趋势中,时序数据库的发展势头异常强劲。特别是在时序数据库TOP 10排名中,半开源的InfluxDB作为新一代时序数据库标杆,综合得分遥遥领先,因此在需要存储时序数据的应用场景中,InfluxDB无疑是首选。

基于InfluxDB的预警引擎设计选择

特来电云平台监控系统亦基于InfluxDB存储监控数据。虽然InfluxDB生态有Kapacitor作为预警系统,但综合考虑到灵活可控、功能可扩展、与业务灵活结合等需求特点,我们最终选择了自主设计微内核的预警引擎。该引擎主要由以下三部分组成:

一、抓数据

任何一个数据处理系统都源于数据,因此预警系统首先要提供支持可扩展的数据源管理。预警引擎需要从时序数据库、关系数据库、No-SQL数据库、WebAPI等多种数据源抓取数据。一般可通过数据中心、数据源类型、数据源连接地址、数据库名称、端口、用户名、密码等属性描述一个数据源实体。预警引擎启动时,需要动态加载配置好的数据源。

二、判规则

预警引擎本质上是一个规则引擎,需要具有高度的描述性与抽象性。为了简化开发和使用,笔者认为基于SQL的规则引擎更为容易掌握。一个典型的基于SQL的规则引擎可以分为以下三个部分:

SELECT DATA FROM TABLE

WHERE FILTER

THEN ACTION

每一条时序数据曲线都可以看作是对一个Tag的描述。依据Tag的数量以及数据的有无,可以将校验规则进行如下分类:

  • 无数据时的校验规则判断
  • 部分数据时的校验规则判断
  • 全部数据时的校验规则判断

为了提高校验规则的灵活性和准确性,预警引擎需要提供多校验规则依赖判断方式。这些依赖规则依旧是SQL,并且作为主校验规则的参数注入到规则判断中,从而可以灵活解决误判问题,提高准确率。

三、做动作

预警触发后,需要执行的动作主要分为两类:通知和命令。

通知

通知方式有邮件、短信、微信、钉钉等。由于系统规模的增长,预警可能会引发大量的预警消息,因此需要对预警规则进行重要级别划分、设置收敛区间、发送时间段等优化,同时结合根因分析,保证运维人员收到有效的预警消息。

命令

命令是指对控制系统下发运维指令,例如重启进程、回收应用程序池、抓取Dump、转储日志等。动作这块需要考虑的因素包括通知的用户。预警规则对应的接收人既可以设置静态的默认接收人,也可以动态计算,比如根据预警实际发生时所在的机器、进程等信息计算出具体的接收人。

总结

基于时序数据的微内核预警引擎需要提供可扩展及动态加载功能,基于SQL实现规则解析,驱动监控数据从抓取、判断到动作流畅运转。

特来电云计算与大数据微信公众号

1.微信公众号名称:特来电云计算与大数据

2.二维码:

转载地址:http://kjvyz.baihongyu.com/

你可能感兴趣的文章
Netty源码—7.ByteBuf原理三
查看>>
Netty源码—7.ByteBuf原理四
查看>>
Netty源码—8.编解码原理二
查看>>
Netty源码解读
查看>>
Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
查看>>
Netty相关
查看>>
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
Net与Flex入门
查看>>
net包之IPConn
查看>>
NFinal学习笔记 02—NFinalBuild
查看>>
NFS共享文件系统搭建
查看>>
nfs复习
查看>>
NFS网络文件系统
查看>>
ng 指令的自定义、使用
查看>>
nginx + etcd 动态负载均衡实践(二)—— 组件安装
查看>>
nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx - Header详解
查看>>
Nginx Location配置总结
查看>>