自动采集文章网站(开发日志采集agent应用之轮转日志(按时间切割或者文件大小切割))

优采云 发布时间: 2022-01-21 09:17

  自动采集文章网站(开发日志采集agent应用之轮转日志(按时间切割或者文件大小切割))

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

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

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

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

  3、代理采集;

  

  问题原理及解决方法:

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

  2、在Linux操作系统中,文件存储设计superblock、inode、denty、block等,我们重点介绍inode和block,inode可以理解为文件的索引或者元数据,block是实际的文件的存储数据,两者是有关系的,文件名改变inode号不会改变(inode号相当于元数据的主键,文件名只是元数据的一个公共字段),但是删除文件时可以重用inode(delete文件其实只是删除了inode和block的关联,block的数据并没有被删除,后面写的时候会被覆盖),所以可以使用“dev number + inode number + md5(文件的前1024bytes)”来唯一标识一个文件;

  3、文件轮换后的变化通知可以通过linux的inotify机制或者commons-io中的轮换训练机制来获取;commons-io的FileAlterationMonitor的轮换训练机制会有一些坑,下面文章来解释。

  看了filebeat和阿里巴巴的ilogtail,解决方案大致差不多。

  参考:inode详解-Wiliz-博客园

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线