2015-02-24 108 views
2

我已经在Ubuntu机器上安装了Cassandra 2.0.11。Cassandra:如何归档日志文件

日志记录配置是默认设置。日志文件的位置在

/var/log/cassandra/ 

此外,日志文件已处于旋转模式。

如何配置要压缩的日志文件? 因此它不会消耗大量的磁盘存储空间。

回答

1

对于卡桑德拉2.0和以前

如果按照从这里docs,你可能看到过compress命令。默认情况下,logrotate将使用gzip压缩旋转的文件。man page表示您还可以设置compresscmdcompressext以使用您自己的压缩应用程序(即zip)。你可以把你自己的压缩脚本放在一起。

例子:

/var/log/cassandra/output.log { 
     size 1k 
     copytruncate 
     create 
     compress 
     compresscmd /bin/bzip2 
     compressext .bz2 
     rotate 4 
} 

对于卡桑德拉2.1及更高版本

按照documentation,你应该结束你的fileNamePatternrollingPolicyzipgz。就像这里的example一样。

卡桑德拉文件,第二个链接上还说:大小超过20MB 后

默认策略滚动SYSTEM.LOG文件。档案以zip格式压缩。 Logback命名为log 文件system.log.1.zip,system.log.2.zip等。有关更多 信息,请参阅logback文档。

+0

的logback在卡桑德拉2.1推出,它是在Log4J的卡桑德拉2.0 – 2015-02-24 13:55:25

+0

好了,没注意到......最近,我开始一个新项目,并开始与2.1,所以我机械回答是这样的... – 2015-02-24 14:02:37

1

答案仅适用于Cassandra 2.0及之前版本。

Cassandra 2.0和更早版本正在使用log4j作为日志API。 它回答的必要性:

  1. 简单的日志
  2. 旋转日志文件

它不解答,需要压缩\存档旧的文件以节省存储位置。

为了支持旧的日志文件的ZIP,你需要使用的log4j的扩展(见compress log4j log files) 如果你真的想激活它在卡桑德拉,你需要做到以下几点:

  1. 从源代码
  2. 下载log4j的,额外安装它,并把它添加到卡桑德拉lib目录
  3. 使用Maven编译项目

显然,你会这么做的机会很渺茫。太多麻烦了。

有一个简单的解决方案:(仅适用于Linux操作系统)

  1. 配置卡桑德拉使用简单的日志记录
  2. 配置logrotate的守护程序处理日志文件

配置Cassandra使用简单的日志记录

sudo vi /etc/cassandra/log4j-server.properties 

更改下面这个文件中:

# Add the new Appender to the rootLogger 
log4j.rootLogger=INFO,stdout,F,R 

# Mark the following configuration (all the RollingFileAppender) 
# rolling log file 
#log4j.appender.R=org.apache.log4j.RollingFileAppender 
#log4j.appender.R.maxFileSize=1MB 
#log4j.appender.R.maxBackupIndex=3 
#log4j.appender.R.layout=org.apache.log4j.PatternLayout 
#log4j.appender.R.layout.ConversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n 

#log4j.appender.R.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy 
#log4j.appender.R.RollingPolicy.FileNamePattern=cassandra.%d{yyyy-MM-dd-HH}.gz 
#log4j.appender.R.RollingPolicy.ActiveFileName =cassandra.log 

# Edit the next line to point to your logs directory 
#log4j.appender.R.File=/var/log/cassandra/cassandra.log 
######################################################## 

# Add the new File Appender 
# file appender 
# Define the file appender 
log4j.appender.F=org.apache.log4j.FileAppender 
# Set the name of the file 
log4j.appender.F.File=/var/log/cassandra/cassandra.log 
# Define the layout for file appender 
log4j.appender.F.layout=org.apache.log4j.PatternLayout 
log4j.appender.F.layout.conversionPattern=%5p [%t] %d{ISO8601} %F (line %L) %m%n 

现在卡桑德拉仅记录到一个文件,而不是将其旋转。下一步...

配置logrotate的守护程序处理日志文件

如果你真的想知道什么是日志轮播:Understanding logrotate utility

执行以下操作:

sudo vi /etc/logrotate.d/cassandra 

添加数据如下:

/var/log/cassandra/cassandra.log { 
    daily 
    rotate 50 
    size 100M 
    copytruncate 
    compress 
    delaycompress 
    missingok 
    notifempty 
    create 644 cassandra cassandra 
} 

就是这样。从现在开始,logrotate会照顾你的日志文件,并保持整个存储空间不超过5GB。

如果你想改变存储大小,配置旋转大小你认为合适的。