filebeat部署与运用

一、前言

    Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。带有内部模块(auditd,Apache,Nginx,System和MySQL),可通过一个指定命令来简化通用日志格式的收集,解析和可视化。

二、部署与运行

①.下载(或使用网盘中提供的安装包,版本为:filebeat-6.5.4)
    网盘链接:https://pan.baidu.com/s/1quCglgpLYMy_Z_gyVvSqKA
    提取码:ctf9

②.解压并且创建相应的目录存放解压后的文件

#创建一个存放filebeat压缩包的文件夹
mkdir /usr/local/beats
#解压
tar -xvf filebeat-6.5.4-linux-x86_64.tar.gz 
#进入解压后的filebeat目录
cd filebeat-6.5.4-linux-x86_64

③.创建一个filebeat.yml文件

#创建如下配置文件 filebeat.yml
filebeat.inputs: 
- type: stdin  
  enabled: true 
setup.template.settings:  
  index.number_of_shards: 3 
output.console:  
  pretty: true  
  enable: true 

④.启动filebeat

#启动filebeat 
./filebeat -e -c itcast.yml
#输入hello运行结果如下: 
hello

⑤.输出结果

{  
 "@timestamp": "2019-01-12T12:50:03.585Z",  
 "@metadata": { #元数据信息    
    "beat": "filebeat",    
    "type": "doc",    
    "version": "6.5.4"  
 },  
 "source": "",  
 "offset": 0,  
 "message": "hello",  #输入的内容  
 "prospector": { #标准输入勘探器    
    "type": "stdin"  
    },  
 "input": {  #控制台标准输入  
    "type": "stdin"  
   },
 "beat": { #beat版本以及主机信息 
    "name": "itcast01",
    "hostname": "itcast01",   
    "version": "6.5.4"  
   },  
 "host": {    
    "name": "itcast01"  
   } 
}

三、读取日志文件

#创建如下配置文件 filebeat-log.yml
filebeat.inputs: 
#读取日志信息
- type: log
  paths:
   - /usr/local/beats/logs/ *.log 
setup.template.settings:  
  index.number_of_shards: 3 
output.console:  
  pretty: true  
  enable: true 

#启动filebeat 
./filebeat -e -c filebeat-log.yml

#/haoke/beats/logs下创建a.log文件,并输入如下内容 
hello 
world

#观察filebeat输出 
//......省略

四、自定义字段

#修改配置文件 filebeat-log.yml
filebeat.inputs: 
#读取日志信息
- type: log
  paths:
   - /usr/local/beats/logs/ *.log 
  #添加自定义tag,便于后续的处理
  tags: ["web"]   
  #添加自定义字段
  fields: 
    test: filebeat_test	   
  fields_under_root: true #true为添加到根节点,false为添加到子节点中
setup.template.settings:  
  index.number_of_shards: 3 
output.console:  
  pretty: true  
  enable: true 

#启动filebeat 
./filebeat -e -c filebeat-log.yml

#/haoke/beats/logs下创建a.log文件,并输入如下内容 
hello 
world

#观察filebeat输出 
//......省略

五、输出到Elasticsearch

#修改配置文件 filebeat-log.yml
filebeat.inputs: 
#读取日志信息
- type: log
  paths:
   - /usr/local/beats/logs/ *.log 
  #添加自定义tag,便于后续的处理
  tags: ["elasticsearch"]   
  #添加自定义字段
  fields: 
    test: filebeat_test	   
  fields_under_root: true #true为添加到根节点,false为添加到子节点中
setup.template.settings:  
  index.number_of_shards: 3 
#指定ES的配置 
output.elasticsearch:  
  hosts: ["192.168.1.7:9200","192.168.1.7:9201","192.168.1.7:9202"]


#启动filebeat 
./filebeat -e -c filebeat-log.yml

#/haoke/beats/logs下创建a.log文件,并输入如下内容 
123

在日志文件中输入新的内容进行测试:
在这里插入图片描述
查看数据
在这里插入图片描述

六、Module

    前面要想实现日志数据的读取以及处理都是自己手动配置的,其实,在Filebeat中,有大量的Module,可以简化我 们的配置,直接就可以使用,如下:

./filebeat modules list
Enabled:

Disabled: 
apache2 
auditd 
elasticsearch 
haproxy 
icinga 
iis 
kafka
//......省略其他模块

①.可以看到,内置了很多的module,但是都没有启用,如果需要启用需要进行enable操作:

./filebeat modules enable nginx #启动 
#./filebeat modules disable nginx #禁用

Enabled: 
nginx

Disabled: 
apache2 
auditd 
elasticsearch 
haproxy 
icinga 
iis 
kafka 
//......省略其他模块

②.nginx module 配置 :

#此配置文件在filebeat目录下的modules.d下面

- module: nginx  
  # Access logs  
  access:
    enabled: true   
    var.paths: ["/usr/local/nginx/logs/access.log*"]
    # Set custom paths for the log files. If left empty,    
    # Filebeat will choose the paths depending on your OS.
    #var.paths:
    
  # Error logs  
  error: 
    enabled: true  
    var.paths: ["/usr/local/nginx/logs/error.log*"]
    # Set custom paths for the log files. If left empty,    
    # Filebeat will choose the paths depending on your OS.  
    #var.paths:

③.配置filebeat :

#vim itcast-nginx.yml
filebeat.inputs: 
#- type: log #  enabled: true #  paths: 
#    - /usr/local/nginx/logs/ *.log 
#  tags: ["nginx"] 
setup.template.settings:
   index.number_of_shards: 3 
output.elasticsearch:  
   hosts: ["192.168.40.133:9200","192.168.40.134:9200","192.168.40.135:9200"] 
filebeat.config.modules:
   path: ${path.config}/modules.d/ *.yml  
   reload.enabled: false

④.测试 :

./filebeat -e -c itcast-nginx.yml
//.....查看输出结果

七、Filebeat工作原理

Filebeat由两个主要组件组成:prospector 和 harvester。

  • harvester:
    - 负责读取单个文件的内容。
    - 如果文件在读取时被删除或重命名,Filebeat将继续读取文件。

  • prospector
    - prospector 负责管理harvester并找到所有要读取的文件来源。
    - 如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。
    - Filebeat目前支持两种prospector类型:log和stdin。

  • Filebeat如何保持文件的状态
    - Filebeat 保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中。
    - 该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
    - 如果输出(例如Elasticsearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用 时继续读取文件。
    - 在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebeat时,将使用注册 文件的数据来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取。
    - 文件状态记录在data/registry文件中。

八、总结

    一般情况下Filebeat可满足大部分的日志采集需求,但是仍然避免不了一些特殊的场景需要我们对Filebeat进行定制化开发,当然Filebeat本身的设计也提供了良好的扩展性。

发布了185 篇原创文章 · 获赞 457 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42146366/article/details/104057109