liukx 57ce0f9a9a 漏洞版本升级 2 years ago
..
src 57ce0f9a9a 漏洞版本升级 2 years ago
README.md 91c7e07306 告警分组的核心代码 3 years ago
pom.xml e64f217d2e 告警分组的核心代码 2 years ago

README.md

数据收集器

负责收集应用中的数据,经过筛选之后存储到ElasticSearch 中,主要核心功能是为了弥补CAT中的日志搜索能力较弱的短板,另外还会对CAT的拓展做增强,比如监控告警等等,更加满足实际业务的需要。

核心功能

  1. 日志搜索

提供控制台进行日志能力的搜索,涵盖消息队列、SQL执行、网关请求等等,后续会继续新增更多的模块;

  1. 分组告警

提供多平台规则定义告警,将关注的异常信息告警到特定的讨论组中。

  1. 前后端分离

将控制台录入通过端点提供访问,让特定的引擎根据规则参数进行渲染。

  1. 存储层
    • 表拆分: 由于监控的数据量较大,会按照天的纬度进行划分到不同的表中。
    • 可拓展: 由于前期设计是Msql存储,但搜索能力太弱。切换到ElasticSearch了。底层可以来回切换成Mysql或者ElasticSearch.
    • 支持本地文件存储大文本文件,前期是为了弥补Mysql对大文本存储能力较弱,占用内存的情况。
  2. 配置层

目前是按照本地配置走,支持ElasticSearchMySQL切换,但目前都未实现,可以自行实现。

核心代码梳理

1. 模块分层

  • jay-monitor-data-client : 客户端层,由客户端引入之后提供发送数据的能力。
  • jay-monitor-data-core: 核心模块,全局类公共类定义
  • jay-monitor-data-server : 服务端,负责接收客户端的数据进行分析、告警、存储

2. 功能描述

1. 数据传输

MonitorDataServer : 服务端数据接收的入口类,通过Spring注入之后调用Start()方法启动一个端口: 9420(默认),负责接收客户端发送过来的数据。

底层的默认传输是基于Netty,框架应用的蚂蚁金服的bolt

具体参考:

com.jay.monitor.data.server.config.BeanConfig#boltServer : 会将所有实现UserProcessor接口的类作为消费类,负责消费客户端传递过来的数据。

这些消费类存储在包: com.jay.monitor.data.server.process 中涵盖

  • MQ
  • SQL
  • URL

2.告警模块

在数据传输的过程中,会对每条数据进行分析,根据告警的规则来判定这条数据是否属于要告警的数据。

RealtimeAlertProcess : 实时告警处理器,负责接收数据传输的模块进行回调分析并且交由ConfigAlertRule处理。

ConfigAlertRule : 配置告警,负责读取配置与传输数据进行匹配。满足则告警

MatchValueCondition : 告警的配置规则定义,比如表达式、或者其他的一些规则详情。目前较推荐和灵活的是ExpressionValueCondition,根据Spring的表达式,非常灵活的匹配传输数据是否合理。

AlertSendProcess : 告警发送模型,负责调用各个平台实现的接口进行匹配发送到特定的平台。接口是AlertRealTimeMsg,目前实现有钉钉 如果想拓展可以实现比如微信、邮件、短信等等。

DingDingRealTimeAlertProcess : 钉钉的实现。

3. 存储模块

配置存储

ConfigStoreManager : 配置的定义

  • DefaultLocalConfigManager : 本地文件配置
  • MysqlConfigStoreManager : Mysql的配置
数据拆分

DataIdFactory : 按照纬度进行拆分表的尾缀值.

  • DayIdGenerate : 天纬度
  • HourIdGenerate : 小时纬度

在表的创建和获取的时候通过工厂获取规则得到一个尾缀值,将数据找到对应的表,并且流入对应的表。