TailFile 2025.5.31.15

捆绑包

org.apache.nifi | nifi-standard-nar

描述

“跟踪”一个文件或文件列表,原样引入已写入文件的数据。该文件应为文本文件。只有在遇到新行(回车符、换行符或组合字符)时,才会引入数据。如果要跟踪的文件会定期“滚动”(日志文件通常如此),则可使用可选的“Rolling Filename Pattern”从已滚动的文件中检索数据,即使滚动是在 NiFi 未运行的情况下发生的(前提是重新启动 NiFi 时数据仍然存在)。通常建议将“Run Schedule”设置为几秒钟,而不是使用默认值 0 秒运行,因为如果调度非常激烈,该处理器将消耗大量资源。目前,该处理器不支持引入“滚动”时已压缩的文件。

标签

file、log、source、tail、text

输入要求

FORBIDDEN

支持敏感的动态属性

false

属性

属性

描述

文件位置

指定状态所在的位置(本地或集群),以便可以适当存储该状态,确保在 NiFi 重启时使用所有数据而不会复制数据

待跟踪文件

在单文件模式下要跟踪的文件路径。如果使用多文件模式,则使用正则表达式在基本目录中查找待跟踪的文件。如果递归性设置为 true,则将使用正则表达式来匹配从基本目录开始的路径(有关示例,请参阅其他详细信息)。

初始起始位置

当处理器首次开始跟踪数据时,此属性指定处理器应从何处开始读取数据。从文件中引入数据后,处理器将从接收数据的最后一个点继续运行。

行起始模式

与日志行开头匹配的正则表达式。如果指定,则将缓冲与表达式匹配的任何行以及随后的任何行,直到另一行与该表达式匹配为止。这样做可以避免拆分文件中的多行消息。这假设数据采用 UTF-8 格式。

最大缓冲区大小

使用“最大缓冲区大小”时,可能会出现跟踪文件中的数据与正则表达式不匹配的情况。这将导致处理器缓冲跟踪文件中的所有数据,很快会耗尽堆空间。为了避免这种情况,处理器在刷新缓冲区之前最多只能缓冲这个数量的数据,即使这意味着从文件中引入部分数据。

滚动后的追踪周期

文件滚动时,处理器将继续跟踪已滚动的文件,直到该文件在这段时间内没有被修改。这允许另一个过程滚动文件,然后清空所有缓冲的数据。请注意:当设置此值时,若被跟踪文件发生滚动,系统将不会跟踪新文件,直至旧文件持续未修改的时间达到配置阈值。此外,在使用此功能时,为了避免数据重复,该时间段的设置必须长于处理器的“Run Schedule”,并且在滚动跟踪文件之后和数据完全消耗之前,处理器不得停止。否则,数据可能会被复制,因为整个文件可能会作为单个 FlowFile 的内容写出。

滚动文件命名模式

如果跟踪的文件像日志文件一样“滚动”,则此文件名模式将用于识别已滚动的文件,这样,如果 NiFi 重新启动且文件已滚动,它将能够从中断的地方继续前进。此模式支持通配符 * 和 ?,它还支持 ${filename} 表示法,用于根据文件名(不带扩展名)指定模式,并且会假设滚动的文件与跟踪文件位于同一个目录中。所有文件都将使用相同的 glob 模式。

pre-allocated-buffer-size

设置为每个跟踪文件预分配的内存量。

reread-on-nul

如果将此选项设置为“true”,则当读取 NUL 字符时,处理器将暂停当前操作并稍后尝试重新读取相同部分。(注意:暂停当前操作可能会延迟该处理器跟踪的其他文件的处理,而不仅仅是带有 NUL 字符的文件。)此标志的目的是允许用户处理读取文件可能返回临时 NUL 值的情况。例如,NFS 可能会不按顺序发送文件内容。在这种情况下,缺失的部分会被 NUL 值临时替换。CAUTION!如果文件包含合法 NUL 值,则设置此标志会导致该处理器无限期卡顿。因此,用户应尽量避免使用此功能,并确保目标文件不位于读取不可靠的文件系统中。

tail-base-directory

用于查找待跟踪文件的基本目录。使用“Multifile”模式时,此属性是必需的。

tail-mode

使用模式:单个文件只能跟踪一个文件,多个文件将查找文件列表。在“Multiple”模式下,需要基本目录。

tailfile-lookup-frequency

仅在“Multiple”模式下使用。它指定了处理器在再次列出待跟踪文件之前将等待的最短持续时间。

tailfile-maximum-age

仅在“Multiple”模式下使用。它指定了将文件视为无新消息写入的最小持续时间阈值(基于文件最后修改时间)。不应将此值设置得太低,避免在以较低的频率追加新消息时出现重复数据。

tailfile-recursive-lookup

使用“Multiple File”模式时,此属性定义文件是否必须以递归方式列在基本目录中。

状态管理

范围

描述

CLUSTER

存储有关它在跟踪文件中停留位置的状态,这样重新启动时它就不必复制数据。状态是本地存储还是集群存储取决于 <File Location> 属性。

LOCAL

存储有关它在跟踪文件中停留位置的状态,这样重新启动时它就不必复制数据。状态是本地存储还是集群存储取决于 <File Location> 属性。

限制

所需权限

解释

读取文件系统

使操作员能够读取 NiFi 有权访问的任何文件。

关系

名称

描述

success

FlowFiles 全部路由到此关系。

写入属性

名称

描述

tailfile.original.path

FlowFile 的原始文件路径。

语言: 中文