如何在Cassandra 3.4.4中记录所有查询及相关运行日志
Cassandra 3.4.4 全场景日志配置实现方案
Cassandra 3.4.4 基于Logback实现日志管理,所有日志规则可通过修改安装目录下的conf/logback.xml、conf/cassandra.yaml两个配置文件完成,可覆盖你需要的所有场景:
1. 分场景日志配置
(1)查询执行成功/异常日志
要记录所有CQL查询的执行结果,在logback.xml中新增如下配置即可:
<!-- 定义独立的查询日志输出appender --> <appender name="QUERYLOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${cassandra.logdir}/query.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${cassandra.logdir}/query.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern> <maxFileSize>1GB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>100GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 绑定CQL语句执行的日志输出规则 --> <logger name="org.apache.cassandra.cql3" level="DEBUG" additivity="false"> <appender-ref ref="QUERYLOG"/> </logger>
该配置会把所有CQL的执行成功记录、语法错误、执行超时、资源不足等异常信息都输出到独立的query.log文件中,自带请求来源、执行耗时、异常栈等信息。
(2)连接超时、网络异常日志
在logback.xml中新增如下配置,即可记录所有客户端连接相关的事件:
<logger name="org.apache.cassandra.transport" level="DEBUG" additivity="false"> <appender-ref ref="QUERYLOG"/> <!-- 也可以绑定单独的网络日志appender --> </logger>
该配置会输出连接建立、连接断开、读写超时、帧解析错误等所有网络相关日志,会明确标记超时事件的客户端IP、端口、请求类型。
(3)凭证错误、权限校验失败日志
在logback.xml中新增如下配置,即可记录所有认证、权限相关的事件:
<logger name="org.apache.cassandra.auth" level="INFO" additivity="false"> <appender-ref ref="QUERYLOG"/> <!-- 也可以绑定单独的认证日志appender --> </logger>
该配置会输出用户名密码错误、令牌无效、权限不足等所有认证授权相关的失败记录,自带请求来源IP、尝试使用的用户名信息。
2. 可选:开启原生审计日志
如果需要更规范统一的全场景日志记录,可以直接开启Cassandra自带的审计日志功能,无需单独配置Logback的多logger规则:
- 打开
conf/cassandra.yaml,找到audit_logging_options配置段,修改为如下内容:
audit_logging_options: enabled: true logger: SLF4JAuditLogger included_categories: AUTH, ERROR, QUERY, DML, DDL, DCL, ADMIN, OTHER excluded_categories: []
- 重启Cassandra节点后,所有你需要的场景日志都会自动输出到默认的
system.log中,也可以单独配置审计日志的输出文件。
3. 注意事项
- 生产环境不要长期开启DEBUG级的全量查询日志,会占用大量磁盘IO和存储,仅排查问题时临时开启即可,常规运行可将日志级别调整为INFO,仅记录慢查询和异常请求
- 可以通过修改appender的过滤规则,过滤掉不需要的日志(比如健康检查请求、指定IP的测试请求),减少冗余日志的产生。
- 所有配置修改完成后,重启Cassandra进程即可生效。
内容的提问来源于stack exchange,提问作者Matei Munteanu
相关产品推荐
相关产品推荐

