尾文件处理器- Apache Nifi
TailFile Processor- Apache Nifi
我正在使用 Tailfile 处理器从计划为每分钟 运行 的集群(3 个节点)中获取日志。日志文件名每小时更改一次
我对应该使用哪种 Tailing 模式感到困惑。如果我使用单个文件,它不会获取 1 小时后生成的新文件。如果我使用多文件,它会在文件名更改第 3 分钟后获取文件,这会增加文件的大小。我的文件的滚动文件名应该是什么,我应该使用哪种模式。
你能告诉我吗?谢谢
我的文件名:
retrieve-11.log(在 11:00 处生成)- 这已被删除,但单文件模式仍会检查此文件
1 小时后检索-12.log(生成于 12:00)
我的处理器配置:
拖尾模式:多个文件
尾部文件:retrieve-${now():format("HH")}.log
滚动文件名模式:${filename}.*.log
基本目录:/ext/logs
初始起始位置:文件开头
州位置:本地
递归查找:false
查找频率:10 分钟
最大年龄:24 小时
听起来您并没有真正进行正常的日志文件滚动。例如,在您写入 logfile.log
的地方,然后在 1 天后,将 logfile.log
移动到 logfile.log.1
,然后将新日志写入新的空 logfile.log
.
相反,听起来您只是根据小时将日志写入不同的文件。我假设这意味着您每 24 小时覆盖一次每个文件?
那么这样的东西可能有用吗?
编辑:
假设您正在执行以下操作:
At 10:00, `retrieve-10.log` is created. Logs are written here.
At 11:00, `retrieve-11.log` is created. Logs are now written here.
At 11:10, `retrieve-10.log` is moved.
TailFile is only run every 10 minutes.
那么根据小时定位文件将不起作用。在 10:00,您的 tailFile 仅 读取 retrieve-10.log
。在 11:00 你的 tailFile 只有 读取 retrieve-11.log
。所以最坏的情况是,您会错过 10:50 和 11:00 之间的 10 分钟日志。
鉴于另一个进程正在清理旧文件,因此无需担心旧文件的积压日志。所以好像没必要专门设置小时
tailing mode: multiple files
files to tail: /path/retrieve-*.log
有了这个,在 10:00,tailFile 尾部 retrieve-9.log
和 retrieve-10.log
。在 10:10 处,retrieve-9.log
被删除,它尾部 retrieve-10.log
。在 11:00,它尾随 retrieve-10.log
和 retrieve-11.log
。在 11:10 处,retrieve-10.log
被删除,它尾随 retrieve-11.log
。等等
我正在使用 Tailfile 处理器从计划为每分钟 运行 的集群(3 个节点)中获取日志。日志文件名每小时更改一次 我对应该使用哪种 Tailing 模式感到困惑。如果我使用单个文件,它不会获取 1 小时后生成的新文件。如果我使用多文件,它会在文件名更改第 3 分钟后获取文件,这会增加文件的大小。我的文件的滚动文件名应该是什么,我应该使用哪种模式。 你能告诉我吗?谢谢
我的文件名: retrieve-11.log(在 11:00 处生成)- 这已被删除,但单文件模式仍会检查此文件 1 小时后检索-12.log(生成于 12:00)
我的处理器配置:
拖尾模式:多个文件
尾部文件:retrieve-${now():format("HH")}.log
滚动文件名模式:${filename}.*.log
基本目录:/ext/logs
初始起始位置:文件开头
州位置:本地
递归查找:false
查找频率:10 分钟
最大年龄:24 小时
听起来您并没有真正进行正常的日志文件滚动。例如,在您写入 logfile.log
的地方,然后在 1 天后,将 logfile.log
移动到 logfile.log.1
,然后将新日志写入新的空 logfile.log
.
相反,听起来您只是根据小时将日志写入不同的文件。我假设这意味着您每 24 小时覆盖一次每个文件?
那么这样的东西可能有用吗?
编辑:
假设您正在执行以下操作:
At 10:00, `retrieve-10.log` is created. Logs are written here.
At 11:00, `retrieve-11.log` is created. Logs are now written here.
At 11:10, `retrieve-10.log` is moved.
TailFile is only run every 10 minutes.
那么根据小时定位文件将不起作用。在 10:00,您的 tailFile 仅 读取 retrieve-10.log
。在 11:00 你的 tailFile 只有 读取 retrieve-11.log
。所以最坏的情况是,您会错过 10:50 和 11:00 之间的 10 分钟日志。
鉴于另一个进程正在清理旧文件,因此无需担心旧文件的积压日志。所以好像没必要专门设置小时
tailing mode: multiple files
files to tail: /path/retrieve-*.log
有了这个,在 10:00,tailFile 尾部 retrieve-9.log
和 retrieve-10.log
。在 10:10 处,retrieve-9.log
被删除,它尾部 retrieve-10.log
。在 11:00,它尾随 retrieve-10.log
和 retrieve-11.log
。在 11:10 处,retrieve-10.log
被删除,它尾随 retrieve-11.log
。等等