filebeat-input-stream配置

本文详细介绍了Filebeat的filestream输入类型,包括配置文件路径、监控选项、解析器设置、日志轮换策略、文件标识方法、收割机关闭条件以及错误处理。重点讨论了如何处理多行事件、文件旋转、网络共享和云存储中的文件,以及如何通过配置选项优化日志处理速度和避免数据重复。
摘要由CSDN通过智能技术生成

介绍

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

Use the input to read lines from active log files.

它是输入的新改进替代品。

It is the new, improved alternative to the input.

它对现有的输入进行了各种改进:file stream log

It comes with various improvements to the existing input:filestreamlog

检查选项发生在带外。因此,如果一个输出被阻塞,Filebeat可以关闭reader并避免打开太多文件。close_ *

所有匹配配置的文件都可以获得详细的监控指标。通过这种方式,您可以跟踪所有文件,即使是那些没有主动读取的文件。path sharvester_limit

的顺序是可配置的。因此,可以解析JSON行,然后将内容聚合到一个多行事件中。parsers

一些位置更新和元数据更改不再依赖于发布管道。如果管道被阻塞,仍然会对注册表应用一些更改。

只有最近的更新才被序列化到注册表中。相比之下,输入必须在输出的每个ACK上序列化完整的注册表。这使得注册表更新速度更快。log

该输入确保只有偏移量的更新被写入注册表的append only日志。写入完整的文件状态。log

即使没有活动输入,过期的文件也可以从注册表中删除。

要配置此输入,请指定一个基于全局路径的列表,这些路径必须爬取以定位和获取日志行。

这块对比log,区别不大。无非也是配置绝对路径。

filebeat.inputs:
- type: filestream
  id: my-filestream-id
  paths:
    - /var/log/messages
    - /var/log/*.log

警告:每个filestream输入必须有一个唯一的ID。

忽略或修改filestream ID可能导致数据重复。如果没有唯一的ID, filestream就无法正确地跟踪文件的状态。

您可以对从这些文件中获取的行应用其他配置设置(参考)。您指定的选项将应用于此输入收集的所有文件。fields include_lines exclude_lines

要对不同的文件应用不同的配置设置,你需要定义多个输入部分:

filebeat.inputs:
- type: filestream  ①
  id: my-filestream-id
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
- type: filestream ②
  id: apache-filestream-id
  paths:
    - "/var/log/apache2/*"
  fields:
    apache: true

①从两个文件中获取行:一个是.system logwifi.log


②从目录中的每个文件中获取行,并使用配置选项添加一个名为output.apache2 fields apache的字段

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

警告:Filebeat不支持从网络共享和云提供商读取数据。

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

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

警告:在两次运行之间更改可能会导致输出出现重复的事件。 file_identity

选择Filebeat根据文件路径识别文件。如果inode和设备id可能改变,这是避免重新读取文件的一种快速方法。但是,如果文件被旋转(重命名),它们将被重新读取和提交。path

如果inode不变,即使设备id改变,也可以使用该选项。

如果你的文件是轮转的,你应该选择这个方法。您必须配置一个由Filebeat可读的标记文件,并在选项中设置路径。inode_marker path path inode_marker

这个文件的内容对设备来说必须是唯一的。您可以将存储输入的设备的UUID或挂载点放在其中。下面的例子oneliner为选定的挂载点生成一个隐藏的标记文件。/logs

请注意,您不应该在Windows上使用此选项,因为文件标识符可能更不稳定。

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

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

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

读取轮转日志

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

此外,为了避免重复的轮转日志消息,不要使用的方法。或用选项排除旋转的文件。path file_identity exclude_files

Prospector options  探勘者参数

勘探者正在运行一个文件系统监视程序,它查找选项中指定的文件。目前只支持简单的文件系统扫描。paths

Id

filestream输入的唯一标识符。每个filestream输入必须有一个唯一的ID。

警告:更改输入ID可能会导致数据重复,因为文件的状态会丢失,并且会重新开始读取。

paths  (和log相差不大)

将要爬取和获取的基于全局路径的列表。这里也支持Go Glob支持的所有模式。例如,要从预定义级别的子目录中获取所有文件,可以使用以下模式:

从的子文件夹中获取所有文件。它不会从文件夹本身获取日志文件。使用可选的recursive_glob设置,可以递归地获取一个目录的所有子目录中的所有文件。 /var/log/*/*.log .log /var/log

