Inode 重用导致 Filebeat 跳过行

编辑

Inode 重用导致 Filebeat 跳过行

编辑

在 Linux 文件系统中,Filebeat 使用 inode 和设备来识别文件。当文件从磁盘移除时,inode 可能会被分配给一个新文件。在涉及文件轮转的用例中,如果一个旧文件被删除,然后立即创建一个新文件,那么新文件可能会与被删除的文件具有完全相同的 inode。在这种情况下,Filebeat 会认为新文件与旧文件相同,并尝试从旧位置继续读取,这是不正确的。

默认情况下,状态永远不会从注册表文件中删除。要解决 inode 重用问题,我们建议您使用 clean_* 选项,特别是 clean_inactive,以删除非活动文件的状态。例如,如果您的文件每 24 小时轮转一次,并且轮转后的文件不再更新,您可以将 ignore_older 设置为 48 小时,将 clean_inactive 设置为 72 小时。

您可以对从磁盘删除的文件使用 clean_removed。请注意,当在扫描期间找不到文件时,clean_removed 会从注册表中清除文件状态。如果文件稍后再次出现,它将从头开始重新发送。