日志输入编辑

[7.16.0] 已弃用于 7.16.0。

日志输入已被弃用。请使用filestream 输入将日志文件发送到输出。

使用 log 输入从日志文件中读取行。

要配置此输入,请指定必须进行爬取以查找和获取日志行的、基于 glob 的 paths 列表。

示例配置

filebeat.inputs:
- type: log
  paths:
    - /var/log/messages
    - /var/log/*.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

从两个文件中收集行:system.logwifi.log

apache2 目录中的每个文件中收集行,并使用 fields 配置选项将名为 apache 的字段添加到输出中。

确保一个文件在所有输入中没有定义多次,因为这会导致意外行为。

读取网络共享和云提供商上的文件编辑

Filebeat 不支持从网络共享和云提供商读取文件。

但是,如果对 Filebeat 进行充分配置,则可以缓解这些数据源的限制之一。

默认情况下,Filebeat 根据文件的 inode 和设备 ID 来识别文件。但是,在网络共享和云提供商上,这些值可能会在文件的生命周期内发生变化。如果发生这种情况,Filebeat 会认为该文件是新文件,并重新发送文件的全部内容。要解决此问题,您可以配置 file_identity 选项。除了默认值 inode_deviceid 之外,还可以使用 pathinode_marker

选择 path 会指示 Filebeat 根据文件的路径来识别文件。如果 inode 和设备 ID 可能会发生变化,这是一种避免重新读取文件的快速方法。但是,请记住,如果文件被轮换(重命名),它们将被重新读取并重新提交。

如果即使设备 ID 发生变化,inode 也保持不变,则可以使用选项 inode_marker。如果您的文件是轮换的,而不是 path,则应尽可能选择此方法。您必须配置一个 Filebeat 可读的标记文件,并在 inode_markerpath 选项中设置路径。

此文件的内容对于设备必须是唯一的。您可以放置设备的 UUID 或存储输入的挂载点。以下单行示例为选定的挂载点 /logs 生成一个隐藏的标记文件:请注意,您不应该在 Windows 上使用此选项,因为文件标识符可能更易变。

$ lsblk -o MOUNTPOINT,UUID | grep /logs | awk '{print $2}' >> /logs/.filebeat-marker

要将生成的文件设置为 file_identity 的标记,您应该按以下方式配置输入

filebeat.inputs:
- type: log
  paths:
    - /logs/*.log
  file_identity.inode_marker.path: /logs/.filebeat-marker

从轮换日志中读取编辑

在处理文件轮换时,请避免收集符号链接。而是使用 paths 设置指向原始文件,并指定一个与您要收集的文件及其所有轮换文件相匹配的模式。还要确保您的日志轮换策略可以防止丢失或重复消息。有关更多信息,请参阅日志轮换导致事件丢失或重复

此外,为避免重复轮换日志消息,请勿对 file_identity 使用 path 方法。或者使用 exclude_files 选项排除轮换文件。

配置选项编辑

log 输入支持以下配置选项以及稍后描述的 通用选项

paths编辑

将进行爬取和获取的、基于 glob 的路径列表。Go Glob 支持的所有模式在此处也受支持。例如,要从预定义级别的子目录中获取所有文件,可以使用以下模式:/var/log/*/*.log。这将从 /var/log 的子文件夹中获取所有 .log 文件。它不会从 /var/log 文件夹本身获取日志文件。可以使用可选的 recursive_glob 设置递归地获取目录的所有子目录中的所有文件。

Filebeat 为其在指定路径下找到的每个文件启动一个收集器。您可以为每行指定一个路径。每行以破折号 (-) 开头。

recursive_glob.enabled编辑

启用将 ** 扩展为递归 glob 模式。启用此功能后,每个路径中最右边的 ** 将扩展为固定数量的 glob 模式。例如:/foo/** 扩展为 /foo/foo/*/foo/*/*,依此类推。如果启用,它会将单个 ** 扩展为 8 级深的 * 模式。

此功能默认启用。将 recursive_glob.enabled 设置为 false 可将其禁用。

encoding编辑

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

有效编码

  • plain:纯 ASCII 编码
  • utf-8utf8:UTF-8 编码
  • gbk:简体中文汉字
  • iso8859-6e:ISO8859-6E,拉丁语/阿拉伯语
  • iso8859-6i:ISO8859-6I,拉丁语/阿拉伯语
  • iso8859-8e:ISO8859-8E,拉丁语/希伯来语
  • iso8859-8i:ISO8859-8I,拉丁语/希伯来语
  • iso8859-1:ISO8859-1,Latin-1
  • iso8859-2:ISO8859-2,Latin-2
  • iso8859-3:ISO8859-3,Latin-3
  • iso8859-4:ISO8859-4,Latin-4
  • iso8859-5:ISO8859-5,拉丁语/西里尔语
  • iso8859-6:ISO8859-6,拉丁语/阿拉伯语
  • iso8859-7:ISO8859-7,拉丁语/希腊语
  • iso8859-8:ISO8859-8,拉丁语/希伯来语
  • iso8859-9:ISO8859-9,Latin-5
  • iso8859-10:ISO8859-10,Latin-6
  • iso8859-13:ISO8859-13,Latin-7
  • iso8859-14:ISO8859-14,Latin-8
  • iso8859-15:ISO8859-15,Latin-9
  • iso8859-16:ISO8859-16,Latin-10
  • cp437:IBM CodePage 437
  • cp850:IBM CodePage 850
  • cp852:IBM CodePage 852
  • cp855:IBM CodePage 855
  • cp858:IBM CodePage 858
  • cp860:IBM CodePage 860
  • cp862:IBM CodePage 862
  • cp863:IBM CodePage 863
  • cp865:IBM CodePage 865
  • cp866:IBM CodePage 866
  • ebcdic-037:IBM CodePage 037
  • ebcdic-1040:IBM CodePage 1140
  • ebcdic-1047:IBM CodePage 1047
  • koi8r:KOI8-R,俄语(西里尔语)
  • koi8u:KOI8-U,乌克兰语(西里尔语)
  • macintosh:Macintosh 编码
  • macintosh-cyrillic:Macintosh 西里尔语编码
  • windows1250:Windows1250,中欧和东欧语
  • windows1251:Windows1251,俄语、塞尔维亚语(西里尔语)
  • windows1252:Windows1252,旧版
  • windows1253:Windows1253,现代希腊语
  • windows1254:Windows1254,土耳其语
  • windows1255:Windows1255,希伯来语
  • windows1256:Windows1256,阿拉伯语
  • windows1257:Windows1257,爱沙尼亚语、拉脱维亚语、立陶宛语
  • windows1258:Windows1258,越南语
  • windows874:Windows874,ISO/IEC 8859-11,拉丁语/泰语
  • utf-16-bom:带有必需 BOM 的 UTF-16
  • utf-16be-bom:带有必需 BOM 的大端序 UTF-16
  • utf-16le-bom:带有必需 BOM 的小端序 UTF-16

plain 编码很特殊,因为它不验证或转换任何输入。

exclude_lines编辑

一个正则表达式列表,用于匹配您希望 Filebeat 排除的行。Filebeat 会删除与列表中正则表达式匹配的任何行。默认情况下,不会删除任何行。空行将被忽略。

如果还指定了 multiline 设置,则在通过 exclude_lines 过滤行之前,每条多行消息都会合并为一行。

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

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

有关支持的正则表达式模式列表,请参阅正则表达式支持

include_lines编辑

一个正则表达式列表,用于匹配您希望 Filebeat 包含的行。Filebeat 仅导出与列表中的正则表达式匹配的行。默认情况下,所有行都被导出。空行将被忽略。

如果还指定了 multiline 设置,则在通过 include_lines 过滤行之前,每条多行消息都会合并为一行。

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

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

如果同时定义了 include_linesexclude_lines,Filebeat 将首先执行 include_lines,然后再执行 exclude_lines。这两个选项的定义顺序无关紧要。include_lines 选项始终在 exclude_lines 选项之前执行,即使 exclude_lines 出现在配置文件中的 include_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 解码才能正常工作。

解码发生在行过滤和多行处理之前。如果设置了 message_key 选项,则可以将 JSON 解码与过滤和多行处理结合使用。这在应用程序日志包装在 JSON 对象中的情况下很有用,例如 Docker 就会出现这种情况。

示例配置

json.keys_under_root: true
json.add_error_key: true
json.message_key: log

您必须指定以下至少一个设置才能启用 JSON 解析模式

keys_under_root
默认情况下,解码后的 JSON 放在输出文档中 "json" 键下。如果启用此设置,则键将复制到输出文档的顶层。默认值为 false。
overwrite_keys
如果启用了 keys_under_root 和此设置,则在发生冲突时,解码后的 JSON 对象中的值将覆盖 Filebeat 通常添加的字段(类型、来源、偏移量等)。
expand_keys
如果启用此设置,Filebeat 将递归地取消解码后的 JSON 中键的点号,并将它们扩展为分层对象结构。例如,{"a.b.c": 123} 将被扩展为 {"a":{"b":{"c":123}}}。当输入由 ECS 记录器 生成时,应启用此设置。
add_error_key
如果启用此设置,Filebeat 会在 JSON 反编组错误或配置中定义了 message_key 但无法使用时添加 "error.message" 和 "error.type: json" 键。
message_key
一个可选的配置设置,用于指定要应用行过滤和多行设置的 JSON 键。如果指定,则该键必须位于 JSON 对象的顶层,并且与该键关联的值必须是字符串,否则不会进行过滤或多行聚合。
document_id
选项配置设置,用于指定用于设置文档 ID 的 JSON 键。如果配置了,该字段将从原始 JSON 文档中删除并存储在 @metadata._id
ignore_decoding_error
一个可选的配置设置,用于指定是否应记录 JSON 解码错误。如果设置为 true,则不会记录错误。默认值为 false。
multiline编辑

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

exclude_files编辑

一个正则表达式列表,用于匹配您希望 Filebeat 忽略的文件。默认情况下,不会排除任何文件。

以下示例将 Filebeat 配置为忽略所有扩展名为 gz 的文件

filebeat.inputs:
- type: log
  ...
  exclude_files: ['\.gz$']

有关支持的正则表达式模式列表,请参阅正则表达式支持

ignore_older编辑

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

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

您必须将 ignore_older 设置为大于 close_inactive

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

  • 从未被收集过的文件
  • 已被收集但未更新超过 ignore_older 的文件

对于以前从未见过的文件,偏移量状态设置为文件的末尾。如果状态已存在,则不会更改偏移量。如果稍后再次更新文件,则读取将从设置的偏移量位置继续。

ignore_older 设置依赖于文件的修改时间来确定是否忽略文件。如果在将行写入文件时未更新文件的修改时间(这在 Windows 上可能会发生),则 ignore_older 设置可能会导致 Filebeat 忽略文件,即使稍后添加了内容也是如此。

要从注册表文件中删除先前收集的文件的状态,请使用 clean_inactive 配置选项。

在 Filebeat 可以忽略文件之前,必须先关闭文件。要确保在忽略文件时不再收集文件,您必须将 ignore_older 设置为比 close_inactive 更长的持续时间。

如果当前正在收集的文件属于 ignore_older,则收集器将首先完成文件的读取,并在达到 close_inactive 后将其关闭。然后,之后,该文件将被忽略。

close_*编辑

close_* 配置选项用于在满足特定条件或时间后关闭收集器。关闭收集器意味着关闭文件句柄。如果在关闭收集器后更新了文件,则在经过 scan_frequency 后将再次拾取该文件。但是,如果在收集器关闭时移动或删除了文件,Filebeat 将无法再次拾取该文件,并且收集器尚未读取的任何数据都将丢失。close_* 设置在 Filebeat 尝试从文件中读取时同步应用,这意味着如果 Filebeat 由于输出阻塞、队列已满或其他问题而处于阻塞状态,则原本应关闭的文件将保持打开状态,直到 Filebeat 再次尝试从该文件读取。

close_inactive编辑

启用此选项后,如果在指定的时间段内未收集文件,Filebeat 将关闭文件句柄。定义的时间段的计数器在收集器读取最后一行日志时启动。它不基于文件的修改时间。如果已关闭的文件再次更改,则会启动新的收集器,并在经过 scan_frequency 后拾取最新的更改。

我们建议您将 close_inactive 设置为大于日志文件最不频繁更新的值。例如,如果您的日志文件每隔几秒钟更新一次,则可以安全地将 close_inactive 设置为 1m。如果存在更新频率差异很大的日志文件,则可以使用具有不同值的多个配置。

close_inactive 设置为较低的值意味着文件句柄会更快关闭。但是,这会导致副作用,即如果收集器关闭,则新的日志行不会实时发送。

关闭文件的时间戳不依赖于文件的修改时间。相反,Filebeat 使用一个内部时间戳,该时间戳反映了上次收集文件的时间。例如,如果将 close_inactive 设置为 5 分钟,则 5 分钟的倒计时将在收集器读取文件的最后一行后开始。

您可以使用时间字符串,例如 2h(2 小时)和 5m(5 分钟)。默认值为 5m。

close_renamed编辑

仅当您了解数据丢失是潜在的副作用时,才使用此选项。

启用此选项后,Filebeat 会在文件重命名时关闭文件句柄。例如,在轮换文件时会发生这种情况。默认情况下,收集器保持打开状态并继续读取文件,因为文件句柄不依赖于文件名。如果启用了 close_renamed 选项,并且文件以不再与路径指定的文件模式匹配的方式重命名或移动,则该文件将不会再次被拾取。Filebeat 将不会完成文件的读取。

当配置了基于 pathfile_identity 时,请勿使用此选项。启用该选项没有意义,因为 Filebeat 无法使用路径名作为唯一标识符来检测重命名。

WINDOWS:如果您的 Windows 日志轮换系统显示错误,因为它无法轮换文件,则应启用此选项。

close_removed编辑

如果启用此选项,则在删除文件时,Filebeat 会关闭收集器。通常,只有在文件处于非活动状态的时间超过 close_inactive 指定的时间后,才应删除该文件。但是,如果文件过早删除,并且您未启用 close_removed,则 Filebeat 会保持文件打开状态,以确保收集器已完成。如果此设置导致某些文件因从磁盘中删除过早而未被完全读取,请禁用此选项。

此选项默认启用。如果禁用此选项,则还必须禁用 clean_removed

WINDOWS:如果您的 Windows 日志轮换系统因无法轮换文件而显示错误,请确保启用此选项。

close_eof编辑

仅当您了解数据丢失是潜在的副作用时,才使用此选项。

如果启用此选项,Filebeat 会在到达文件末尾后立即关闭文件。如果您的文件只写入一次并且不会不时更新,则此选项非常有用。例如,当您将每个日志事件写入新文件时,就会发生这种情况。此选项默认禁用。

close_timeout编辑

仅当您了解数据丢失是潜在的副作用时,才使用此选项。另一个副作用是,在超时到期之前,多行事件可能无法完全发送。

如果启用此选项,Filebeat 会为每个收集器提供预定义的生命周期。无论读取器在文件中的哪个位置,读取操作都将在 close_timeout 时间段过后停止。如果您只想在旧日志文件上花费预定义的时间,则此选项非常有用。虽然 close_timeout 会在预定义的超时后关闭文件,但如果文件仍在更新,Filebeat 将根据定义的 scan_frequency 再次启动新的收集器。并且,此收集器的 close_timeout 将再次开始倒计时。

如果输出被阻塞,则此选项特别有用,因为即使文件已从磁盘中删除,Filebeat 也会保持文件句柄打开状态。将 close_timeout 设置为 5m 可确保定期关闭文件,以便操作系统可以释放它们。

如果将 close_timeout 设置为等于 ignore_older,则如果在收集器关闭时修改文件,则不会拾取该文件。此设置组合通常会导致数据丢失,并且不会发送完整的文件。

对包含多行事件的日志使用 close_timeout 时,收集器可能会在多行事件的中间停止,这意味着只会发送事件的一部分。如果收集器再次启动并且文件仍然存在,则只会发送事件的第二部分。

此选项默认设置为 0,表示已禁用。

clean_*编辑

clean_* 选项用于清理注册表文件中的状态条目。这些设置有助于减少注册表文件的大小,并可以防止潜在的 inode 重用问题

clean_inactive编辑

仅当您了解数据丢失是潜在的副作用时,才使用此选项。

如果启用此选项,Filebeat 会在指定的非活动时间段过后删除文件的状态。只有在 Filebeat 已经忽略该文件(文件早于 ignore_older)时,才能删除该状态。clean_inactive 设置必须大于 ignore_older + scan_frequency,以确保在文件仍在收集时不会删除任何状态。否则,该设置可能会导致 Filebeat 不断重新发送全部内容,因为 clean_inactive 会删除 Filebeat 仍然检测到的文件的状态。如果文件更新或再次出现,则会从头开始读取文件。

clean_inactive 配置选项可用于减少注册表文件的大小,尤其是在每天生成大量新文件的情况下。

此配置选项还可以防止 Linux 上由于 inode 重用导致的 Filebeat 问题。有关更多信息,请参阅 inode 重用导致 Filebeat 跳过行

每次重命名文件时,都会更新文件状态,并且 clean_inactive 的计数器将再次从 0 开始。

在测试过程中,您可能会注意到注册表包含应根据 clean_inactive 设置删除的状态条目。这是因为 Filebeat 不会删除这些条目,直到它再次打开注册表以读取其他文件。如果您正在测试 clean_inactive 设置,请确保将 Filebeat 配置为从多个文件读取,否则永远不会从注册表中删除文件状态。

clean_removed编辑

如果启用此选项,Filebeat 会从注册表中清理在最后一个已知名称下在磁盘上找不到的文件。这意味着,在收集器完成后重命名的文件也将被删除。此选项默认启用。

如果共享驱动器短暂消失然后再次出现,则将从头开始重新读取所有文件,因为这些状态已从注册表文件中删除。在这种情况下,建议您禁用 clean_removed 选项。

如果还禁用了 close_removed,则必须禁用此选项。

scan_frequency编辑

Filebeat 检查指定用于收集的路径中是否存在新文件的频率。例如,如果您指定了类似 /var/log/* 的通配符,则会使用 scan_frequency 指定的频率扫描目录以查找文件。指定 1s 以尽可能频繁地扫描目录,而不会导致 Filebeat 扫描过于频繁。我们不建议将此值设置为 <1s

如果您要求近乎实时地发送日志行,请勿使用非常低的 scan_frequency,而是调整 close_inactive,以便文件句柄保持打开状态并不断轮询您的文件。

默认设置为 10 秒。

scan.sort编辑

此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。

如果为此设置指定了非空字符串的值,则可以使用 scan.order 确定是使用升序还是降序。可能的值为 modtimefilename。要按文件修改时间排序,请使用 modtime,否则使用 filename。将此选项保留为空以禁用它。

如果为此设置指定了值,则可以使用 scan.order 配置是以升序还是降序扫描文件。

默认设置是禁用。

scan.order编辑

此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。

指定在将 scan.sort 设置为非“无”值时是使用升序还是降序。可能的值为 ascdesc

默认设置为 asc

tail_files编辑

如果此选项设置为 true,则 Filebeat 会在每个文件的末尾开始读取新文件,而不是从开头开始读取。如果将此选项与日志轮换结合使用,则新文件中的第一个日志条目可能会被跳过。默认设置为 false。

此选项适用于 Filebeat 尚未处理的文件。如果您以前运行过 Filebeat 并且文件的状态已经持久化,则 tail_files 将不适用。收集将从之前的偏移量继续。要将 tail_files 应用于所有文件,必须停止 Filebeat 并删除注册表文件。请注意,这样做会删除所有以前的状态。

首次在一组日志文件上运行 Filebeat 时,可以使用此设置避免为旧日志行编制索引。首次运行后,建议禁用此选项,否则可能会在文件轮换期间丢失行。

symlinks编辑

symlinks 选项允许 Filebeat 收集符号链接以及常规文件。收集符号链接时,Filebeat 会打开并读取原始文件,即使它报告的是符号链接的路径。

为收集配置符号链接时,请确保排除原始路径。如果将单个输入配置为同时收集符号链接和原始文件,Filebeat 将检测到问题,并且只处理它找到的第一个文件。但是,如果配置了两个不同的输入(一个用于读取符号链接,另一个用于读取原始路径),则会收集这两个路径,从而导致 Filebeat 发送重复数据,并且这些输入会覆盖彼此的状态。

如果指向日志文件的符号链接在文件名中包含其他元数据,并且您想在 Logstash 中处理这些元数据,则 symlinks 选项非常有用。例如,Kubernetes 日志文件就是这种情况。

由于此选项可能会导致数据丢失,因此默认禁用。

backoff编辑

退避选项指定 Filebeat 爬网打开文件以进行更新的频率。在大多数情况下,您可以使用默认值。

backoff 选项定义了 Filebeat 在到达 EOF 后等待多长时间再次检查文件。默认值为 1 秒,这意味着如果添加了新行,则每秒检查一次文件。这实现了近乎实时的抓取。每次文件中出现新行时,都会将 backoff 值重置为初始值。默认值为 1 秒。

max_backoff编辑

Filebeat 在到达 EOF 后再次检查文件之前等待的最长时间。在多次退避检查文件后,无论为 backoff_factor 指定了什么,等待时间都不会超过 max_backoff。因为读取新行最多需要 10 秒,为 max_backoff 指定 10 秒意味着,在最坏的情况下,如果 Filebeat 已经多次退避,则可以在日志文件中添加新行。默认值为 10 秒。

要求:将 max_backoff 设置为大于或等于 backoff 且小于或等于 scan_frequencybackoff <= max_backoff <= scan_frequency)。如果 max_backoff 需要更高,建议关闭文件句柄,让 Filebeat 重新获取文件。

backoff_factor编辑

此选项指定等待时间增加的速度。退避因子越大,达到 max_backoff 值的速度就越快。退避因子呈指数增长。允许的最小值为 1。如果此值设置为 1,则禁用退避算法,并使用 backoff 值来等待新行。每次将 backoff 值与 backoff_factor 相乘,直到达到 max_backoff。默认值为 2。

harvester_limit编辑

harvester_limit 选项限制为一个输入并行启动的收集器数量。这与打开的文件处理程序的最大数量直接相关。harvester_limit 的默认值为 0,这意味着没有限制。如果要采集的文件数量超过操作系统的打开文件句柄限制,则此配置很有用。

设置收集器数量限制意味着可能无法并行打开所有文件。因此,我们建议您将此选项与 close_* 选项结合使用,以确保更频繁地停止收集器,以便可以获取新文件。

目前,如果可以再次启动新的收集器,则会随机选择收集器。这意味着可能会启动刚刚关闭并再次更新的文件的收集器,而不是启动一段时间内未采集的文件的收集器。

此配置选项适用于每个输入。您可以使用此选项通过分配更高的收集器限制来间接设置某些输入的更高优先级。

file_identity编辑

可以配置不同的 file_identity 方法,以适应您收集日志消息的环境。

native(本机)
Filebeat 的默认行为是使用其 inode 和设备 ID 来区分文件。
file_identity.native: ~
path(路径)
要根据文件的路径标识文件,请使用此策略。

仅当您的日志文件被轮换到输入范围之外的文件夹或根本没有轮换时,才使用此策略。否则,您最终会得到重复的事件。

此策略不支持重命名文件。如果输入文件被重命名,并且新路径与输入的设置匹配,则 Filebeat 将再次读取它。

file_identity.path: ~
inode_marker(inode 标记)
如果设备 ID 经常更改,则必须使用此方法来区分文件。Windows 上不支持此选项。

按以下方式设置标记文件的位置

file_identity.inode_marker.path: /logs/.filebeat-marker

常见选项编辑

所有输入都支持以下配置选项。

enabled编辑

使用 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。

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

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"

publisher_pipeline.disable_host编辑

默认情况下,所有事件都包含 host.name。可以将此选项设置为 true 以禁用将此字段添加到所有事件中。默认值为 false