Filebeat为它在指定路径下找到的每个文件启动一个收割机。你可以为每行指定一条路径。每一行都以破折号(-)开头。

Scanner options   扫描配置

扫描器监视配置的路径。它定期扫描文件系统,并将文件系统事件返回给勘探者。

prospector.scanner.recursive_glob

允许扩展为递归通配模式。启用此功能后,每个路径中最右边的位置将扩展为固定数量的glob模式。例如:扩展到、、、等等。如果启用,它将单个扩展为8级深度模式。** ** /foo/** /foo /foo/* /foo/*/* ** *

下面的例子配置Filebeat忽略所有扩展名为gz的文件

filebeat.inputs:
- type: filestream
  ...
  prospector.scanner.exclude_files: ['\.gz$']

prospector.scanner.exclude_files

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

默认情况下不排除任何文件。

下面的示例将Filebeat配置为排除不在:/var/log

filebeat.inputs:
- type: filestream
  ...
  prospector.scanner.include_files: ['^/var/log/.*']

注意:对于绝对路径,模式应该以^开头。

See Regular expression support for a list of supported regexp patterns.

prospector.scanner.symlinks

除了普通文件之外,symlinks选项允许Filebeat获取符号链接。当收集符号链接时,即使Filebeat报告了符号链接的路径,它也会打开并读取原始文件。

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

如果指向日志文件的符号链接文件名中包含额外的元数据,并且你想在Logstash中处理这些元数据,那么symlinks选项会很有用。例如,Kubernetes日志文件就是这样。

prospector.scanner.resend_on_touch

如果启用此选项,如果文件的大小没有改变,但其修改时间比以前晚,则重新发送文件。默认禁用,以避免意外重发文件。

prospector.scanner.check_interval

