39

一文教您如何通过 Java 打包一个 Filebeat 采集器包

 4 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzU4MDUyMDQyNQ%3D%3D&%3Bmid=2247484525&%3Bidx=1&%3Bsn=fad27b4c6094e417e4e76d8458e5f9d3&%3Bchksm=fd54d4ebca235dfd427544b6b3524f8bfd62373564d5330e2acf72cff3d694686850f00a5c97&%3Btoken=999635940&%3Blang=zh_CN
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

至于点击上方“ 小哈学Java ”,选择 星标

回复“ 资源 ”,领取全网最火的Java核心知识总结~

nQNZBfq.jpg!web

作者:犬小哈

来源:小哈学Java

==> 勿点!这是一篇有味道的文章(传送门)!

一、背景

最近,小哈主要在负责日志中台的开发工作, 等等,啥是日志中台?

nmY3eij.jpg!web

俺只知道中台概念,这段时间的确很火,但是 日志中台又是用来干啥的

这里小哈尽量地通俗的说下日志中台的职责,再说日志中台之前,我们先扯点别的?

rYV3IzF.jpg!web

相信大家对集中式日志平台 ELK 都知道一些,生产环境中, 稍复杂的架构,服务一般都是集群部署,这样,日志就会分散在每台服务器上,一旦发生问题,想要查看日志就会非常繁琐,你需要登录每台服务器找日志,因为你不确定请求被打到哪个节点上。另外,任由开发人员登录服务器查看日志本身就存在安全隐患,不小心执行了 rm-rf* 咋办?

通过 ELK , 我们可以方便的将日志收集到一处( Elasticsearch 集群)来进行多维度的分析。

但是部署高性能、高可用的 ELK 是有门槛的,业务组想要快速的拥有集中式日志分析的能力,往往需要经过前期的技术调研,测试,踩坑,才能将这个平台搭建起来。

日志中台的使命就是让业务线能够快速拥有这种能力,只需傻瓜式的在日志平台完成接入操作即可。

NfINBbB.jpg!web

臭嗨!说了这么多,跟你这篇文章的主题有啥关系?

额,小哈这就进入主题。

既然想统一管理日志,总得将这些分散的日志采集起来吧,那么,就需要一个日志采集器, LogstashFilebeat 都有采集日志的能力,但是 Filebeat 相较于 Logstash 的笨重, 它更轻量级,几乎零占用服务器系统资源,这里我们选型 Filebeat

业务组在日志平台完成相关接入流程后,平台会提供一个采集器包。接入方需要做的就是,下载这个采集器包并扔到指定服务器上,解压运行,即可开始采集日志,然后,就可以在日志平台的管控页面分析&搜索这些被收集的日志了。

这个 Filebeat 采集器包里面,包含了采集日志文件路径,输出到 Kafka 集群,以及一些个性化的采集规则等等。

怎么样?是不是感觉很棒呢?

二、如何通过 Java 打包文件?

2.1 添加 Maven 依赖

2.2 打包核心代码

通过 Apachecompress 工具打包思路大致如下:

  • ①:创建一个 FileOutputStream 到输出文件(.tar.gz)文件。

  • ②:创建一个 GZIPOutputStream ,用来包装 FileOutputStream 对象。

  • ③:创建一个 TarArchiveOutputStream ,用来包装 GZIPOutputStream 对象。

  • ④:接着,读取文件夹中的所有文件。

  • ⑤:如果是目录,则将其添加到 TarArchiveEntry

  • ⑥:如果是文件,依然将其添加到 TarArchiveEntry 中,然后还需将文件内容写入 TarArchiveOutputStream 中。

接下来,直接上代码:

至于代码每行都是什么意思,小伙伴们可以看代码注释,说的已经比较清楚了。

接下来,执行 main 方法,测试一下,看看打包是否成功:

umi2qey.png!web

生成采集器 tar.gz 包成功后,业务组只需将 tar.gz 下载下来,并扔到指定服务器,解压运行即可完成采集任务啦~

UjQjmaB.gif

三、结语

本文主要还是介绍如何通过 Java 来完成打包功能,关于 ELK 相关的知识,小哈会在后续的文章中分享给大家,本文只是提及一下,欢迎小伙伴们持续关注哟,下期见~

四、Ref

  • https://netjs.blogspot.com/2017/05/creating-tar-file-and-gzipping-multiple-files-java.html

- END -

PS: 另外,小哈建了个学习交流群,禁广告、推广,群内氛围非常不错的,大家有啥问题也可以在群里提问,有需要的小伙伴可以加一下~

加群方式 - 扫描下方 :point_down: 笔者二维码,备注: 加群

bARzyuA.jpg!web

iqq222R.gif

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*) 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK