美文网首页大数据 爬虫Python AI Sql玩转大数据大数据
工作7年的大数据大牛都在研究啥:ELK大数据日志处理系统

工作7年的大数据大牛都在研究啥:ELK大数据日志处理系统

作者: Java程序员YY | 来源:发表于2019-11-07 22:32 被阅读0次

    随着大数据、云计算等技术的发展,互联网已经深入到了生活的方方面面,这意味着不少互联网企业积累了庞大的消费数据资源。结合大数据挖掘分析技术企业可以挖掘出客户的潜在需求从而实现精细化运营。大数据在给企业带来了巨大发展机遇,同时也带来了更加严峻的安全挑战。这些大数据涉及到大量的客户隐私,一旦被恶意攻击导致数据泄露,后果将不堪设想,因此保护大数据安全已是企业业务发展的关键。

    一、ELK大数据日志处理系统实现目标

    ELK大数据日志处理系统通过收集分析存储服务器产生的日志可以实现以下两个目标。

    1.1异常告警

    通过Logstash日志分析可以对某个接口的访问量进行实时监控,如果在某个时间段内访问量超过阈值,被视为异常访问。系统将通过邮件或者短信通知给管理人员做及时处理,避免恶意攻击导致信息泄露和系统瘫痪。

    1.2存储查询日志

    将不同服务器产生的日志解析存入ES搜索引擎中,并通过web界面展示便于进行各种重要日志查询分析。

    二、ELK大数据日志处理系统实现原理

    ELK是Elasticsearch Logstash Kibana的缩写,是比较流行的实时日志分析流程。图1所示是ELK大数据日志处理系统的实现流程图,位于不同服务器上的Filebeat收集各自服务器上的日志,分类推送到Kafka消息集群不同的topic中;Kafka消息集群汇总来自不同Filebeat的消息;作为Kafka消息消费端的Logstash是系统的核心部分,可按组别消费Kafka传递的消息,并通过正则表达式来解析消息,将符合要求的消息保存于Elasticsearch搜索引擎中,同时提供相关接口参数监控,当超过阈值时,系统将触发短信邮件通知;Kibana提供了一个web界面,通过它可以方便得查询分析日志中的各种数据。

    图1、ELK大数据日志处理系统流程图

    2.1Filebeat日志收集

    各大应用服务器平台中的NGINX或者其他类型的服务器的日志,通过定时任务远程SCP或者以实时数据流的格式传递到日志文件中。图2所示是Filebeat日志收集流程图,Filebeat的基本原理其实就是有一群prospector,每个prospector手下管着一批harvester,每个harvester负责监视一个日志文件,最后把日志文件推送到Kafka汇总。

    图2、Filebeat日志收集流程图

    2.2Kafka消息汇集

    Kafka是消息集群,用于汇总和管理日志。图3所示是Kafka消息汇集流程图。由Filebeat作为kafka的producter端,针对不同的日志类型写入不同的topic中,在具体的文件系统中显示为不同的文件夹,确保不同的消费者各取所需。需要注意的是,根据不同的topic所设置的容量也应该有所不同,对于数据量较大的数据,应当设置较多的partitions(分片)。此外为了保证数据可靠性,最好采用实时备份方案,确保在一台机器发生故障时,消息集群可进行自动切换。

    图3、Kafka消息汇集流程图

    2.3Logstash分析过滤输出消息

    Logstash 是系统的核心部分由Input、Filter、Output三部分组成,用于读取、过滤、输出消息。图4所示是Logstash消息过滤分析流程。Input定义日志输入源位置;Filter是logstash的核心部分,通过丰富的插件可以对数据进行有效的过滤和分析,将数据有效的部分进行加工后输出到目标位置;Output设置日志输出目标位置。

    图4、Logstash消息过滤分析流程图

    2.3.1 过滤器Filter相关插件

    Grok <https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html> 提供了强大的基础适配器,通过match将一条条message进行相应的适配,适配原则通过正则表达式来定义,满足自定义表达式的信息能够通过过滤器,默认情况下提供如下的适配:IP、WORD、DATE、HTTPDATE、MAC、UPIPATHPARAM、NUMBER,其中访问IP是我们关注的重点。当然也可以根据自己的业务需求来编写相关的正则表达式。

    Throttle插件,可以实现自定义时间内对于某个特定key进行统计。通过设置throttle插件中的Before_count、After_count、Period、Key、Add_tag等参数。当设置的key在规定的时间内小于Before_count,或者大于after_count 时throttle会在解析后的参数上增加add_tag标志。在Output阶段通过判断是否存在add_tag来判断是否给予相应的警告。

    2.3.2 正则表达式

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和另一个字符串,我们可以达到如下的目的:a.匹配:给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)b.获取:通过正则表达式从字符串中获取我们想要的特定部分。

    2.3.3 Logstash 实现原理举例

    如图5所示,通过设置input参数获取日志路径,Filter过滤中运用grok插件默认的正则表达式适配出日志文件中的访问IP地址,throttle插件设置访问IP作为检查对象,若超过阈值将会被打上标记,通过设置output参数实现发现异常及时邮件通知给管理人员的功能。通过Logstash的分析过滤可以实现及时发现异常的IP访问量,及时预警,避免服务器糟受恶意攻击。

    图5、Logstash消息过滤例子说明

    2.4ES-Kibana界面查询分析

    前期的数据处理都是为了便于数据的处理、分析和监控,Kibana 是 Elasticsearch 分析和搜索仪表板。图6所示是ES-Kibana界面查询展示流程图,用户发起一个请求,通过Kibana在ES搜索引擎中搜索,结果以网页数据,包括面积图,表格,饼图,地图以及条形图等形式直观展示给用户分析。

    图6、ES-Kibana 界面查询展示流程图

    三、总结

    大数据给企业带来了巨大发展机遇,同时也带来了安全挑战。保护大数据安全成为企业业务发展的关键。ELK大数据日志处理系统从分析服务器日志保障大数据安全角度出发设计。系统通过收集汇总分析不同服务器上的日志,及时预警过滤IP的异常访问,并通过短信邮件方式通知给管理人员做及时处理,避免恶意攻击导致数据泄漏,同时还提供服务器日志的界面化查询和分析,对重要日志提供实时监控。

    想要更多大数据学习资料:

    转发关注后,++我vx:bmaaa01 获取

    相关文章

      网友评论

        本文标题:工作7年的大数据大牛都在研究啥:ELK大数据日志处理系统

        本文链接:https://www.haomeiwen.com/subject/wjybbctx.html