日志预警之Logstash和FileBeat
创始人
2025-05-30 08:44:25

日志预警

通常网上使用ELK作为基础进行搭建预警平台,例如ElastAlter,但是ELK使用起来过重,占用服务器资源

我们使用FileBeat+Logstash作为方案:FileBeat作为日志采集工具,Logstash进行分析和处理

logstash 和filebeat区别和联系

区别

  1. 因为logstash是jvm跑的,资源消耗比较大;filebeat使用golang开发,不占用jvm资源
  2. logstash可以读取远端文件;filebeat只能读取本地文件
  3. logstash有filter过滤功能;filebeat不具有过滤功能

联系

  1. logstash 和filebeat都具有日志收集功能,filebeat更轻量,占用资源更少,但logstash 具有filter功能,能过滤分析日志
  2. 一般结构都是filebeat采集日志,然后发送到消息队列,redis,kafaka
  3. 然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中再使用kibana进行可视化

总结

1. Logstash

优势:Logstash 主要的优点就是它的灵活性,主要因为它有很多插件,详细的文档以及直白的配置格式让它可以在多种场景下应用。我们基本上可以在网上找到很多资源,几乎可以处理任何问题。

劣势:1.性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。2.这里有 Logstash 与 rsyslog 性能对比以及Logstash 与 filebeat 的性能对比。它在大数据量的情况下会是个问题。3.目前不支持缓存,目前的典型替代方案是将 Redis 或 Kafka 作为中心缓冲池:

典型应用场景:1.因为 Logstash 自身的灵活性以及网络上丰富的资料2.Logstash 适用于原型验证阶段使用,或者解析非常的复杂的时候。3.在不考虑服务器资源的情况下,如果服务器的性能足够好,我们也可以为每台服务器安装 Logstash 。我们也不需要使用缓冲,因为文件自身就有缓冲的行为,而 Logstash 也会记住上次处理的位置。4.如果服务器性能较差,并不推荐为每个服务器安装 Logstash ,这样就需要一个轻量的日志传输工具,将数据从服务器端经由一个或多个 Logstash 中心服务器传输到 Elasticsearch:

2. FileBeat

优势:Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

劣势Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。

典型应用场景1.Filebeat 在解决某些特定的问题时:日志存于文件,我们希望将日志直接传输存储到 Elasticsearch。这仅在我们只是抓去(grep)它们或者日志是存于 JSON 格式(Filebeat 可以解析 JSON)。或者如果打算使用 Elasticsearch 的 Ingest 功能对日志进行解析和丰富。2.将日志发送到 Kafka/Redis。所以另外一个传输工具(例如,Logstash 或自定义的 Kafka 消费者)可以进一步丰富和转发。这里假设选择的下游传输工具能够满足我们对功能和性能的要求。

3. 总结

Flume更注重于数据的传输,对于数据的预处理不如Logstash。在传输上Flume比Logstash更可靠一些,因为数据会持久化在channel中。数据只有存储在sink端中,才会从channel中删除,这个过程是通过事物来控制的,保证了数据的可靠性。

Logstash是ELK组件中的一个,一般都是同ELK其它组件一起使用,更注重于数据的预处理,Logstash有比Flume丰富的插件可选,所以在扩展功能上比Flume全面。但Logstash内部没有persist queue,所以在异常情况下会出现数据丢失的问题。

Filebeat是一个轻量型日志采集工具,因为Filebeat是Elastic Stack的一部分,因此能够于ELK组件无缝协作。Filebeat占用的内存要比Logstash小很多。性能比较稳健,很少出现宕机。

安装和配置

1. Logstash安装和配置

安装

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.1.tar.gz
tar zxvf logstash-7.3.1.tar.gz
mv logstash-7.3.1 /usr/local/logstash
cd /usr/local/logstash/config
cp logstash-sample.conf logstash-test.conf
vi logstash-test.conf

配置

input {file {path => "/opt/xinyue/logs/erp_error.log"type => "test"codec => multiline {pattern => "^\d{4}-\d{1,2}-\d{1,2}"negate => truewhat => previous}}beats{port => 5044type => "prod"}
}filter {if([message]=~".BizException"){drop{}}if([message]=~".ExpiredJwtException"){drop{}}if([message]=~"com.ztbase.system.util.DateFormatUtils"){drop{}}
}output {#elasticsearch {#  hosts => ["http://localhost:9200"]#  index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"#user => "elastic"#password => "changeme"#}stdout {codec => rubydebug}if ([type]=="test"){http {url => "https://oapi.dingtalk.com/robot/send?access_token=f3a1649c9140c3eb31c3604632d576190a2c29ce6f1190623b996dabdf3b359e"http_method => "post"content_type => "application/json; charset=utf-8"format => "message"message => '{"msgtype":"markdown","markdown":{"title":"系统错误通知","text":"test测试环境错误日志通知,请相关同事注意。\n  >错误信息:%{message}\n   >"}}'}}if([type] == "prod") {http {url => "https://oapi.dingtalk.com/robot/send?access_token=f3a1649c9140c3eb31c3604632d576190a2c29ce6f1190623b996dabdf3b359e"http_method => "post"content_type => "application/json; charset=utf-8"format => "message"message => '{"msgtype":"markdown","markdown":{"title":"系统错误通知","text":"生产环境错误日志通知,请相关同事注意test。\n  >错误信息:%{message}\n   >"}}'}}
}

启动

/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-test.conf >out.log 2>nohup.out &

2. FileBeat安装和配置

