Cassandra:如何存档日志文件

时间:2015-02-24 12:52:08

标签: logging cassandra archive

我在Ubuntu机器上安装了Cassandra 2.0.11。

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

/var/log/cassandra/

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

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

2 个答案:

答案 0 :(得分:1)

对于Cassandra 2.0及之前的

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

示例:

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

对于Cassandra 2.1及更高版本

根据documentation,您应该使用fileNamePatternrollingPolicy结束zip中的gz。就像在example这里一样。

Cassandra文档,在第二个链接上也说:

  

默认策略在大小超过后滚动system.log文件   20MB。档案以zip格式压缩。 Logback命名日志   文件system.log.1.zip,system.log.2.zip等。更多   信息,请参阅logback文档。

答案 1 :(得分:1)

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

Cassandra 2.0和之前使用log4j作为日志记录API。 它满足了以下需求:

  1. 简单记录
  2. 旋转日志文件
  3. 它没有回答压缩\存档旧文件以节省存储空间的需要。

    为了支持旧日志文件的zip,您需要使用 log4j-extensions (参见compress log4j log files) 如果你真的想在Cassandra中激活它,你需要执行以下操作:

    1. 从源代码
    2. 安装它
    3. 下载log4j-extras并将其添加到Cassandra lib目录
    4. 使用maven编译项目
    5. 显然,你做这件事的机会很小。太麻烦了。

      有一个简单的解决方案:(仅适用于Linux OS)

      1. 配置Cassandra以使用简单记录
      2. 配置 logrotate 守护程序以处理日志文件
      3. 将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
        

        现在Cassandra只记录一个文件而不是旋转它。下一步...

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

        如果你真的想知道什么是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。

        如果您想更改存储空间大小,请根据需要配置 rotate size