Filebeat 是轻量级的数据收集器, 占用资源少, 支持系统很多, 是ELK 后期增加的一员。

一. 从官网下载, win10 是win 64位版本

下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

目前是7.0.1 版本。

二. 把下载的filebeat-7.0.1-windows-x86_64.zip 解压

我是把里面的文件夹解压到 D:\program files\ 下,然后把文件夹filebeat-7.0.1-windows-x86_64 改名为 Filebeat。

filebeat daemonset 方式收集pod日志 filebeat收集windows日志_软链接

 

三. 用管理员模式运行 power shell

cd ‘D:\program files\filebeat’

D:\program files\filebeat> .\install-service-filebeat.ps1

这个操作是把filebeat 注册成windows 服务, 如果你有安装类型360 安全卫士,会有提醒拦截,允许就行了, 成功的话,显示

filebeat daemonset 方式收集pod日志 filebeat收集windows日志_字段_02

 

如果上面的脚本执行不成功,有权限的问题, 执行下面的试试(我没验证是否可行)

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1
四. 配置

官方的配置文档:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html

当然我们肯定不是什么都不用配置就可以使用的, 具体的配置文件是

filebeat daemonset 方式收集pod日志 filebeat收集windows日志_elasticsearch_03

 

用文本工具打开filebeat.yml, 我个人喜欢用editplus, 注意因为用yml, 所以每段的缩进或空格都不能随便来的。

1. 配置输入 inputs

如果有不同的配置, 就用多个- type: log, 但是如果只是多个目录, 一个- type: log 就够了

如:

- type: log
配置1
 
- type: log
配置2
每个- type: log

enabled: true #启用

paths: 

     - G:\testlog\*.log  #用了* 的通配符,这个百度一下就了解了用法了

     - 其他目录。。。。。可以配置多个目录

     #exclude_lines: ['^DBG']                #不包括的行,用了正则表达式,这里是排除debug 的行数据

     #include_lines: ['^ERR', '^WARN']   #包括的行, 用了正则表达式, 这是是指定错误或警告的行数据

     #exclude_files: ['.gz$']             #排除的文件, 这里是排除gz 的压缩文件

     #fields:           #自定义的字段和值, 用于传给输出

          自定义字段1: 自定义字段的值1

     ### Multiline options 多行配置,如java 的exception 输入整个栈的内容

     #multiline.pattern: ^\[             #正则表达式,这个后面还有两个参数配合使用

     #multiline.negate: false

     #multiline.match: after              #官方的例子是最好的说明了

          

filebeat daemonset 方式收集pod日志 filebeat收集windows日志_elasticsearch_04

 

    #多行的其他设置

    #multiline.flush_pattern  #指定正则表达式,匹配的多行信息将会结束,内容将会从内存中输出并刷新,特别适合有指定开始标志和结束标志的日志信息。

 #multiline.max_lines   #最大的合并行的行数, 默认是500

 #multiline.timeout    #合并行的超时时间,默认5秒,超过5秒没有新的行加入,已合并的行将会被发出

