ELK日志分析系统+Filebeat

Filebeat是一个轻量级的日志收集工具,由prospector和harvester组件构成,用于读取和转发文件事件数据。它能持久化文件状态,确保日志数据完整传输,即使在output不可用时也能恢复。相比Logstash,Filebeat内存消耗小,适合大规模集群环境。在ELK集群部署中,Filebeat收集日志并发送给Logstash,Logstash再处理并转发到Elasticsearch进行存储和分析。
摘要由CSDN通过智能技术生成

一、Filebeat简介

Filebeat由两个主要组成部分组成:prospector(探勘者)和 harvesters(矿车)。这些组件一起工作来读取文件并将事件数据发送到指定的output。

  • prospector: 负责找到所有需要进行读取的数据源。
  • harvesters:负责读取单个文件的内容,并将内容发送到output中,负责文件的打开和关闭。

二、Filebeat工作原理

Filebeat可以保持每个文件的状态,并且频繁地把文件状态从注册表里更新到磁盘。这里所说的文件状态是用来记录上一次Harvster读取文件时读取到的位置,以保证能把全部的日志数据都读取出来,然后发送给output。如果在某一时刻,作为output的ElasticSearch或者Logstash变成了不可用,Filebeat将会把最后的文件读取位置保存下来,直到output重新可用的时候,快速地恢复文件数据的读取。在Filebaet运行过程中,每个Prospector的状态
信息都会保存在内存里。如果Filebeat出行了重启,完成重启之后,会从注册表文件里恢复重启之前的状态信息,让FIlebeat继续从之前已知的位置开始进行数据读取。

三、Filebeat用途

适用于集群环境下,服务多,且部署在不同的机器。

为什么要用filebeat来收集日志?为什么不直接用logstash收集日志?
因为logstash是jvm跑的,资源消耗比较大,启动一个logstash就需要消耗500M左右的内存(这就是为什么logstash启动特别慢的原因),而filebeat只需要10来M内存资源。常用的ELK日志采集方案中,大部分的做法就是将所有节点的日志内容通过filebeat发送到logstash,logstash根据配置文件进行过滤。然后将过滤之后的文件输送到elasticsearch中,通过kibana去展示。

Filebeat和Logstash的区别

logstashFilebeat
内存
CPU
插件
功能从多种输入端采集并实时解析和转换数据并输出到多种输出端传输
过滤能力强大的过滤能力有过滤能了但是弱
轻重相对较重轻量级二进制文件
进程一台服务器只允许一个logstash进程,挂掉之后需要手动启动
集群单节点单节点
原理Logstash使用管道的方式进行日志的搜集和输出,分为输入input处理filter(不是必须的)输出output,每个阶段都有不同的替代方式开启进程后会启动一个或多个探测器(prospectors)去检测指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester) ,每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点

四、ELK集群部署与filebeat

ELK集群的部署在前一篇文章中有详细介绍,可参考前一篇文章。

注意:ELFK集群环境下,Logstash 组件所在节点的/etc/logstash/conf.d目录下,不需要创建system.conf配置文件,即Logstash不需要收集系统日志,因为系统日志将由filebeat收集后发送给Logstash。(安装filebeat后,Logstash会创建filebeat.conf配置文件获取filebeat传来的数据)

实验环境

Node1节点(2C/4G):node1/192.168.10.130 Elasticsearch Kibana

Node2节点(2C/4G):node2/192.168.10.132 Elasticsearch

Apache节点:apache/192.168.10.133 Logstash Apache

Filebeat节点:filebeat/192.168.10.134 Filebeat

实验图示
在这里插入图片描述

1、安装filebeat

上传软件包到/opt目录
[root@localhost opt]#tar zxf filebeat-6.6.0-linux-x86_64.tar.gz
[root@localhost opt]#ls
filebeat-6.6.0-linux-x86_64  filebeat-6.6.0-linux-x86_64.tar.gz  rh
[root@localhost opt]#mv filebeat-6.6.0-linux-x86_64 /usr/local/filebeat

在这里插入图片描述

2、设置filebeat的主配置文件

[root@localhost opt]#cd /usr/local/filebeat
[root@localhost filebeat]#vim filebeat.yml
 
 filebeat.prospectors:
- type: log         #指定 log 类型,从日志文件中读取消息
  enabled: true
  paths:
    - /var/log/messages       #指定监控的日志文件
    - /var/log/*.log
  fields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中
    service_name: filebeat
    log_type: log
    service_id: 192.168.10.134
 
 --------------Elasticsearch output-------------------
 (全部注释掉)
 
 ----------------Logstash output---------------------
 output.logstash:
   hosts: ["192.168.80.133:5044"]      #指定 logstash 的 IP 和端口
 
[root@localhost filebeat]#./filebeat -e -c  filebeat.yml   #启动 filebeat
 
 nohup ./filebeat -e -c filebeat.yml > filebeat.out &
 #-e:输出到标准输出,禁用syslog/文件输出
 #-c:指定配置文件
 #nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、启动filebeat

[root@localhost filebeat]#./filebeat -e -c filebeat.yml

在这里插入图片描述

4、在 Logstash 组件所在节点上新建一个 Logstash 配置文件

[root@localhost ~]#cd /etc/logstash/conf.d/
[root@localhost conf.d]#vim logstash.conf
input {
    beats {
        port => "5044"
    }
}
output {
    elasticsearch {
        hosts => ["192.168.10.130:9200"]
        index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => rubydebug
    }
}
#保存退出

这会报个错
在这里插入图片描述

[root@apache conf.d]#init 6  #重启
#切记重启完后一定要关防护墙 核心防护

在这里插入图片描述

5、启动logstash,在浏览器访问验证

[root@apache conf.d]#logstash -f logstash.conf 

浏览器访问 http://192.168.10.130:5601 登录 Kibana,
 单击“Create Index Pattern”按钮添加索引“filebeat-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值