• 【ELFK】之Filebeat


    一、Filebeat介绍

    1、Filebeat是什么?

    • Filebeat适用于转发和集中数据的轻量级传送工具,Filebeat监视了指定的日志文件或位置,收集日志事件,并将他们转发到Elasticsearch或Logstash进行索引。

    • **Filebeat的工作方式:**启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找,对于Filebeat所找到的每个日志,Filebeat都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到libbeat,libbeat将聚集事件,并将聚集的数据发送到位Filebeat配置的输出。

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

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

    2、Filebeat的工作原理

    • Filebeat可以保持每个文件的状态,并且频繁的把文件状态从注册表里更新到磁盘,这里所说的文件状态是用来记录上一次Harvaster读取文件时,读取到的位置,以保证能把全部的日志都读取出来,然后发给output。

    • 如果在某一时刻,作为output的Elasticsearch或则Logstash变成了不可用,Filebeat将会把最后的文件读取位置保存下来,直到output重新可用的时候,快速地恢复文件数据的读取。

    • 在Filebeat运行过程中,每个Prospector的状态信息都会保存在内存里,如果Filebeat出现了重启,完成重启之后,会从注册表文件里恢复重启之间的状态信息,让Filebeat继续从之间已知的位置开始进行读取数据。

    理解
    Filbeat可以实现保持读取时的文件状态。将文件状态频繁保存在磁盘中。
    1、这样可以保证能把全部的日志读取出来。
    2、在output的ES或logsatsh出现故障,Filebeat也会把文件读取位置保存下来,方便下次快速恢复。
    3、当Filebeat出现故障重启时,也可以恢复到之前的读取位置。
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、Filebeat用途

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

    1、为什么要用filebeat来收集日志?为什么不直接使用lohstash收集日志?

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

    2、filebeat结合logstash带来的好处?

    1、通过logstash,具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻Elasticsearch持续写入数据的压力。

    2、从其它数据源(例如数据库,s3对象存储或消息传递队列)中提取

    3、将数据发送到多个目的地,例如S3,HDFS(hadoop分部署文件系统)或写入文件

    4、使用数据流逻辑组成更复杂的处理管道。

    3、Filebeat和Logstash的区别

    logstashfilebeat
    内存
    CPU
    插件
    功能从多中输入端采集并实时解析和转换数据并输出到多中输出端传输
    轻重相对较重轻量级的二进制文件
    过滤能力强大的过滤能力轻微的过滤能力
    进程一台服务器只允许一个logstash进程,挂掉之后需要手动拉起
    原理logstash使用管道的方式进行日志的收集和输出,分为输入input、输出output,每个阶段都有不同的替代方式开启进程后悔启动一个或多个探测器(prospectors)去检测指定的日志文件,对于探测器找到的每一个日志文件,filebeat启动收个进程(harvester),没一个收个进程读取一个日志文件的新内容,并发现这些新的数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定地点。
    集群单节点单节点
    输出多个接收方支持6.0之前支持
    二次开发或者扩展开发

    二、部署ELFK

    1、环境搭建

    再ELK的的服务基础上,增加一台filebeat服务器。

    主机名IP地址部署软件系统
    node120.0.0.55Elasticsearch、Kibanacentos7
    node220.0.0.56Elasticsearchcentos7
    apache20.0.0.57logstash、apachecentos7
    filebeat20.0.0.58filebeatcentos7

    关闭防护墙、修改主机名。

    systemctl disable --now firewalld
    
    hostnamectl set-hostname filebeat
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2、安装filebeat

    #上filebeat包上传到/opt目录下
    
    cd /opt
    tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz
    
    mv filebeat-6.2.4-linux-x86_64 /usr/local/filebeat
    
    cd /usr/local/filebeat
    vim filebeat.yml
    
    filebeat.prospectors:
    ##21行,指定log类型,从日志文件中读取消息
    - type: log
    ##24行,开启日志收集功能,默认为false
      enabled: true
    ##28行,指定监控的日志文件
        - /var/log/ *.log
    ##29行,添加收集/var/log/messages
        - /var/log/messages
    ##31行,添加以下内容,注意格式
      fields: 
        service_name: filebeat
        log_type: log
        service_id: 20.0.0.58
    #-------------------------- Elasticsearch output -------------------------
    该区域内容全部注释
    #----------------------------- Logstash output ---------------------------
    ##165行,取消注释
    output.logstash:
    ##167行,取消注释,指定logstash的IP和端口号
      hosts: ["20.0.0.57:5044"]
    
    ./filebeat -e -c filebeat.yml
    #启动filebeat,-e记录到stderr并禁用syslog /文件输出,-c指定配置文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

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

    3、在logstash组件所在的节点(apache节点)上新建一个logstash配置文件

    cd /etc/logstash/conf.d
    vim logstash.conf
    input {
        beats {
            port => "5044"
        }
    }
    output {
        elasticsearch {
            hosts => ["20.0.0.55:9200", "20.0.0.56:9200"]
            index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
        }
        stdout {
            codec => rubydebug
        }
    }
    
    /usr/share/logstash/bin/logstash -f logstash.conf 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

    4、验证查看

    网页访问20.0.0.55:9100查看能否查看到

    在这里插入图片描述

    网页访问20.0.0.55:5601查看能否查看到
    在这里插入图片描述

  • 相关阅读:
    工业和信息化部办公厅 市场监管总局办公厅关于开展2023年度智能制造系统解决方案揭榜挂帅项目申报工作的通知
    Nginx入门到搭建
    zookeeper 常见问题处理
    Android组件化实现,理解吸收
    记录undefined reference to `SSLv3_client_method‘错误笔记
    pycharm plot不显示的问题
    Linux驱动实践:带你一步一步编译内核驱动程序
    接口测试工具那么多,新公司用的自己没接触过怎么办?
    “蔚来杯“2022牛客暑期多校训练营4
    Zlib和Zstd 性能对比评测
  • 原文地址:https://blog.csdn.net/m0_57515995/article/details/126681483