------------------------下面是*.yml 文件没有写到的  -----------------------------

     #recursive_glob.enabled        #是否包括子目录,最多8层目录,默认是true, 可以设置为false               

     #encoding: utf-8                #文件编码,对于有中文的这个配置就很重要了,最后用编码utf-8, 如果用gb 系统编码,最新是gb18030, 比utf-8 支持的汉字要多

     #harvester_buffer_size   #每一行的缓存字节数, 默认是16384, 设当的缓存能提高效率

     #max_bytes           #一次性发送的消息最大字节数,超过的会被抛弃,特别是对多行的数据有用,默认10MB (10485760)   

      #ignore_older      #忽略更新时间在指定时间段前的文件,如忽略更新在2个小时前的文件。默认值是0,表示不启用该功能。启用该功能的话,可以使用时间字符串,2h(2小时)或 5m(5分钟)。这个配置项的值必须比 close_inactive 的值大, 为什么呢? 后面有说明, 忽略的文件必须是关闭的, 对于打开的文件, 就要关闭后再忽略了, close_inactive 配置的时间就是多久没更新就关闭文件的句柄。

     ## close_* 文件关闭的一些配置

     #close_inactive    #文件在指定时间内没有再次被采集,filebeat 关闭该文件的句柄。如果后面文件有更新,还是会被采集到的。默认是5m(5分钟)。如果文件的更新频率比较固定,我们可以设置关闭的时间比更新的时间高一些,这样每次都能实时采集,不然就是要等下一次的扫描周期才会采集。

      #close_renamed     #配置了这项的话,文件改名或移动,filebeat 将关闭文件的句柄。实践中,一些日志文件达到某些条件(如大小lin49940,行数或日期等),就会重新创建一个新的文件,老的文件改名,由于filebeat 是指向文件句柄的,所以文件改名或移动对其识别是没影响的,如果配置了这个,那么filebeat 将关闭文件句柄,不再读取文件。 

  #close_removed     #配置了这项的话,文件删除,filebeat 将关闭文件句柄,不再采集。特别是大文件,如果没有采集完全就被删除了,那么采集就不完整了。

  #close_timeout      #timeout 超时,容易让人误解这个配置项的意义。它其实是采集器的生命周期,到了时间就停止采集,等待下一次的扫描周期。

     ##clean_* 清理registry  文件, registry  文件会记录我们采集过的文件和文件内部的位置, 但是如果我们采集的文件很多,采集进行很久了, 那么registry  文件将会很大,所以必须有一个操作来维护registry  文件,减少它的大小。

     #clean_inactive    #清理 registry  文件 中不活跃的文件状态,设定的时间必须大于ignore_older + scan_frequency 的时间设定值。如果清除状态的文件再次更新, 那么文件会被从头开始采集。官方文档写了一个这个配置项最有用的地方,就是Linux系统的 inode 重用问题导致 filebeat 认错文件的问题。个人lin49940 追加一个,就是业务中不会再被更新的日志文件,如有时间周期的日志文件,归档的日志文件等。

   #clean_removed    #该配置项是默认启用的,如果文件被改名,移动或者删除, 那么这些文件的状态将从registry  文件 中清除。 当时有一个场景要注意, 就是当我们读取文件夹的权限被没收,然后再此被给与, 这个时候文件夹下面的文件的状态会从registry  文件被清除, 这些文件将会从头开始采集,因为这个由于,官方是建议关闭这个配置项的。如果我们禁用close_removed 配置项的话,那么必须同时禁用该配置项。

  #scan_frequency  #扫描指定文件夹的频率,默认是10s(10秒),设置1s 扫描filebeat 也没问题, 但是不建议扫描时间低于1秒。如果你需要近乎实时同步数据,那也不要把这个值配置得很低, 我们可以修改close_inactive 的值,一直打开的文件句柄会被持续轮询。

     #scan.sort     #排序字段,默认是禁用的,属于还在实验中的阶段,一般有用的话,文件修改时间或文件名称作为排序字段

  #scan.order            #搭配前面的排序字段使用(asc or desc)升序和倒序,默认是升序,也是属于实验的阶段。

     #tail_files             #从文件尾部开始扫描,默认是false, 如果是true,就是只关心当前及后面发生的日志,不关心前面的日志了。

 #symlinks     #软链接,要理解的话就是windows 的快捷方式了,像我们同一个软件装了几个版本,但是我们每次想指定一个默认的版本使用,用软链接就很适合了,切换版本修改一下软链接就行了。Linux下安装python3后也会用到软链接,用于默认使用python3,而不是python2

      

     没有了 document_type 了。

五. 启动

命令启动或者在服务里面启动

PS C:\Program Files\Filebeat> Start-Service filebeat