行,今天就来唠唠我最近折腾的这个“eik”玩意儿。
起因挺简单的,就是我自个儿搞的那个小破项目,日志文件越来越大,堆在那儿跟小山似的。每次想找点啥信息,比如某个报错是啥时候开始的,或者看看哪个功能用户用得多,就得手动去翻那些文本文件,眼睛都快看瞎,效率贼低。听人说现在都流行用些工具来集中处理日志,搜搜就看到“eik”这个说法,看着好像挺厉害,就想着动手试试看。
一开始我还纳闷这“eik”到底是后来捣鼓一阵才明白,大家常说的是 ELK,就是三个东西的缩写:
- E 指的是 Elasticsearch,这玩意儿感觉像个专门存和搜日志的搜索引擎。
- L 指的是 Logstash,这家伙负责去收集、处理咱们那些乱七八糟的日志文件。
- K 指的是 Kibana,用这个东西把收集到的数据显示出来,搞成图表啥的,看着直观。
我这实践的第一步,就是先把这仨兄弟给找齐活。网上找资料的时候,好多人都特别强调,说这三个东西的版本最好要配套,用同一个大版本的,不然容易出各种奇怪的问题,兼容性不太这点我记心里,省得后面踩坑。
开始动手搭环境
我找个闲置的旧电脑,装个干净的 Linux 系统,准备就在这上面搞。先装 Elasticsearch,这个相对还算顺利,按照官方的步骤来,下载、解压、运行,启动起来后,用命令敲敲,看到返回信息,感觉是跑起来。
接着是 Logstash。这家伙就有点麻烦。主要是配置,得告诉它去哪儿读我的日志文件,读之后要做啥处理,比如把一行行的日志拆分成不同的字段,再把它发送给 Elasticsearch 存起来。这个配置文件写起来有点绕,我反复试好几次,格式老是出错,启动就报错。对着文档,又参考网上别人的例子,改好几版,总算是能正常启动,并且看到它开始吭哧吭哧地读我的日志文件。
是 Kibana。这个是跑在浏览器里的界面,相对简单点。装好启动后,主要就是配置它去连接 Elasticsearch。地址填对,它俩就能对上眼。第一次在浏览器里打开 Kibana 界面,看到能连上 Elasticsearch,心里稍微踏实点。
数据进来,但麻烦也不少
环境搭起来只是第一步,关键是看效果。我让 Logstash 读几个小日志文件做测试。过一会儿,去 Kibana 里看,果然有数据进来!在 Discover 页面能看到原始的日志条目,可以用 Kibana 的搜索框来过滤,确实比以前手动 `grep` 快多。
但是,问题也跟着来。
- 资源消耗不小:我那台旧电脑配置一般,跑着这仨大家伙,内存和 CPU 占用噌噌往上涨,风扇呼呼转。看来这套东西对硬件还是有点要求的。
- 配置还得细调:虽然日志进来,但 Kibana 里显示的字段跟我想要的还不太一样。Logstash 那边的处理规则(主要是 filter 部分)还得继续优化,才能把日志信息更精确地提取出来。比如时间字段的格式,得统一弄对,不然 Kibana 做基于时间的分析就容易乱套。
- 学习成本:这三个东西,每个都有自己的一套东西要学。Elasticsearch 的查询语法,Logstash 的 pipeline 配置,Kibana 的各种可视化图表制作,都不是看一眼就会的,得花时间去琢磨。
初步成果和感受
折腾几天,总算是把这个“eik”或者说 ELK 的基本流程跑通。现在我那个小项目的日志,能够自动被收集起来,存在 Elasticsearch 里,然后我可以通过 Kibana 比较方便地去搜索和查看。比如,我弄个简单的仪表盘,放几个图表,能大致看到每天的访问量、错误数量这些。
总的来说,这回实践虽然磕磕绊绊,但收获还是挺大的。起码知道这套东西是怎么运作的,也体会到它在日志处理方面的强大。不过也确实像网上说的,这玩意儿不是银弹,从搭建、配置到后期维护,都需要持续投入精力。特别是版本兼容和资源消耗这块,确实得注意。
对我自己来说,虽然只是个小项目用上 ELK,有点杀鸡用牛刀的感觉,但整个过程下来,学到不少东西,也算值。以后再遇到类似的日志分析需求,心里就有底。
还没有评论,来说两句吧...