日志输入

编辑

[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_identitypath 方法。或者使用 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,拉丁语-1
  • iso8859-2:ISO8859-2,拉丁语-2
  • iso8859-3:ISO8859-3,拉丁语-3
  • iso8859-4:ISO8859-4,拉丁语-4
  • iso8859-5:ISO8859-5,拉丁语/西里尔语
  • iso8859-6:ISO8859-6,拉丁语/阿拉伯语
  • iso8859-7:ISO8859-7,拉丁语/希腊语
  • iso8859-8:ISO8859-8,拉丁语/希伯来语
  • iso8859-9:ISO8859-9,拉丁语-5
  • iso8859-10:ISO8859-10,拉丁语-6
  • iso8859-13:ISO8859-13,拉丁语-7
  • iso8859-14:ISO8859-14,拉丁语-8
  • iso8859-15:ISO8859-15,拉丁语-9
  • iso8859-16:ISO8859-16,拉丁语-10
  • cp437:IBM 代码页 437
  • cp850:IBM 代码页 850
  • cp852:IBM 代码页 852
  • cp855:IBM 代码页 855
  • cp858:IBM 代码页 858
  • cp860:IBM 代码页 860
  • cp862:IBM 代码页 862
  • cp863:IBM 代码页 863
  • cp865:IBM 代码页 865
  • cp866:IBM 代码页 866
  • ebcdic-037:IBM 代码页 037
  • ebcdic-1040:IBM 代码页 1140
  • ebcdic-1047:IBM 代码页 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 会删除列表中与正则表达式匹配的任何行。默认情况下,不会删除任何行。空行会被忽略。

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

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

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

请参阅正则表达式支持,了解支持的正则表达式模式列表。

include_lines
编辑

要使 Filebeat 包含的行所匹配的正则表达式列表。Filebeat 仅导出与列表中正则表达式匹配的行。默认情况下,会导出所有行。空行会被忽略。

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

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

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

如果同时定义了 include_linesexclude_lines,Filebeat 会先执行 include_lines,然后再执行 exclude_lines。这两个选项的定义顺序无关紧要。即使 exclude_lines 在配置文件中出现在 include_lines 之前,include_lines 选项也始终会在 exclude_lines 选项之前执行。

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

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

请参阅正则表达式支持,了解支持的正则表达式模式列表。

harvester_buffer_size
编辑

每个 harvester 在获取文件时使用的缓冲区大小(以字节为单位)。默认值为 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 logger 生成时,应启用此设置。
add_error_key
如果启用此设置,则在 JSON 反序列化错误或在配置中定义了 message_key 但无法使用时,Filebeat 会添加 “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,则 harvester 将首先完成读取文件,并在达到 close_inactive 后关闭该文件。然后,在那之后,该文件将被忽略。

close_*
编辑

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

close_inactive
编辑

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

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

close_inactive 设置为较低的值意味着文件句柄会更快地关闭。但是,这会产生一个副作用,即如果 harvester 关闭,则不会近乎实时地发送新的日志行。

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

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

close_renamed
编辑

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

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

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

WINDOWS:如果您的 Windows 日志轮转系统由于无法轮转文件而显示错误,则应启用此选项。

close_removed
编辑

启用此选项后,当文件被删除时,Filebeat 将关闭 harvester。通常,仅应在文件处于非活动状态且持续时间由 close_inactive 指定后才删除文件。但是,如果文件提前删除并且您未启用 close_removed,Filebeat 将保持文件打开状态,以确保 harvester 已完成。如果此设置导致文件由于过早地从磁盘中删除而未完全读取,请禁用此选项。

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

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

close_eof
编辑

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

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

close_timeout
编辑

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

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

如果输出被阻止,此选项尤其有用,这会使 Filebeat 保持文件处理程序打开,即使是那些已从磁盘中删除的文件也是如此。将 close_timeout 设置为 5m 可确保定期关闭文件,以便操作系统可以释放它们。

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

当您为包含多行事件的日志使用 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/* 这样的 glob,则会使用 scan_frequency 指定的频率扫描目录中的文件。指定 1 秒可尽可能频繁地扫描目录,而不会导致 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 设置为 none 以外的值时,是使用升序还是降序。可能的值为 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
如果设备 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
编辑

为此输入生成的事件设置的 ingest 管道 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