进击的大数据(十二)数据工厂模块的设计

项目我已上传到github中,感兴趣的可以下载下来看看,希望大神可以在以后多多指点。

github代码地址:https://github.com/sjctt/spartacus

在前面几篇文章里完成了数据采集模块的设计研发,主要功能就是通过syslog接收信息后缓存到redis中等待处理。

涉及到一些技术点如:UDP网络通信,非阻断式接收、多线程处理、队列任务的使用、java操作redis数据库等。

今天开始来做数据工厂部分,即从redis中拿出缓存数据后将数据经过解析后放入elasticsearch中存储。开始之前仍然先来做一下需求分析。

1. 需求分析

1.1 数据解析及索引

       1. 对redis中缓存数据逐条进行基础解析,并生成es索引。

       2. 基础解析可根据不同对象的日志进行不同形式的解析,如:windows日志、linux日志、web服务器日志等等解析内容尽量   丰富。

1.2 服务中心消息通信

1)提供与服务中心交互接口,便于服务中心对该模块进行状态数据采集,这是考虑以后如果采用集群部署形式时,可以通过

            服务中心模块进行系统状态追踪。

       2)接口采用应答模式,由服务中心发送状态获取请求,采集模块回应相应数据。

       4)服务中心交互内容包括一下内容:

            获取节点系统信息:计算机名、IP地址

            检查节点数据采集模块运行状态

2. 概要设计

       数据工厂模块的需求就比较简单了,其实目的只有一个,就是把redis的缓存转化未es的索引,其中解析部分应该是比较复杂的一块。消息通信接口与采集模块功能相同,这里不做赘述。

2.1 ES入库流程图

3. 详细设计

3.1 数据基础解析

1. 通过正则判断数据来源类型,目前主要包括一下类型:

1)类windows日志:

日志样例:<30>Jul 26 10:48:39 XINCHENI-1B4AC5 Service Control Manager: 7036: Windows Installer 服务处于 停止 状 态。

正则表达式:[<][\d{1,9}]+[>](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [\W\w]*[:] \d{1,9}[:] [\W\w]*

2)类linux日志:

日志样例:<11>Jul 26 11:48:15 localhost pulseaudio[2615]: alsa-sink.c: ALSA 提醒我们在该设备中写入新数据,但实际上没有什么可以写入的!

正则表达式:[<][\d{1,9}]+[>](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [\W\w]*[[]\d{1,9}[\]][:][\W\w]*

3)类IIS日志:

日志样例:<134>2018-04-13 23:59:59 10.0.0.2 GET /autWeb/ClientBin/aut.xap - 80 - 10.0.0.188 Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+rv:11.0)+like+Gecko 200 0 0 3806

正则表达式:[<][\d{1,9}]+[>]([0-9]{4})[-]([0-9]{2})[-]([0-9]{2}) ([0-9]{2})[:]([0-9]{2})[:]([0-9]{2}) [\W\w]+ ((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))+ [\W\w]+

4)类tomcat日志

日志样例:<134>192.168.7.111 - - [25/May/2018:17:33:28 +0800] "GET /favicon.ico HTTP/1.1" 200 9662

正则表达式:[<][\d{1,9}]+[>]((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))) [\W\w]+ [[][\W\w]+[\]] [\W\w]+

3.2 接口命令列表

        1)get_sysinfo:获取系统基本信息

            返回数据格式:{"runstatus":"1","nodename":"node1"}

            runstatus:节点运行状态,接口正常调用则返回1

            nodename:节点计算机名称

           状态检测及系统信息获取暂时使用一个命令

项目我已上传到github中,感兴趣的可以下载下来看看,希望大神可以在以后多多指点。

github代码地址:https://github.com/sjctt/spartacus

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值