在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Logstash开发采集上亿级别数据,需求属于日志采集的范畴,Logstash本身不支持反序列化功能,需要自定义开发ruby插件来支持,使用MLSQL结合UDF的方式进行流式处理。MLSQL写入hdfs会产生大量的小文件,需要单独开发合并文件的功能,写入es的数据是需要数仓结合其他业务数据进行建模,用离线处理的方式。
开发背景:公司业务系统做优化改造,同时为了能够实现全链路监控需收集所有业务系统之间的调用日志;数据情况:每天20亿以上;机器成本:3台kafka集群;2台logstash采集机器;技术:Java,MQ,MLSQL,Logstash。
采集流程:

MLSQL 消费MQ:原始日志产生侧通过protobuf进行序列化推送至mq,然后通过MLSQL进行反序列化并进行简单的etl处理后,再推送至MQ;
通过Logstash进行消费MQ:通过logstash消费经过MLSQL处理后的数据,并在这里通过ruby进行再次的加工处理,最后写入es和hdfs(一部分流程推送到es是业务侧使用,而另一部分写入hdfs是提供给数仓使用)
数仓建模:通过数仓建模,将最后的指标结果推送至es提供给业务侧使用,主要是借鉴这个需求讲解Logstash在实际场景中的使用以及优化。
Logstash开发流程:
1、确定日志格式
一个日志文件里肯定是不止一种日志格式,也有可能是标准化的格式,这里需要跟日志产生侧进行确认格式。
2、调试grok
确定好日志格式后,编写grok语法,然后进行调试,本人是通过kibana6自带的grok debug进行调试。结合该需求背景,最后经过logstash采集的时候,其实已经通过MLSQL进行了处理,最后Logstash消费的是格式就是一个json字符串,所以不需要grok语法。
3、调试ruby
结合该需求,使用ruby进行一些清洗逻辑

4、优化
优化工作在整个需求开发周期的比例较大,数据量较大资源较少,具体优化思路如下:
(1)MLSQL优化
这部分的优化工作主要是在反序化这块,剔除一部分无用字段,以及提前过滤一部分数据量,一部分注册UDF的代码:

(2)Kafka端优化
因kafka集群是集团共用,所以kafka端的优化其实只涉及到消费端的优化。这里只调节数据压缩、消费者线程数这两个参数。
(3)hdfs优化
logstash写入hdfs的部分不用使用自带的webhdfs插件,而是自定义的插件。
因自定义插件中涉及到文件锁的问题,会通过比对前后两次文件是否一致来进行文件最后的刷写,所以这里只能通过减少文件的更新频率来减少上下文的切换以及刷写操作
(4)ES优化
es部分的优化也只是涉及到写优化,比如批量写入、调大线程数、增加refresh间隔、禁止swapping交换内存、禁止refresh和replica操作,调大index buffer等操作。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Java方法语句集合零基础入门
Java开发中的方法学习,首先从方法概述开始,逐步深入学习方法的定义和调用、带参数方法的定义和调用、带返回值方法的定义和调用、方法注意事项、方法重载、方法的参数传递等的知识点。
9373
2019-12-04 10:56:34
Java开发工程师面试准备攻略
本文主要和大家分享一下,Java开发工程师面试要做哪些准备。一般来讲,Java岗位的面试准备主要集中在两方面。一方面是面试前的简历制作,另一方面是多做Java开发相关的面试题。前者是为了获得更多的面试机会,后者是为了在面试中通过面试官的考核,从众多求职者中脱颖而出。那么,我们就来详细看看下面这份Java开发工程师面试准备攻略吧!
7915
2020-01-10 15:38:13
MySQL学习总结之DQL查询语句
DQL查询语句又叫数据库查询语句,这是Java学习者在学习MySQL时,必须了解和掌握的知识点之一。众所周知,DQL查询语句有四种查询方式:排序查询、聚合函数、分组查询和分页查询。下面让我们一一仔细梳理这四种查询方式,有需要学习的小伙伴赶紧来看看MySQL学习总结之DQL查询语句的知识点吧!
6931
2020-02-11 23:24:05
初级Java后端开发工程师需要学什么?
近几年,可以说是互联网飞速发展的几年。在IT技术人才日益紧缺的同时,程序员似乎遍地都是,好像只要会打几行代码,能做几个页面就是标准的开发工程师了。但其实一个技术开发工作者的要求远远没有那么低,下面我们来一起看看,初级Java后端开发工程师需要学什么?
12888
2020-07-17 15:40:26
Java软件工程师待遇怎么样?
Java软件工程师待遇怎么样?目前国内java软件开发行业由于其发展的势头正旺,十大高薪行业之一,可观的薪酬条件吸引年轻人投身java软件开发行业中。一年左右软件开发经验的Java工程师年薪5万起步不是问题,而具有2年以上经验的工程师年薪突破10万的也绝不在少数。
6646
2021-01-29 11:46:40
