FileBeat收获问题

时间:2017-11-08 14:54:06

标签: elasticsearch yaml elastic-stack filebeat

我们正在使用ELK来控制我们的程序日志。 在我们的FileBeat配置中,我们从 30个不同的路径中获取,其中包含每秒更新的文件(它仅在prod的机器中每秒更新一次 - 在其他Dev机器中我们的日志显着减少)。 我们的日志文件在变老之前不会被删除,我们会停止使用它们(我们也不会修改它们的名称)。 最近我们发现来自prod机器的配置文件(.yml)中的最后路径的日志永远不会出现在Kibana中。

经过调查,我们发现FileBeat卡在文件上是第一个路径,似乎永远不会到达最后一个路径。当我将最后两个路径的位置替换为开头时,FileBeat开始在那里注册所有日志,然后收集它们。

我查看了FileBeat配置的文档,我看到了关闭*选项close_option_config这似乎是一个好主意。但是我还没有设法把它弄好,而且我不确定scan_frequency选项的推荐时间是什么(现在默认为10秒)以及以最佳方式为我提供的服务。 / p>

我尝试将 close_timeout 更改为15秒,将 scan_frequency 更改为2米

      close_timeout: 15s
      scan_frequency: 2m

我想在此有些意见,我该怎么做才能解决这个问题?我把配置放在这里有一些参考,看看我是否错过了别的东西。

我的filebeat.yml :(在更改之前)

      filebeat:
  # List of prospectors to fetch data.
  prospectors:
    # Each - is a prospector. Below are the prospector specific configurations
    -
      paths:
        - D:\logs\*\path1\a_*_Pri_app.log.txt
      input_type: log
      document_type: type1
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    -
      paths:
        - D:\logs\*\path2\b_*_Paths_app.log.txt
      input_type: log
      document_type: type2
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    -
      paths:
        - D:\logs\*\path3\c_*_R_app.log.txt
      input_type: log
      document_type: path3
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    -
      paths:
        - D:\logs\*\path4\d_*_d_app.log.txt
        - C:\logs\*\path4\d_*_d_app.log.txt
      input_type: log
      document_type: path4
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after

.....与上述相同

 paths:
        - D:\logs\*\path27\S.Coordinator_Z.*.log*
        - C:\logs\*\path27\S.Coordinator_Z*.log*
      input_type: log
      document_type: path27
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    -
      paths:
        - D:\logs\*\path28\d_*_Tr_app.log.txt
        - C:\logs\*\path28\d_*_Tr_app.log.txt
      input_type: log
      document_type: path28
      multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
      multiline.negate: true
      multiline.match: after
    -
      paths:
        - D:\logs\*\R1_Output\R*\pid_*_rr_*
      input_type: log
      document_type: path29
      multiline.pattern: '<\?xml version="1\.0" encoding="UTF-8"\?>'
      multiline.negate: true
      multiline.match: after  
    -
      paths:
        - D:\logs\*\R2_Output\R*\pid_*_rr_*
      input_type: log
      document_type: path30
      multiline.pattern: '<\?xml version="1\.0" encoding="UTF-8"\?>'
      multiline.negate: true
      multiline.match: after

      registry_file: "C:/ProgramData/filebeat/registry"

1 个答案:

答案 0 :(得分:1)

经过长时间的调查后,我试图找到与解决方案相似的问题,并在dicuss弹性论坛上试试运气后。 我设法解决了这个问题。

由于我没有在网上看到这个选项,我将它放在这里。

Filebeat采集系统在同时处理大量打开文件时显然有限制。 (一个已知的问题和弹性团队还提供了一系列配置选项来帮助解决这个问题,并根据您的需要来装扮ELK,例如config_options)。 我设法解决了我的问题,打开了另外两个Filebeat服务,我按照以下方式配置他们的探矿者(A的一个例子转到B):

paths:
    - D:\logs\*\pid_*_rr_*
  input_type: log
  document_type: A 
  multiline.pattern: '<\?xml version="1\.0" encoding="UTF-8"\?>'
  multiline.negate: true
  multiline.match: after
  close_eof: true

通过这种方式,因为服务相互依赖的服务Filebeat不断尝试操作它们(而不是“卡在”第一个探矿者身上)。

我以这种方式管理我的收获能力翻倍。

在Elastic网站上发表讨论: the discussion