ELK 日志收集系统,常用方案

Posted catoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ELK 日志收集系统,常用方案相关的知识,希望对你有一定的参考价值。

写在前面:
Logtail 好像挺不错的,但是它目前还是阿里云的云上产品,有正式开源对社区使用吗(可以留言告知)?所以本文还是列出常用的 ELK 为基础的几个方案。
如果 Logtail 非云端社区随便使用,我想我可以会选择它。


背景

在项目初期的时候,大家都是赶着上线,一般来说对日志没有过多的考虑,当然日志量也不大,所以用log4j就够了,随着应用的越来越多,日志散落在各个服务器的logs文件夹下,确实有点不大方便。或者是分布式系统:当我们需要日志分析的时候你大概会这么做:直接在日志文件中 grep、awk就可以获得自己想要的信息。这就造成了日志查询极其繁琐;如果日志中有敏感数据,也要考虑是否开放给所有人

可能遇到的问题:
日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询
应用太多,面临数十上百台应用时你该怎么办,随意登录服务器查询log对系统的稳定性及安全性肯定有影响如果使用人员对Linux不太熟练那面对庞大的日志简直要命那么为什么要用ELK呢?ELK又能给我们解决哪些问题呢?

组件简介

  • Filebeat :是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读)【Ruby语言】。
  • Kafka:是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
  • Logstash:【如果对日志做深加工就需要这个组件】是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。
  • Kibana:它提供了一个分布式多用户能力的全文搜索引擎,基于RESTFUL web接口,是ElasticSearch的用户界面。

在实际应用场景下,为了满足大数据实时检索的场景,利用Filebeat去监控日志文件,将Kafka作为Filebeat的输出端,Kafka实时接收到Filebeat后以Logstash作为输出端输出,到Logstash的数据也许还不是我们想要的格式化或者特定业务的数据,这时可以通过Logstash的一些过滤插件对数据进行过滤最后达到想要的数据格式以ElasticSearch作为输出端输出,数据到ElasticSearch就可以进行丰富的分布式检索了。Kibana可以将ElasticSearch里的数据很好的展示给用户使用。

常用方案

名称简称组织架构简介推荐使用情况
方案1ELKlogstash+es+kibanaLogstash部署一般比较吃内存经典模式
方案2EFKfilebeat+es+kibanafilebeat比Logstash轻量许多此种架构非常适合中小型单的日志收集系统。因为logstash里面提供了一些丰富的过滤功能,其实一般很多系统都用不上,所以就可以直接采用filebeat进行日志的收集轻量级,无侵入
方案3FELKfilebeat+logstash+es+kibana此种设计适合需要丰富采集日志信息的系统,可部署一台Logstash用于接收filebeat收集到的日志进行集中的过滤后再传给es。当然你要是机器足够的话 Logstash也可以部署集群减轻压力根据实际情况选择方案3或4
方案4个性化框架 FELK引入kafka或者redis高并发大数据流量系统采用的方案高负载,大型系统

一般来说其实第一种和第二种用的更多,相信绝大部分公司使用第一种就可以满足(第二种更轻量)。

方案1:ELK

ELK 为以前相对经典的一种同步日志的方式

优势:

  • 集成方便对应用侵入少,搭建容易

短板:

  • 如果web应用比较多,都同时往logstash直接发送日志,logstash可能扛不住压力
  • 还有一些其他系统也需要收集日志,比如大数据系统,这种架构可能就不是很合适
  • logstash是一个重量级的中间件,很耗内存

方案二:EFK

fileBeat 插件直接同步数据到 ES 存储

方案三:FELK

如果需要对数据进行加工处理就需要 Logstash

方案四:个性化框架

(采集到的日志需要进行加工或者多方需要的情况)引入kafka或者redis。一般也会采用Filebeat+(消息中间件)+logstash(也可以不要,直接通过消息中间件入es)+es+kibana

大型互联网公司后端日志收集系统架构:相当吃服务器资源,可能只有头部互联网公司的核心业务在用

通过redsi/kafka中间件来限流

总结

各个方案各有优缺点,在合适的场景使用合适的解决方案才是我们所追求的目标,一般系统使用方案二就够了,这里没有标准答案。

本文参考:https://blog.csdn.net/qq_38130094/article/details/115333335


(END)

以上是关于ELK 日志收集系统,常用方案的主要内容,如果未能解决你的问题,请参考以下文章

ELK日志系统设计方案-Filebeat日志收集推送Kafka

ELK日志系统设计方案-Filebeat日志收集推送Kafka

ELK日志系统设计方案-Filebeat日志收集推送Kafka

ELK 构建 MySQL 慢日志收集平台

ELK日志系统之使用Rsyslog快速方便的收集Nginx日志

ELK+kafka构建日志收集系统