Skip to content

Cleaner

Sun Jianbo edited this page Dec 6, 2017 · 7 revisions

cleaner是logkit提供的日志删除功能,可以方便用户删除已经读取到Pandora的日志文件。目前Cleaner仅支持针对文本文件进行删除,故reader模式为dir时,才能使用cleaner功能。其他如MongoDB ReaderKafka ReaderMySQL ReaderMSSQL ReaderElasticSearch 以及 File Reader中的tailxfile模式等,暂不支持删除数据的配置。

典型配置如下

     "cleaner":{
        "delete_enable":"true",
        "delete_interval":"10",
        "reserve_file_number":"10",
        "reserve_file_size":"10240"
    },
  1. delete_enable 该选项表示是否启用cleaner,cleaner是删除控制功能,默认不开启,当delete_enable为true时开启。开启后,当reader已经读取完毕的数据,cleaner会负责通知mgr删除。
  2. delete_interval cleaner执行周期,会在每个周期检查是否符合删除的条件,单位为秒(s),到了删除周期,且检测发现符合删除条件的数据会被删除,reader读取完毕后会生成file.done文件,当整个file.done文件里的日志都被发送至mgr删除时,文件名会变为file.deleted。
  3. reserve_file_number 最大保留的已读取文件数,当超过这个数量时就会把多出的文件删除,默认为保留10个.
  4. reserve_file_size 最大保留已读文件总大小,当已读文件的总大小超过这个值时,会把最老的那部分删掉,默认保留10GB,单位为MB.
  5. reserve_file_numberreserve_file_size 这2个条件只要满足其一,且文件在file.done中(已经读取完毕),就会触发删除。

多个runner读取同一份日志时的Cleaner

  1. cleaner的主要功能是删除的控制,当日志只被一个runner读取时,建议配置cleaner来控制日志的删除。
  2. 当同一个日志目录有多个runner在读取时,如果不启用cleaner,则表示该runner放弃控制日志的删除。
  3. 一份日志目录被多个cleaner控制时,只有当所有的cleaner均通知mgr可以删除时,才执行删除日志。

补充

  1. Cleaner仅删除已经读取过的日志,不经过logkit读取的日志无法删除
  2. 若仅想通过logkit删除日志,可以配置raw parserdiscard sender,前者不进行任何解析,后者不发送到任何目的地址,同时日志也能删除。
Clone this wiki locally