监控生态体系的三个关键环节
监控生态体系的核心在于"监、析、控"三个环节。作为预警平台的一部分,预警平台需要对监控数据进行规则分析,并为控制系统生成预警日志,起到承上启下的作用。监控平台收集的数据主要是随时间变化的时间序列数据(以下简称"时序数据"),如何设计一个灵活可控的预警引擎,是预警平台的首要任务。
时序数据的快速发展与存储挑战
随着移动互联网、工业互联网、物联网、边缘计算等技术的兴起,时序数据近两年呈爆发式增长。根据DB-Engines公布的权威数据,在各种类型数据库发展趋势中,时序数据库的发展势头异常强劲。特别是在时序数据库TOP 10排名中,半开源的InfluxDB作为新一代时序数据库标杆,综合得分遥遥领先,因此在需要存储时序数据的应用场景中,InfluxDB无疑是首选。
基于InfluxDB的预警引擎设计选择
特来电云平台监控系统亦基于InfluxDB存储监控数据。虽然InfluxDB生态有Kapacitor作为预警系统,但综合考虑到灵活可控、功能可扩展、与业务灵活结合等需求特点,我们最终选择了自主设计微内核的预警引擎。该引擎主要由以下三部分组成:
一、抓数据
任何一个数据处理系统都源于数据,因此预警系统首先要提供支持可扩展的数据源管理。预警引擎需要从时序数据库、关系数据库、No-SQL数据库、WebAPI等多种数据源抓取数据。一般可通过数据中心、数据源类型、数据源连接地址、数据库名称、端口、用户名、密码等属性描述一个数据源实体。预警引擎启动时,需要动态加载配置好的数据源。
二、判规则
预警引擎本质上是一个规则引擎,需要具有高度的描述性与抽象性。为了简化开发和使用,笔者认为基于SQL的规则引擎更为容易掌握。一个典型的基于SQL的规则引擎可以分为以下三个部分:
SELECT DATA FROM TABLE
WHERE FILTER
THEN ACTION