轮转日志文件采集

轮转日志文件采集问题原理及解法 1 日志文件的轮转 以 logback 下的时间切割为例 输出每行日志时会比较当时时间和内存中记录的待切割时间 如果当前时间到了待切割时间 则重命名当前日志文件 创建新文件写日志到新创建的日志文件 重新记录下次带切割时间

大家好,欢迎来到IT知识分享网。

开发日志采集agent应用的同学都面临一个问题,轮转日志(按时间切割或者文件大小切割)如何采集?

要搞清楚这个文件,我们需要了解三个问题:

1、日志文件轮转的原理过程;

2、linux文件存储原理、文件身份的唯一标识、文件变换的感知;

3、agent采集;

轮转日志文件采集

问题原理及解法:

1、日志文件的轮转,以logback下的时间切割为例,输出每行日志时会比较当时时间和内存中记录的待切割时间,如果当前时间到了待切割时间,则重命名当前日志文件,创建新文件写日志到新创建的日志文件,重新记录下次带切割时间;

2、linux操作系统里面,文件存储设计superblock、inode、denty、block等方面,我们重点看inode和block,inode可以理解为文件的索引或者元数据,block为文件实际存储数据,两者有关联关系,文件名称变更inode的编号是不会变的(inode编号相当于元数据主键、文件名只是元数据的一个普通字段),但是inode是可以被复用的当文件被删除后(删除文件实际上只是删除了inode和block的关联关系,block的数据并未删除,后面发生写会覆盖),因而可以用“dev编号+inode编号+md5(文件前1024byte)”唯一标识一个文件;

3、文件轮转后的变化通知,可以通过linux的inotify机制或者commons-io里面的轮训机制来捕获;commons-io的FileAlterationMonitor轮训机制时间会有一些坑会出现,后面的文章我们会讲解。

看了filebeat和阿里的ilogtail,方案大致类似。

参考:Inode详解 – Wiliz – 博客园

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/167622.html

(0)
上一篇 2025-01-15 07:15
下一篇 2025-01-15 07:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信