前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩弄日志归集于手掌之中

玩弄日志归集于手掌之中

作者头像
一猿小讲
发布2019-08-16 15:51:09
5620
发布2019-08-16 15:51:09
举报
文章被收录于专栏:一猿小讲一猿小讲

【这是一猿小讲的第 30 篇原创分享】

关注“一猿小讲”公众号的粉丝都清楚,在《傻瓜也能玩转日志归集》一文中,分享过一个业界使用成熟的日志归集方案 EFK。而今天,咱们再谈日志归集,但是今天的分享,却不再傻瓜般的 EFK,而是一款可定制开发的日志归集工具 Flume。

请准备好小板凳,我们的故事开始。

01. 缘起

9012 年 4 月 1 日,为了庆祝上次 EFK 日志归集,在生产投入使用,BOSS 召集大家开个庆功会。

大家都面带微笑的走进会议室,依次而坐,期待着 BOSS 给大家发奖励。

只见 BOSS 也面带微笑的走进了会议室。伴随哼哼的两声,便开始了庆功讲话:「大家都到齐了,首先庆祝 EFK 日志归集,正式投产使用,并且轻量、易用、落地实践效果非常好,很值得表扬啊。」

大家齐刷刷、哗啦啦的掌声响起,也是给自己的努力付出,而鼓励。

BOSS 接着说:「但是据我所知,日志采集工具 Filebeat 是用 Go 语言开发的,考虑到咱们的基础框架,都是用 Java 研发的,那么能否打造一款 Java 语言开发的日志归集工具?」

大家感觉这会议的画风,要变成项目启动会,齐刷刷的沉默... ...

BOSS 又说:「如果能打造一款 Java 语言开发的日志归集工具,然后再集成到咱们的基础框架中,这样一来技术栈就统一啦,部署起来也简单,这个时间紧、任务重,还是交给你们团队负责吧。」

伴随着大家的再次沉默,领到了 BOSS 的奖(任)励(务),庆(项目)功(启动)会也结束啦。

02. 干呗

天下武功,唯快不破。于是我们迅速调研了开源的日志归集轮子,而且语言限定为 Java。没成想,日志归集的后宫,可谓是佳丽三千,而我们偏偏又宠上了 Flume。

03. 是啥

Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,目前是 Apache 下的一个孵化项目。Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力——摘自百度百科。

说的是个啥呀?还是没有搞懂啊,自打小咱们语文课,就锻炼看图说话,那咱们还是上个图吧。

哦,原来 flume 可以用来归集数据,然后能发到存储的一个技术轮子,感觉上还不错。

不知道你是否好奇,这个轮子里面是咋运作的呢,反正我是很好奇。那不妨再来个看图说话吧。

哦,原来 flume 是通过 source 来定义采集的数据源,粗暴的讲就是要采谁;然后把采集的东东放在 channel 里面,这玩意不就是一个缓冲队列吗;然后 sink 从 channel 中拿数据,可以直接推向存储啦。

不知道你是否好奇,这玩意在实际场景中该如何应用呢?

哦,如上图所示,考虑到与《傻瓜也能玩转日志归集》一文中落地的 EFK 的技术栈相吻合,那么可以继续使用 elasticsearch 做存储,然后用 Kibana 做展示,如果条件允许的情况下,可以进行自研日志查询组件。

好了,到这你应该对“如何用 flume 做日志采集”有了一定的理论了解,但是依据上面的几张图,也不得不提一嘴,flume 模块设计划分,确实很明确;功能职责也很清晰;可插拔性做的确实好(好奇的你们,体会到了没?)。

04. 咋用

一切技术轮子都是纸老虎,而打破纸老虎的方式,莫过于亲身实践,动手搞起。

后宫佳丽三千,而 flume 你值得拥有,flume 目前最新版本为 1.9.0,而我们采用的是 1.7.0 版本,不要问为什么,就因为王八看绿豆,看对眼了。选择适合自己的,才是最好的。

按照常规,你肯定会认为,我今天带着你从头到尾,体验一下日志采集 flume、日志存储 elasticsearch 以及日志展示 Kibana,很不幸的告诉你,让你失望了。因为在《傻瓜也能玩转日志归集》一文中已经带着你搭建过 EFK 从 0 到 1,其实 flume + es + kibana 这个步骤甚是相同,你只需照猫画虎,遇坑填坑即可。

而今天,我们重点谈谈基于 flume 做了哪些改动?

05. 狂造

能用就用,不能用咱也别将就,一言不合,咱们就可以扩展二次开发。

按照 flume 的设计思路,应该有个地方配置 source、channel 以及 sink,如果到这一步,你对这三个英文单词还不理解,那么请从头再看一篇(捂嘴笑)。

果然不出所料,打开配置文件来个全景视图,一探究竟,看看到底都改了啥?

友情提示:注重关注红色部分,因为下面的灵魂发问皆是出自红色部分。

灵魂一问:采集日志肯定要有所采,有所不采,如何支持配置排除的日志文件名?

我有妙招:通过配置文件,配置哪些日志文件不做采集;然后通过 flume 启动的时候,读取规则配置;然后通过缓存日志文件的时候,进行匹配是否采集。还是截点图留个念想吧。

上面截图看不懂没关系,知道我们能重写 flume 的 source 来自定义排除日志文件就行了。

灵魂二问:好奇的你们,有没有好奇 flume 读日志读到哪一行了?日志从哪儿来的?日志文件的路径是个啥?

我有妙招:分门别类,各个击破,主要在于扩展 TailFile 支持 lineNum、IP 、Path,截个图做个引子,留作你们用到时再深入,今天也不多费口舌。

灵魂三问:大家用技术都习惯性的喜新厌旧,而由于 ElasticsearchSink 的版本支持的 es 版本过于低,何解?

我有妙招:全新定义一个 ElasticSearchHighSink,而我们只需要把里面的访问 es 的 client 换成 RestHighLevelClient,再稍微润色一下,就 OK。其中这个度娘也会告诉答案,搜之一大堆,也不在此费口舌啦。

最后,针对 flume 二次开发,扩展来扩展去,一个字“爽”,两个字“倍爽”。

06. 团建

经过一周的苦苦寻觅,终于与框架集成到一起,虽有小 Bug 存在,但是不影响大局。劳累的大家,要求来个愉快的轰趴玩耍,为什么要去轰趴,为什么要去玩耍?因为大家都明白一个道理:不懂玩的人等于会上班的猪。

最后,就用下面这个公式来结束今天的分享吧,恰逢周末,我们一起乐呵乐呵。

代码语言:javascript
复制
人 = 吃饭 + 睡觉 + 上班 + 玩。
猪 = 吃饭 + 睡觉。
代入:人 = 猪 + 上班 + 玩。
那么:人 - 玩 = 猪 + 上班。
结论:不懂玩的人 = 会上班的猪。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一猿小讲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档