1. 程式人生 > >Kafka操作日誌的清理方法

Kafka操作日誌的清理方法

Kafka操作日誌的清理方法

Kafka0.8版本長時間執行過程中,在kafka_2.8.0-0.8.0/logs目錄下產生了大量的kafka-request.log.*server.log.*檔案,其中*代表日期和時間,比如kafka-request.log.2014-12-08-03server.log.2014-12-06-03,這些檔案對磁碟空間的消耗非常大,需要定期備份或者清理。目前沒有發現kafka自身提供了這些操作日誌備份或者清理的方法,需要使用者自己實現。

1.1 更改日誌輸出級別

kafka0.8版本中,config/log4j.properties中日誌的級別設定的是TRACE,在長時間執行過程中產生的日誌大小嚇人,所以如果沒有特殊需求,強烈建議將其更改成

INFO級別。具體修改方法如下所示,將config/log4j.properties檔案中最後的幾行中的TRACE改成INFO,修改前如下所示:

log4j.logger.kafka.network.RequestChannel$=TRACE, requestAppender

log4j.additivity.kafka.network.RequestChannel$=false

#log4j.logger.kafka.network.Processor=TRACE, requestAppender

#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender

#log4j.additivity.kafka.server.KafkaApis=false

log4j.logger.kafka.request.logger=TRACE, requestAppender

log4j.additivity.kafka.request.logger=false

log4j.logger.kafka.controller=TRACE, controllerAppender

log4j.additivity.kafka.controller=false

log4j.logger.state.change.logger=TRACE, stateChangeAppender

log4j.additivity.state.change.logger=false

修改後如下所示:

log4j.logger.kafka.network.RequestChannel$=INFO, requestAppender

log4j.additivity.kafka.network.RequestChannel$=false

#log4j.logger.kafka.network.Processor=INFO, requestAppender

#log4j.logger.kafka.server.KafkaApis=INFO, requestAppender

#log4j.additivity.kafka.server.KafkaApis=false

log4j.logger.kafka.request.logger=INFO, requestAppender

log4j.additivity.kafka.request.logger=false

log4j.logger.kafka.controller=INFO, controllerAppender

log4j.additivity.kafka.controller=false

log4j.logger.state.change.logger=INFO, stateChangeAppender

log4j.additivity.state.change.logger=false

1.2 定期備份刪除日誌

備份操作日誌的方式是定期拷貝操作日誌到指定大容量儲存裝置,然後將其刪除。我在專案中採取的方式是直接清理過期操作日誌,方法非常簡單,利用linux作業系統提供的crontab功能,定期清理操作日誌,方法如下:

/etc/crontab檔案中新增刪除操作日誌的語句,然後執行crontab -f /etc/crontab命令即可,我的/etc/crontab檔案如下所示,語句的含義是每4天在23:59執行清理操作:

[root@h10p11 logs]# vim /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

59 23 */4 * * rm -fr /root/kafka/kafka_2.8.0-0.8.0/logs/*-*-*

直接修改/etc/crontab檔案重啟機器不用重複設定。