【问题标题】:Cassandra: How to archive the log fileCassandra:如何归档日志文件
【发布时间】:2015-09-29 16:30:16
【问题描述】:

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

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

/var/log/cassandra/

此外,日志文件已经处于轮换模式。

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

【问题讨论】:

    标签: logging cassandra archive


    【解决方案1】:

    适用于 Cassandra 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
    }
    

    适用于 Cassandra 2.1 及更高版本

    根据documentation,您应该在rollingPolicy 中以zipgz 结束您的fileNamePattern。就像这里的example 一样。

    第二个链接上的 Cassandra 文档还说:

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

    【讨论】:

    • 在 Cassandra 2.1 中引入了 Logback,在 Cassandra 2.0 中是 Log4J
    • 好吧,没注意到……我最近开始了一个新项目,从2.1开始,所以我就这样机械地回答了……
    【解决方案2】:

    答案仅适用于 Cassandra 2.0 及更早版本。

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

    1. 简单的日志记录
    2. 轮换日志文件

    它不满足压缩\归档旧文件以节省存储空间的需要。

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

    1. 从源代码安装
    2. 下载 log4j-extras 并将其添加到 Cassandra lib 目录中
    3. 用maven编译项目

    显然,您这样做的机会很小。太麻烦了。

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

    1. 将 Cassandra 配置为使用简单日志记录
    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
    

    现在 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。

    如果您想更改存储大小,请根据需要配置 rotatesize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2011-10-24
      相关资源
      最近更新 更多