Filebeat检查指定用于收集的路径中的新文件的频率。例如,如果您指定了一个类似/var/log/*的通体,那么将使用check_interval指定的频率扫描目录中的文件。指定1可以尽可能频繁地扫描目录,而不会导致Filebeat过于频繁地扫描。我们不建议设置这个值<1s。

默认值为10秒。

如果用户要求日志行以接近实时的方式发送,请不要使用很低的check_interval,而是调整close.on_state_change.inactive ,因此文件处理程序保持打开并不断轮询文件。

ignore_older

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

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

必须将ignore_older设置为大于close.on_state_change.inactive。

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

  • 那些从未被收集的文件
  • 收集的文件更新时间没有超过ignore_older

对于从未见过的文件,offset状态设置为文件末尾。如果状态已经存在,则偏移量重置为文件的大小。如果稍后再次更新文件,读取将从设置的偏移位置继续。

ignore_older设置依赖于文件的修改时间,以确定是否忽略某个文件。如果在写入文件时没有更新文件的修改时间(这在Windows上可能发生),ignore_older设置可能会导致Filebeat忽略文件,即使内容是在稍后添加的。

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

在文件被Filebeat忽略之前,文件必须关闭。为确保在忽略文件时不再收集文件,用户必须将ignore_older设置为比close.on_state_change.inactive更长的持续时间。

如果当前正在收集的文件属于ignore_older,收割者将首先完成文件的读取,并在close.on_state_change之后关闭它。进入非活动状态。然后,在此之后,该文件将被忽略。

ignore_inactive

如果启用此选项,则Filebeat将忽略自选定时间以来未更新的每个文件。可能的选项有since_first_start和since_last_start。

第一个选项忽略自Filebeat第一次启动以来没有更新的每个文件。当filebeat可能由于配置更改或失败而重新启动时,它很有用。

第二个选项告诉filebeat从它开始读取已经更新的文件。

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

  • 那些从未被收集的文件
  • 从ignore_inactive开始收集但没有更新的文件。

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

该设置依赖于文件的修改时间,以确定是否忽略文件。如果在写入文件时没有更新文件的修改时间(这在Windows上可能发生),则该设置可能导致Filebeat忽略文件,即使内容是在稍后添加的。

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

close.*

close*配置选项用于在特定条件或时间后关闭收割机。关闭收割机意味着关闭文件处理程序。如果一个文件是在收割机关闭后更新的,那么这个文件会在.scanner之后再次被获取。已经过Check_interval。然而,如果文件在收割机关闭时被移动或删除,则Filebeat将无法再次拾取文件,任何收割机未读取的数据都将丢失。

close.on_state_change。*设置是异步应用于读取文件的,这意味着如果Filebeat由于输出阻塞、队列满或其他问题而处于阻塞状态,则文件无论如何都会被关闭。

cose.on_state_change.inactive

当启用此选项时,如果在指定的时间内未收集文件,则Filebeat将关闭文件句柄。定义周期的计数器从收割机读取最后一行日志时开始。不是基于文件的修改时间。如果关闭的文件再次发生变化,则启动一个新的收割机,并在勘探者.scanner之后收集最新的变化。已经过Check_interval。

我们建议你设置close.on_state_change.Inactive设置为大于日志文件中最不频繁更新的值。例如,如果你的日志文件每隔几秒钟更新一次,你可以安全地设置close.on_state_change。静止到1m。如果有更新速度非常不同的日志文件,您可以使用具有不同值的多个配置。

设置close.on_state_change。较低的值是不活动的,意味着文件句柄关闭得更快。然而,这有一个副作用,如果收割机关闭,新的日志线将无法接近实时发送。

关闭文件的时间不依赖于文件的修改时间。相反,Filebeat使用一个内部时间戳来反映上次收集文件的时间。例如,如果close.on_state_change.Inactive设置为5分钟,在收割机读取文件的最后一行后开始倒计时5分钟。

你可以使用2h(2小时)和5m(5分钟)这样的时间字符串。默认值为5m。

close.on_state_change.renamed

警告:只有在你知道数据丢失是一个潜在的副作用时,才使用这个选项。

当启用此选项时,Filebeat将在重命名文件时关闭文件处理程序。例如,在轮询文件时就会发生这种情况。默认情况下,收割机保持打开状态并继续读取文件,因为文件处理程序不依赖于文件名。如果close.on_state_change.renamed 选项被启用,文件被重命名或移动时,它将不再与指定的文件模式匹配,该文件将不会被再次拾取。Filebeat不会完成文件的读取。

在配置基于路径的file_identity时,不要使用此选项。启用该选项没有意义,因为Filebeat无法检测使用路径名作为唯一标识符的重命名。

WINDOWS:如果你的WINDOWS日志旋转系统显示错误,因为它不能旋转文件,你应该启用这个选项。

close.on_state_change.removed

当启用此选项时,Filebeat会在文件被移除时关闭收割机。通常,一个文件只有在close.on_state_change.inactive指定的时间内处于非活动状态后才应该被删除。但是,如果一个文件被提前删除,并且您没有启用close.on_state_change。删除,Filebeat保持文件打开,以确保收割机已经完成。如果此设置导致文件由于过早从磁盘中删除而不能完全读取,请禁用此选项。

该选项默认启用。如果禁用此选项,则必须禁用clean.on_state_change.removed。

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

close.reader.on_eof

警告:只有在了解数据丢失是潜在副作用的情况下才使用此选项。

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

评论:用户不大,特殊场景使用。目前咱们的应用日志都是追加的。

close.reader.after_interval

允许扩展为递归通配模式。启用此功能后,每个路径中最右边的位置将扩展为固定数量的glob模式。例如:扩展到、、、等等。如果启用,它将单个扩展为8级深度模式。** ** /foo/** /foo /foo/* /foo/*/* ** *

此功能默认启用。设置为false禁用。

prospector.scanner.recursive_glob

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

当这个选项被启用时,Filebeat会给每个收割机一个预定义的生命周期。无论读取器在文件中的哪个位置,读取都将在close.reader之后停止。After_interval周期已过。当您只想在旧日志文件上花费预定义的时间时,此选项对于旧日志文件非常有用。而close.reader。after_interval将在预定义的超时后关闭文件,如果文件仍在更新,Filebeat将根据定义的prospector.scanner.check_interval再次启动一个新的收割机。亲密的读者。此收割机的After_interval将再次开始计时超时。

