ELK(实时日志分析平台)搭建必备基础知识-------filebeat

预热:基础知识 

      Beats是elastic公司的一款轻量级数据采集产品,它包含了几个子产品:

  • packetbeat(用于监控网络流量)、
  • filebeat(用于监听日志数据,可以替代logstash-input-file)、
  • topbeat(用于搜集进程的信息、负载、内存、磁盘等数据)、
  • winlogbeat(用于搜集windows事件日志)

      Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。 以下是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。

Harvester(收割机):负责读取单个文件内容。每个文件会启动一个Harvester,每个Harvester会逐行读取各个文件,并将文件内容发送到制定输出中。Harvester负责打开和关闭文件,意味在Harvester运行的时候,文件描述符处于打开状态,如果文件在收集中被重命名或者被删除,Filebeat会继续读取此文件。所以在Harvester关闭之前,磁盘不会被释放。默认情况filebeat会保持文件打开的状态,直到达到close_inactive(如果此选项开启,filebeat会在指定时间内将不再更新的文件句柄关闭,时间从harvester读取最后一行的时间开始计时。若文件句柄被关闭后,文件发生变化,则会启动一个新的harvester。关闭文件句柄的时间不取决于文件的修改时间,若此参数配置不当,则可能发生日志不实时的情况,由scan_frequency参数决定,默认10s。Harvester使用内部时间戳来记录文件最后被收集的时间。例如:设置5m,则在Harvester读取文件的最后一行之后,开始倒计时5分钟,若5分钟内文件无变化,则关闭文件句柄。默认5m)。

Prospector(勘测者):负责管理Harvester并找到所有读取源。

Prospector会找到/apps/logs/*目录下的所有info.log文件,并为每个文件启动一个Harvester。Prospector会检查每个文件,看Harvester是否已经启动,是否需要启动,或者文件是否可以忽略。若Harvester关闭,只有在文件大小发生变化的时候Prospector才会执行检查。只能检测本地的文件。

Filebeat如何记录文件状态:

将文件状态记录在文件中(默认在 /你的安装路径/filebeat-6.5.3-linux-x86_64/data/registry)。此状态可以记住Harvester收集文件的偏移量。若连接不上输出设备,如ES等,filebeat会记录发送前的最后一行,并再可以连接的时候继续发送。Filebeat在运行的时候,Prospector状态会被记录在内存中。Filebeat重启的时候,利用registry记录的状态来进行重建,用来还原到重启之前的状态。每个Prospector会为每个找到的文件记录一个状态,对于每个文件,Filebeat存储唯一标识符以检测文件是否先前被收集。

registry内容如下:offset日志文件读取偏移量,看到这些信息你是不是大概明白了呢

[{"source":"/usr/local/logs/catalina-test.out","offset":4214960,"timestamp":"2018-12-20T20:06:26.992531352+08:00","ttl":-1,"type":"log","meta":null,"FileStateOS":{"inode":675369,"device":64769}},
{"source":"/usr/local/logs/catalina.out","offset":4215010,"timestamp":"2018-12-20T20:16:15.464056254+08:00","ttl":-1,"type":"log","meta":null,"FileStateOS":{"inode":675345,"device":64769}}]

Filebeat如何保证事件至少被输出一次:

Filebeat之所以能保证事件至少被传递到配置的输出一次,没有数据丢失,是因为filebeat将每个事件的传递状态保存在文件中。在未得到输出方确认时,filebeat会尝试一直发送,直到得到回应。若filebeat在传输过程中被关闭,则不会再关闭之前确认所有时事件。任何在filebeat关闭之前为确认的时间,都会在filebeat重启之后重新发送。这可确保至少发送一次,但有可能会重复。可通过设置shutdown_timeout 参数来设置关闭之前的等待事件回应的时间(默认禁用)。

1,安装

 下载:

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.3-linux-x86_64.tar.gz

解压:

tar -zxvf filebeat-6.5.3-linux-x86_64.tar.gz

2,配置

     这里有一个简单的filebeat的配置文件filebeat.yml的样本,filebeat会使用很多默认的选项。

  如果你想使用自己的输入配置,请一定要修改 enable: false 为 enable: true

基本配置步骤一:设置log path 

paths:
    - /usr/local/logs/*.out  #爬取/usr/local/logs下面所有的 .out文件
    - /usr/local/*/*.out  #爬取/usr/local/下面的子文件夹的所有的 .out文件,不包括/usr/local下面
    # 的*.out文件

  注意:在预定义级别的子目录中获取所有文件,可以使用这个配置:/var/log/*/*.log,这会找到/var/log下所有子目录中所有的  以.log结尾的文件。但它并不会找到/var/log文件夹下的以.log结尾的文件。现在它还不能递归的在所有子目录中获取所有的日志文件。

基本配置步骤二:配置输出

filebeat支持多种输出,常见的有logstash,elasticsearch,kibana,kafaka。其中最常用的是到logstash做过滤与清洗,但中间层也可以添加kafaka做消息队列,是为了防止信息丢失,所以放在kafaka里面,redis 亦可

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

 如果指定输出为logstash,则在logstash的配置文件  logstash.conf 中需要配置

input {
  beats {
    port => 5044 # 此端口需要与 filebeat.yml 中的端口相同
  }
}

更多配置步骤:https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html

3,启动

./filebeat -c filebeat.yml -e  #指定配置文件路径启动

更多filebeat操作见:https://www.elastic.co/guide/en/beats/filebeat/6.5/index.html

猜你喜欢

转载自blog.csdn.net/EQuaker/article/details/85138145