> 文章列表 > ELK日志分析系统+Filebeat

ELK日志分析系统+Filebeat

ELK日志分析系统+Filebeat

日志分析系统之Filebeat

    • 一、Filebeat简介
    • 二、Filebeat工作原理
    • 三、Filebeat用途
    • 四、ELK集群部署与filebeat
      • 1、安装filebeat
      • 2、设置filebeat的主配置文件
      • 3、启动filebeat
      • 4、在 Logstash 组件所在节点上新建一个 Logstash 配置文件
      • 5、启动logstash,在浏览器访问验证

一、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的区别

logstash Filebeat
内存
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.ymlfilebeat.prospectors:
- type: log         #指定 log 类型,从日志文件中读取消息enabled: truepaths:- /var/log/messages       #指定监控的日志文件- /var/log/*.logfields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中service_name: filebeatlog_type: logservice_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   #启动 filebeatnohup ./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” 按钮可查看图表信息及日志信息。

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