这个选项在输出被阻塞的情况下特别有用,这使得Filebeat即使对于从磁盘删除的文件也保持打开的文件处理程序。设置close.reader。After_interval到5m确保定期关闭文件,以便操作系统可以释放它们。

如果你设置close。reader。After_interval等于ignore_older,如果在收割机关闭时被修改,文件将不会被拾取。这种设置组合通常会导致数据丢失,并且无法发送完整的文件。

当你使用close.reader时。After_interval对于包含多行事件的日志,收割机可能会在多行事件中停止,这意味着只会发送部分事件。如果收割机再次启动并且文件仍然存在,则只发送事件的第二部分。

该选项默认设置为0,这意味着它被禁用。

clean_*

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

clean_inactive

只有在了解数据丢失是潜在副作用的情况下才使用此选项。

启用此选项时,Filebeat将在指定的不活动时间结束后删除文件的状态。只有当Filebeat已经忽略该文件(该文件比ignore_older更老)时,该状态才能被删除。clean_inactive设置必须大于ignore_older +
prospector.scanner.Check_interval以确保在收集文件时没有状态被删除。否则,该设置可能导致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,则必须禁用此选项。

backoff.*

backoff选项指定Filebeat爬取打开文件进行更新的速度。在大多数情况下,您可以使用默认值。

backoff.init

该选项定义Filebeat在到达EOF后再次检查文件之前第一次等待的时间。回退间隔呈指数增长。缺省值是2s。因此,在2秒后检查文件,然后是4秒,然后是8秒,直到达到back .max中定义的限制。每次在文件中出现新行,回退。Init值重置为初始值。

backoff.max

Filebeat在到达EOF后再次检查文件之前等待的最大时间。在多次退出检查文件之后,等待时间将永远不会超过back - off.max。因为读取新行最多需要10秒,所以指定10秒用于回退。max意味着,在最坏的情况下,如果Filebeat多次后退,可能会向日志文件添加新行。缺省值是10秒。

要求:设置回退。Max大于等于backoff。Init,小于等于prospector.scanner。check_interval(倒扣。Init &lt;= backoff。Max &lt;= prospector.scanner.check_interval)。如果补偿。max需要更高,建议关闭文件处理程序,让Filebeat再次拾取文件。

---------

file_identity

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

在运行之间更改file_identity方法可能会导致输出中出现重复的事件。

native

Filebeat的默认行为是使用索引节点和设备id来区分文件。

file_identity.native: ~

path

要根据文件路径识别文件,请使用此策略。

警告:只有当日志文件被轮询到输入范围之外的文件夹或根本不旋转时,才使用此策略。否则就会出现重复的事件。——info.log 文件100M进行清零归档,此场景适合使用path.

警告:此策略不支持重命名文件。如果重命名了输入文件,如果新路径与输入设置匹配,Filebeat将再次读取它。——重复读取

file_identity.path: ~

inode_marker

如果设备id经常变化,则必须使用此方法来区分文件。Windows上不支持此选项。
设置标记文件的位置,方法如下:

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

Log rotation 日志轮询

由于日志文件不断被写入,必须对它们进行旋转和清除,以防止记录器应用程序将磁盘填满。旋转是由外部应用程序完成的,因此,Filebeat需要如何与它合作的信息。

当读取旋转文件时,确保路径配置包括活动文件和所有旋转文件。

默认情况下,Filebeat能够在以下策略中正确跟踪文件:* create:在旋转时创建具有唯一名称的新活动文件* rename:旋转后的文件将被重命名

但是,对于复制截断策略,您应该向Filebeat提供额外的配置。

rotation.external.strategy.copytruncate

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

如果日志旋转应用程序复制活动文件的内容,然后截断原始文件,请使用这些选项帮助Filebeat正确读取文件。

设置选项suffix_regex,以便Filebeat能够区分活动文件和旋转文件。输入中支持两种后缀类型:数字和日期。

数字后缀

Numeric suffix

如果您旋转的文件有一个递增的索引附加到文件名的末尾,例如,活动文件apache.log和旋转文件命名为apache.log。1, apache.log。2、等,使用以下配置。

---
rotation.external.strategy.copytruncate:
  suffix_regex: \.\d$
