如何配置Filebeat收集日志文件

[Filebeat7.6]

日志输入

filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
    - /var/path2/*.log

您可以添加额外的 配置设置(如fieldsinclude_linesexclude_linesmultiline,等),从这些文件中获取行。您指定的选项将应用于此输入收集的所有文件。

要将不同的配置设置应用于不同的文件,您需要定义多个输入节:

filebeat.inputs:
- type: log 
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
- type: log 
  paths:
    - "/var/log/apache2/*"
  fields:
    apache: true
  fields_under_root: true

确保在所有input中每个文件只定义一次,因为定义多次这可能导致意外的行为。

配置选项

  • paths

    将获取的Glob的路径的列表。这里也支持Go Glob支持的所有模式。
    例如,将所有文件从子目录的获取,/var/log/*/*.log,将从/var/log的子文件夹中提取所有.log文件。它不会从/var/log文件夹本身获取日志文件。可以使用可选recursive_glob设置以递归方式获取目录所有子目录中的所有文件。

  • recursive_glob.enabled
    默认开启,启用扩展**为递归glob模式。它将单个扩展**为8级深度*模式。

  • encoding

    用于读取包含国际字符的数据的文件编码。请参阅W3C建议在HTML5中使用的编码名称。

  • exclude_lines

    正则表达式列表,匹配要排除的行。Filebeat会删除列表中与正则表达式匹配的所有行。默认情况下,不删除任何行。空行将被忽略。

    如果还指定了多行设置,则在用过滤各行之前,将每条多行消息合并为一行exclude_lines

    以下示例将Filebeat配置为删除以开头的任何行 DBG

    filebeat.inputs:
    - type: log
      ...
      exclude_lines: ['^DBG']
    

    支持的正则表达式模式的列表,请参见正则表达式支持

  • include_lines

    正则表达式列表,以匹配您要匹配的行。Filebeat仅匹配与列表中的正则表达式匹配的行。默认情况下,所有行均被导出。空行将被忽略。

    如果还指定了多行设置,则在用过滤各行之前,将每条多行消息合并为一行include_lines

    以下示例将Filebeat配置为导出以ERR或开头的任何行WARN

    filebeat.inputs:
    - type: log
      ...
      include_lines: ['^ERR', '^WARN']
    

    NOTE

    如果同时定义了include_linesexclude_lines,首先执行include_lines,然后执行exclude_lines`。定义两个选项的顺序无关紧要。

    以下示例匹配所有包含的日志行sometext,但以DBG(调试消息)开头的行除外

    filebeat.inputs:
    - type: log
      ...
      include_lines: ['sometext']
      exclude_lines: ['^DBG']
    
harvester_buffer_size

在获取文件时使用的缓冲区大小(以字节为单位)。默认值为16384。

max_bytes

一条日志消息可以具有的最大字节数。之后的所有字节 max_bytes将被丢弃而不发送。此设置对于可能会变大的多行日志消息特别有用。默认值为10MB(10485760)。

json

这些选项使Filebeat可以解码结构化为JSON消息的日志。Filebeat逐行处理日志,因此,只有每行有一个JSON对象时,JSON解码才有效。

multiline

控制Filebeat如何处理跨多行的日志消息的选项。有关配置多行选项的更多信息,请参见多行消息

ignore_older

如果启用此选项,则Filebeat将忽略在指定时间跨度之前修改的所有文件。ignore_older如果长时间保留日志文件,则配置特别有用。例如,如果要启动Filebeat,但只想发送最新的文件和上周的文件,则可以配置此选项。

您可以使用2h(2小时)和5m(5分钟)之类的时间字符串。默认值为0,将禁用设置。注释掉配置与将其设置为0具有相同的效果。

important

您必须设置ignore_older为大于close_inactive

受此设置影响的文件分为两类:

  • 从未收集过的文件
  • 收获但未更新的文件的时间不超过 ignore_older
scan_frequency

Filebeat多久检查一次指定用于收集的路径中的新文件。指定1s可以尽可能频繁地扫描目录,而不会导致Filebeat频繁扫描。我们不建议设置此值<1s

如果您需要近乎实时地发送日志行,设置 scan_frequency调整,close_inactive以使文件处理程序保持打开状态并不断轮询文件。

默认设置为10秒。

常用选项

enabled

使用该enabled选项可以启用和禁用输入。默认情况下,启用设置为true。

tags

Filebeat包含在tags每个已发布事件的字段中的标签列表。使用标记,可以轻松地在Kibana中选择特定事件或在Logstash中应用条件过滤。这些标签将被添加到常规配置中指定的标签列表中。

例:

filebeat.inputs:
- type: log
  . . .
  tags: ["json"]
fields

您可以指定可选字段以将其他信息添加到输出中。例如,您可以添加可用于过滤日志数据的字段。字段可以是标量值,数组,字典或它们的任何嵌套组合。默认情况下,您在此处指定的字段将被分组fields到输出文档中的子词典下。要将自定义字段存储为顶级字段,请将fields_under_root选项设置为true。如果在常规配置中声明了重复字段,则其值将被此处声明的值覆盖。

filebeat.inputs:
- type: log
  . . .
  fields:
    app_id: query_engine_12
fields_under_root

如果将此选项设置为true,则自定义 字段将作为顶级字段存储在输出文档中,而不是分组在fields子词典下。如果自定义字段名称与Filebeat添加的其他字段名称冲突,则自定义字段将覆盖其他字段。

processors

应用于输入数据的处理器列表。

有关在配置中指定处理器的信息,请参阅处理器

pipeline

要为此输入生成的事件设置的接收节点管道ID。

也可以在Elasticsearch输出中配置管道ID,但是此选项通常会导致配置文件更简单。如果在输入和输出中都配置了管道,则使用输入中的选项。

keep_null

如果将此选项设置为true,则带有null值的字段将发布在输出文档中。默认情况下,keep_null设置为false

index

如果存在,此格式化的字符串将覆盖来自此输入的事件的索引(对于elasticsearch输出),或者设置raw_index事件的元数据的字段(对于其他输出)。该字符串只能引用代理名称和版本以及事件时间戳。用于访问动态字段,使用 output.elasticsearch.index或处理器。

值示例:"%{[agent.name]}-myindex-%{+yyyy.MM.dd}"可能扩展为"filebeat-myindex-2019.11.01"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章