采集自动组合( 一下和Logstash的区别两者区别介绍)
优采云 发布时间: 2022-03-01 18:17采集自动组合(
一下和Logstash的区别两者区别介绍)
背景
Filebeat 和 Logstash 都可以用于 log采集。Logstash 出现的时间比 filebeat 早得多。随着时间的发展,logstash不仅是一个日志采集工具,它还可以作为一个日志采集工具。丰富的输入|过滤|输出插件可用。从关系上看,filebeat 是替代 Logstash Forwarder 的下一代 Logstash 采集器。为了更快速、稳定、轻量、低消耗地采集数据,可以轻松对接Logstash,直接对接Elasticsearch。本文将详细介绍这两者。区别
文件节拍
介绍
Filebeat 是用 Golang 实现的轻量级日志采集器,是 Elasticsearch 堆栈的成员。它本质上是一个代理,可以安装在每个节点上,根据配置读取对应位置的日志,并上报到对应的位置。Filebeat 可靠性高,可以保证日志至少上报一次。同时也考虑了日志采集中的各种问题,比如日志断点续、文件名变化、日志截断等。Filebeat不依赖ElasticSearch,可以独立存在。我们可以单独使用 Filebeat 来上报和采集日志。filebeat内置了常用的Output组件,如kafka、ElasticSearch、redis等。出于调试目的,也可以输出到console和file。
特征
工作准则
Filebeat主要由prospector(检测器)和harvester(采集器)两个组件组成,它们共同完成Filebeat的工作。Filebeat程序启动时,会启动一个或多个探针,检测指定的日志目录或文件。对于probe发现的每一个日志文件,Filebeat都会启动一个采集进程,每个采集进程都会读取一个日志文件的内容,然后将日志数据发送给后台handler,后台handler会采集这些事件,最后发送Collect数据到输出指定的目的地。
日志存储
介绍
Logstash 最初由 Jordan Sissel 开发,是一个具有实时管道功能的开源数据采集引擎。Logstash 可以动态地统一来自不同数据源的数据,并将数据规范化到您选择的目的地。虽然 Logstash 的早期目标是采集日志,但它现在的功能远不止于此。任何事件类型都可以添加到分析中,通过输入、过滤器和输出插件进行转换。同时提供了很多原生编解码工具来简化消息处理。Logstash 通过海量数据处理和对各种数据格式的支持扩展了我们的数据洞察力。
特征
Logstash 采集日志的能力很轻。它不限于日志源和日志形式。应该非常适合系统监控和问题分析,对技术要求不高。实现的语言是ruby,并且有一个sincedb数据库文件来监控它。日志文件的当前读取位置。不用担心 Logstash 丢失数据。
工作准则
Logstash 事件处理分为三个阶段:输入→过滤器→输出。是用于接收、处理和转发日志的工具。支持系统日志、webserver 日志、错误日志、应用程序日志,简而言之,包括所有可以抛出的日志类型。管道(Logstash Pipeline)是Logstash中一个独立的运行单元,每个管道收录两个必需的元素输入(input)和输出(output),以及一个可选元素过滤器(filter),事件处理管道负责协调它们的执行。输入和输出支持编*敏*感*词*,允许您在数据进入或退出管道时对其进行编码或解码,而无需使用单独的过滤器。
总结
因为filebeat是用go写的,logstash是用ruby写的。Logstash会占用大量的jvm,相比Logstash,filebeat占用的系统CPU和内存几乎可以忽略不计。当然,并不是 filebeat 完全占主导地位。Filebeat专注于采集,所以这也是很多架构使用filebeat后跟logstash进行信息转换的原因。logstash 和 filebeat 都有日志采集功能。虽然filebeat更轻量,占用资源更少,但logstash有过滤功能,可以过滤和分析日志。大体结构是filebeat采集日志,然后发送到消息队列、redis、kafaka。然后logstash得到它,使用filter函数过滤分析,存储在elasticsearch中。配置难,资源消耗,经常崩溃,并且难以解决的问题使 Logstash 成为 ELK Stack 中最薄弱的环节。然而,尽管存在这些缺陷,Logstash 仍然是 ELK 堆栈的关键组件。Logstash 和 filebeat 可以一起使用,相互补充。