---

日期后缀 

Date suffix

如果将旋转日期附加到文件名的末尾,例如活动文件apache.log,并且旋转的文件名为apache.log-20210526, apache.log-20210527等,请使用以下配置:

---
rotation.external.strategy.copytruncate:
  suffix_regex: \-\d{6}$
  dateformat: -20060102
---

encoding

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

exclude_lines

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

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

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

include_lines

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

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

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

 注意:如果同时定义了include_lines和exclude_lines, Filebeat将首先执行include_lines,然后再执行exclude_lines。这两个选项的定义顺序并不重要。

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

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

buffer_size

每个收割机在获取文件时使用的缓冲区的字节大小。默认值是16384字节= 16 kb.

message_max_bytes

单个日志消息所能具有的最大字节数。message_max_bytes之后的所有字节将被丢弃,不发送。默认值是10MB(10485760)。

parsers 解析器

该选项需要日志行必须经过的解析器列表。

可用参数:

  • multiline
  • ndjson
  • container
  • syslog

 在本例中,Filebeat读取由3行组成的多行消息,这些消息封装在单行JSON对象中。多行消息存储在键msg下。

filebeat.inputs:
- type: filestream
  ...
  parsers:
    - ndjson:
        target: ""
        message_key: msg
    - multiline:
        type: count
        count_lines: 3

下面将详细介绍可用的解析器设置。

parsers 解析器- multiline

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

parsers 解析器-ndjson

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

解码发生在行滤波之前。如果设置message_key选项,则可以将JSON解码与过滤结合起来。这在应用程序日志包装在JSON对象中的情况下很有帮助,比如使用Docker时。

示例:

- ndjson:
    target: ""
    add_error_key: true
    message_key: log

target

新JSON对象的名称,该对象应包含已解析的键值对。如果您将其保留为空,则新密钥将位于root目录下。
overwrite_keys
来自解码后的JSON对象的值会覆盖Filebeat通常添加的字段(类型、源、偏移等)以防冲突。如果您想保留以前添加的值,请禁用它。
expand_keys
如果启用了此设置,Filebeat将递归地去掉解码JSON中的点键,并将它们展开为层次对象结构。例如:
{"a.b.c": 123}将会扩展到{“a”:{" b ":{“c”:123}}}。当输入由ECS记录器产生时,应启用此设置。
add_error_key
如果启用了此设置,Filebeat将添加一个“错误”。消息“和”错误。type: json" key用于json解组错误,或者在配置中定义了message_key但不能使用。
message_key
一个可选的配置设置,指定要对其应用行过滤和多行设置的JSON键。如果指定了该键,则该键必须位于JSON对象的顶层,并且与该键关联的值必须是字符串,否则不会发生过滤或多行聚合。
document_id
选项配置设置,指定用于设置文档id的JSON键。如果配置了,该字段将从原始JSON文档中删除,并存储在@metadata._id中
ignore_decoding_error
可选配置设置,指定是否记录JSON解码错误。如果设置为true,错误将不会被记录。默认为false。
container
使用容器解析器从容器日志文件中提取信息。它将行解析为公共消息行,还提取时间戳。

stream
只从指定的流中读取:all, stdout或stderr。默认为all。
format
在解析日志时使用给定的格式:auto、docker或cri。默认为auto,它将自动检测格式。若要禁用自动检测,请设置任何其他选项。

下面的代码片段将Filebeat配置为从默认Kubernetes日志路径下的所有容器读取标准输出流:

  paths:
    - "/var/log/containers/*.log"
  parsers:
    - container:
        stream: stdout

syslog
syslog解析器解析RFC 3146和/或RFC 5424格式的syslog消息。

支持的配置选项有:

format
(可选)使用的syslog格式:rfc3164或rfc5424。若要自动检测日志条目的格式,请将此选项设置为auto。默认为auto。
timezone
(可选)IANA时区名称。美国/纽约)或固定的时间偏移量(例如+0200),用于解析不包含时区的syslog时间戳。可以指定Local以使用机器的本地时区。默认为Local。
log_errors
(可选)如果为true,解析器将记录syslog解析错误。默认为false。
add_error_key
(可选)如果启用了此设置,解析器将添加或追加错误。带有遇到的解析错误的消息键。默认为true。

 示例:

