在线客服
扫描二维码
下载博学谷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程序员市场已经饱和了吗?
Java开发的就业方向有哪些?Java程序员市场已经饱和了吗?Java开发应用比较广泛,很多公司需要java方面的程序员,随着用户体验需求要求越来越高,对于高级程序员的需求还是很大的,想要进入Java开发行业要制定好自己的职业规划。Java行业本身人才需求是供不应求。
11384
2019-08-08 09:43:59
如何提升MySQL数据库性能优化能力
数据库是按照数据结构来组织、存储和管理数据的仓库,在大数据和精细化运营时代,企业越来越注重用户的数据的收集。然而虽然数据库可以存放大量,甚至上亿的数据,但是这些数据并非无序的堆放在数据库的。为了提高数据库的性能,提高数据的可用性,作为开发者必须对数据库的性能进行优化。本文就为大家介绍如何提升MySQL数据库性能优化能力。
5923
2019-11-13 18:30:42
使用集合类各种容器时必须注意的细节
Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再一一个类的形式提供。集合类可以在里面保存多个对象的类,不同的集合类有不同的功能和特点。这里就和大家介绍一下再使用集合类各种容器的时候,必须注意的相关细节。
5093
2019-12-11 18:30:42
Spring配置数据源详解
对于Java开发的编程者来讲,掌握Spring这样主流框架的重要性不言而喻。为了帮助大家更好的学习开发企业级项目的知识和技术,掌握企业级解决方案的思路,本文总结了Spring配置数据源的重难点,主要包括数据源(连接池)的作用、数据源的手动创建步骤、Spring配置数据源和抽取jdbc配置文件。下面一起来看看Spring配置数据源的详解吧!
6435
2020-04-16 14:15:17
Java语言发展史及发展前景分析
Java语言发展史及发展前景分析,Java面向对象编程语言出生于1995年5月,Java功能强大和简单易用,应用领域非常广泛。Java语言具有安全、可靠等优势,且属于分布式、多线程和面向对象语言,对于这方面的人才需求量很大。
7099
2020-08-03 15:31:48