安装

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-linux-x86_64.tar.gz
tar xzvf filebeat-7.3.1-linux-x86_64.tar.gz
mv filebeat-7.3.1-linux-x86_64 /usr/local/filebeat
cd /usr/local/filebeat
vi filebeat-prod.yml

配置

filebeat.inputs:
- type: logpaths:- /opt/prod/logs/erp_error.logmultiline.pattern: '^\d{4}-\d{1,2}-\d{1,2}'multiline.negate: truemultiline.match: after# encoding: GB2312output.logstash:# The Logstash hostshosts: ["39.174.83.222:5044"]

启动

/usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat-prod.yml >filebeat.log 2>nohup.out &

相关内容

热门资讯

初识C语言(3) 操作符,关键字(typedef、static),指针
一口一口吃掉yolov8(2) 前面介绍了训练的第一个部分,也是大部分人在网上找得到的文章,但是后面2个...
lol女枪西部牛仔有没有特效,... lol女枪西部牛仔有没有特效目录lol女枪西部牛仔有没有特效烬哪个皮肤手感好?lol女枪西部牛仔有没...
灭鼠神器超声波管用吗,超声波灭... 灭鼠神器超声波管用吗目录灭鼠神器超声波管用吗超声波灭老鼠有效果吗?电子猫超声波驱鼠器电子灭鼠器,管用...
5173交易账号收多少手续费啊... 本篇文章极速百科给大家谈谈5173交易账号收多少手续费啊,以及5173账号交易收费标准对应的知识点,...
父亲节是每年的几月几号呢,父亲... 父亲节是每年的几月几号呢目录父亲节是每年的几月几号呢父亲节母亲节是几月几号 父亲节和母亲节是每年的几...
53-exec进程替换 exec进程替换 一.exec系列 1.execl #include#include#include...
CF1737E Ela Goe... CF1737E Ela Goes Hiking 题目大意 nnn 只蚂蚁站成一排,第 ...
福州一日游哪里好玩,福州一日游... 福州一日游哪里好玩目录福州一日游哪里好玩福州一日游必去景点福州一天游,求推荐去哪福州一日游,有什么好...
新车5到6万买什么车好,预算5... 新车5到6万买什么车好目录新车5到6万买什么车好预算5万,有哪些车款可以推荐?买车5-6万买什么车好...
网络语言JMS是什么意思(jm... 本篇文章极速百科给大家谈谈网络语言JMS是什么意思,以及jms是什么意思中文翻译对应的知识点,希望对...
苹果6id锁怎么强制解除,苹果... 苹果6id锁怎么强制解除目录苹果6id锁怎么强制解除苹果六忘记ID激活锁怎么办如何强制解除id锁的方...
机器人阻抗控制(二) #阻抗控制 #机器人控制 #动力学方程 《Cartesian Impedance Control o...
SkyWalking 日志收集 SkyWalking 日志收集一、需求二、步骤2.1 pom文件引入依赖2.2 logback-sp...
DETR网络模型构建 这篇文章主要为记录DETR模型的构建过程 首先明确DETR模型的搭建顺序:首先是bac...
算法强化每日一题--组队竞赛 大家好 先看看题目 链接:组队竞赛__牛客网 [编程题]组队竞赛 牛牛举办了一次编...
什么是人际交往,什么是人际交往... 什么是人际交往目录什么是人际交往什么是人际交往?影响人际交往的因素有哪些?什么是人际交往人际交往指的...
自考大专什么时候报名,自考大专... 自考大专什么时候报名目录自考大专什么时候报名自考大专怎么报名 报考时间在几月份?每年的什么时候报名自...
蚕的变化过程,蚕的一生经历了哪... 蚕的变化过程目录蚕的变化过程蚕的一生经历了哪几个阶段?咨询:蚕的演变过程?蚕的生长变化顺序是怎样的?...
汽车出现service是什么意... 汽车出现service是什么意思目录汽车出现service是什么意思车上的service是什么意思?...
arcpy基础篇(6)-制图脚... arcpy.mapping模块可以实现地图制图的自动化,它的具体功能包括管理地图文档、...
基于 Zynq 的振动台控制器... 3 振动台控制器架构设计与实现 如前所述,Zynq-7000 本身已经具有了独特的架...
为什么手机收不到验证码短信,为... 为什么收不到短信验证码 3. 曾经向运营商申请过屏蔽短信号码,或添加过黑名单。 4. 短...
中国移动如何免费领取10G流量... 中国移动如何免费领取10G流量目录中国移动如何免费领取10G流量免费领10g流量的软件中国移动送10...
描写孩子童真的句子,孩子童真的... 描写孩子童真的句子目录描写孩子童真的句子孩子童真的唯美句子有哪些?描写童真童趣的一段话,急急!!!描...
QQ空间如何自定义封面,进入q... QQ空间如何自定义封面目录QQ空间如何自定义封面进入qq空间时的封面怎么设置?不花钱的那种怎样制作Q...
55-kill命令及实现kil... kill命令及实现kill命令 一. kill命令简介 在Linux系统中,kill命...
【问题与方法】如何使用vsco... 码字不易,如果各位看官感觉该文章对你有所帮助,麻烦点个关注,...
OMM导致tomcat引用假死 背景 在开发测试环境发现一个奇怪的情况,因查询100w条数据导致OOM,...
座落是哪个坐,座落是座还是坐?... 座落是哪个坐目录座落是哪个坐座落是座还是坐?座位是广字框的左还是哪个座?座落的意思座落是哪个坐 ...