- syslog:
    format: rfc3164
    timezone: America/Chicago
    log_errors: true
    add_error_key: true

 Timestamps 时间戳

RFC 3164格式接受以下形式的时间戳:

Local timestamp (Mmm dd hh:mm:ss):

Jan 23 14:09:01
RFC-3339*:

2003-10-11T22:14:15Z
2003-10-11T22:14:15.123456Z
2003-10-11T22:14:15-06:00
2003-10-11T22:14:15.123456-06:00

注意:伴随着RFC 3164消息的本地时间戳(例如,Jan 23 14:09:01)缺少年份和时区信息。时区将使用时区配置选项进行丰富,年份将使用Filebeat系统的本地时间(考虑时区)进行丰富。因此,将来可能会出现消息。这种情况可能发生的一个例子是,2021年12月31日生成的日志在2022年1月1日被摄入。这些日志将在2022年而不是2021年充实。

RFC 5424格式接受以下形式的时间戳:

RFC-3339:

2003-10-11T22:14:15Z
2003-10-11T22:14:15.123456Z
2003-10-11T22:14:15-06:00
2003-10-11T22:14:15.123456-06:00

带有星号(*)的格式是非标准允许的。 

include_message 

使用include_message解析器来过滤解析器管道中的消息。匹配所提供模式的消息被传递到下一个解析器,其他的则被丢弃。

如果您想控制过滤发生的时间,您应该使用include_message而不是include_lines。Include_lines在解析器之后运行,include_message在解析器管道中运行。

patterns

要匹配的regexp模式列表。

这个例子展示了如何包含以字符串ERR或WARN开头的消息:

paths:
    - "/var/log/containers/*.log"
  parsers:
    - include_message.patterns: ["^ERR", "^WARN"]

通用配置 

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

enable

使用enabled选项启用和禁用输入。缺省情况下,enabled为true。

tags

Filebeat包含在每个已发布事件的tags字段中的标记列表。标记使得在Kibana中选择特定事件或在Logstash中应用条件过滤变得很容易。这些标记将被添加到常规配置中指定的标记列表中。

filebeat.inputs:
- type: filestream
  . . .
  tags: ["json"]

fields

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

filebeat.inputs:
- type: filestream
  . . .
  fields:
    app_id: query_engine_12

fields_under_root

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

processors

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

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

pipeline

要为此输入生成的事件设置的摄取管道ID。

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

keep_null

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

index

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

Example value: "%{[agent.name]}-myindex-%{+yyyy.MM.dd}" might expand to "filebeat-myindex-2019.11.01".

publisher_pipeline.disable_host

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

Filestream input-原稿

#--------------------------- Filestream input ----------------------------
- type: filestream

  # Unique ID among all inputs, an ID is required.
  id: my-filestream-id

  # Change to true to enable this input configuration.
  enabled: false

  # Paths that should be crawled and fetched. Glob based paths.
  # To fetch all ".log" files from a specific level of subdirectories
  # /var/log/*/*.log can be used.
  # For each file found under this path, a harvester is started.
  # Make sure not file is defined twice as this can lead to unexpected behaviour.
  paths:
    - /var/log/*.log
    #- c:\programdata\elasticsearch\logs\*

  # Configure the file encoding for reading files with international characters
  # following the W3C recommendation for HTML5 (http://www.w3.org/TR/encoding).
  # Some sample encodings:
  #   plain, utf-8, utf-16be-bom, utf-16be, utf-16le, big5, gb18030, gbk,
  #    hz-gb-2312, euc-kr, euc-jp, iso-2022-jp, shift-jis, ...
  #encoding: plain


  # Exclude lines. A list of regular expressions to match. It drops the lines that are
  # matching any regular expression from the list. The include_lines is called before
  # exclude_lines. By default, no lines are dropped.
  # Line filtering happens after the parsers pipeline. If you would like to filter lines
  # before parsers, use include_message parser.
  #exclude_lines: ['^DBG']

  # Include lines. A list of regular expressions to match. It exports the lines that are
  # matching any regular expression from the list. The include_lines is called before
  # exclude_lines. By default, all the lines are exported.
  # Line filtering happens after the parsers pipeline. If you would like to filter lines
  # before parsers, use include_message parser.
  #include_lines: ['^ERR', '^WARN']

  ### Prospector options

  # How often the input checks for new files in the paths that are specified
  # for harvesting. Specify 1s to scan the directory as frequently as possible
  # without causing Filebeat to scan too frequently. Default: 10s.
  #prospector.scanner.check_interval: 10s

  # Exclude files. A list of regular expressions to match. Filebeat drops the files that
  # are matching any regular expression from the list. By default, no files are dropped.
  #prospector.scanner.exclude_files: ['.gz$']

  # Include files. A list of regular expressions to match. Filebeat keeps only the files that
  # are matching any regular expression from the list. By default, no files are dropped.
  #prospector.scanner.include_files: ['/var/log/.*']

  # Expand "**" patterns into regular glob patterns.
  #prospector.scanner.recursive_glob: true

  # If symlinks is enabled, symlinks are opened and harvested. The harvester is opening the
  # original for harvesting but will report the symlink name as source.
  #prospector.scanner.symlinks: false

  ### Parsers configuration

  #### JSON configuration

  #parsers:
    #- ndjson:
      # Decode JSON options. Enable this if your logs are structured in JSON.
      # JSON key on which to apply the line filtering and multiline settings. This key
      # must be top level and its value must be a string, otherwise it is ignored. If
      # no text key is defined, the line filtering and multiline features cannot be used.
      #message_key:

      # By default, the decoded JSON is placed under a "json" key in the output document.
      # If you enable this setting, the keys are copied to the top level of the output document.
      #keys_under_root: false

      # If keys_under_root and this setting are enabled, then the values from the decoded
      # JSON object overwrite the fields that Filebeat normally adds (type, source, offset, etc.)
      # in case of conflicts.
      #overwrite_keys: false

      # If this setting is enabled, then keys in the decoded JSON object will be recursively
      # de-dotted, and expanded into a hierarchical object structure.
      # For example, `{"a.b.c": 123}` would be expanded into `{"a":{"b":{"c":123}}}`.
      #expand_keys: false

      # If this setting is enabled, Filebeat adds an "error.message" and "error.key: json" key in case of JSON
      # unmarshaling errors or when a text key is defined in the configuration but cannot
      # be used.
      #add_error_key: false

  #### Filtering messages

  # You can filter messsages in the parsers pipeline. Use this method if you would like to
  # include or exclude lines before they are aggregated into multiline or the JSON contents
  # are parsed.

  #parsers:
    #- include_message.patterns:
      #- ["WARN", "ERR"]

  #### Multiline options

  # Multiline can be used for log messages spanning multiple lines. This is common
  # for Java Stack Traces or C-Line Continuation

  #parsers:
    #- multiline:
      #type: pattern
      # The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
      #pattern: ^\[

      # Defines if the pattern set under the pattern setting should be negated or not. Default is false.
      #negate: false

      # Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
      # that was (not) matched before or after or as long as a pattern is not matched based on negate.
      # Note: After is the equivalent to previous and before is the equivalent to next in Logstash
      #match: after

      # The maximum number of lines that are combined to one event.
      # In case there are more than max_lines the additional lines are discarded.
      # Default is 500
      #max_lines: 500

      # After the defined timeout, a multiline event is sent even if no new pattern was found to start a new event
      # Default is 5s.
      #timeout: 5s

      # Do not add new line character when concatenating lines.
      #skip_newline: false

  # To aggregate constant number of lines into a single event use the count mode of multiline.

  #parsers:
    #- multiline:
      #type: count

      # The number of lines to aggregate into a single event.
      #count_lines: 3

      # The maximum number of lines that are combined to one event.
      # In case there are more than max_lines the additional lines are discarded.
      # Default is 500
      #max_lines: 500

      # After the defined timeout, an multiline event is sent even if no new pattern was found to start a new event
      # Default is 5s.
      #timeout: 5s

      # Do not add new line character when concatenating lines.
      #skip_newline: false

  #### Parsing container events

  # You can parse container events with different formats from all streams.

  #parsers:
    #- container:
       # Source of container events. Available options: all, stdin, stderr.
       #stream: all

       # Format of the container events. Available options: auto, cri, docker, json-file 
       #format: auto

  ### Log rotation

  # When an external tool rotates the input files with copytruncate strategy
  # use this section to help the input find the rotated files.
  #rotation.external.strategy.copytruncate:
  # Regex that matches the rotated files.
  #  suffix_regex: \.\d$
  # If the rotated filename suffix is a datetime, set it here. 
  #  dateformat: -20060102

  ### State options

  # Files for the modification data is older then clean_inactive the state from the registry is removed
  # By default this is disabled.
  #clean_inactive: 0

  # Removes the state for file which cannot be found on disk anymore immediately
  #clean_removed: true

  # Method to determine if two files are the same or not. By default
  # the Beat considers two files the same if their inode and device id are the same.
  #file_identity.native: ~

  # Optional additional fields. These fields can be freely picked
  # to add additional information to the crawled log files for filtering
  #fields:
  #  level: debug
  #  review: 1

  # Set to true to publish fields with null values in events.
  #keep_null: false

  # By default, all events contain `host.name`. This option can be set to true
  # to disable the addition of this field to all events. The default value is
  # false.
  #publisher_pipeline.disable_host: false

  # Ignore files which were modified more then the defined timespan in the past.
  # ignore_older is disabled by default, so no files are ignored by setting it to 0.
  # Time strings like 2h (2 hours), 5m (5 minutes) can be used.
  #ignore_older: 0

  # Ignore files that have not been updated since the selected event.
  # ignore_inactive is disabled by default, so no files are ignored by setting it to "".
  # Available options: since_first_start, since_last_start.
  #ignore_inactive: ""

  # Defines the buffer size every harvester uses when fetching the file
  #harvester_buffer_size: 16384

  # Maximum number of bytes a single log event can have
  # All bytes after max_bytes are discarded and not sent. The default is 10MB.
  # This is especially useful for multiline log messages which can get large.
  #message_max_bytes: 10485760

  # Characters which separate the lines. Valid values: auto, line_feed, vertical_tab, form_feed,
  # carriage_return, carriage_return_line_feed, next_line, line_separator, paragraph_separator,
  # null_terminator
  #line_terminator: auto

  # The ingest pipeline ID associated with this input. If this is set, it
  # overwrites the pipeline option from the Elasticsearch output.
  #pipeline:

  # Backoff values define how aggressively filebeat crawls new files for updates
  # The default values can be used in most cases. Backoff defines how long it is waited
  # to check a file again after EOF is reached. Default is 1s which means the file
  # is checked every second if new lines were added. This leads to a near real time crawling.
  # Every time a new line appears, backoff is reset to the initial value.
  #backoff.init: 1s

  # Max backoff defines what the maximum backoff time is. After having backed off multiple times
  # from checking the files, the waiting time will never exceed max_backoff independent of the
  # backoff factor. Having it set to 10s means in the worst case a new line can be added to a log
  # file after having backed off multiple times, it takes a maximum of 10s to read the new line
  #backoff.max: 10s

  ### Harvester closing options

  # Close inactive closes the file handler after the predefined period.
  # The period starts when the last line of the file was, not the file ModTime.
  # Time strings like 2h (2 hours), 5m (5 minutes) can be used.
  #close.on_state_change.inactive: 5m

  # Close renamed closes a file handler when the file is renamed or rotated.
  # Note: Potential data loss. Make sure to read and understand the docs for this option.
  #close.on_state_change.renamed: false

  # When enabling this option, a file handler is closed immediately in case a file can't be found
  # any more. In case the file shows up again later, harvesting will continue at the last known position
  # after scan_frequency.
  #close.on_state_change.removed: true

  # Closes the file handler as soon as the harvesters reaches the end of the file.
  # By default this option is disabled.
  # Note: Potential data loss. Make sure to read and understand the docs for this option.
  #close.reader.on_eof: false

  # Close timeout closes the harvester after the predefined time.
  # This is independent if the harvester did finish reading the file or not.
  # By default this option is disabled.
  # Note: Potential data loss. Make sure to read and understand the docs for this option.
  #close.reader.after_interval: 0

Filestream input-翻译

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值