Nacos 作为阿里巴巴开源的服务发现与配置管理平台,在微服务架构中广泛使用。随着运行时间的增长,Nacos 的日志文件(logs/)和 Raft 持久化数据(data/protocol/raft/)可能会占用大量磁盘空间,影响系统稳定性。
本文详细探讨:
适用于 Nacos 单机模式(standalone) 和 集群模式(cluster),并提供代码示例和配置调整方案。
logs/ 目录)清理Nacos 的 logs/ 目录存储了运行日志,主要包括:
nacos.log(主日志)access_log.xxxx-xx-xx.log(HTTP 访问日志)config.log(配置管理日志)naming.log(服务发现日志)这些日志用于 故障排查、性能监控、安全审计,但长期积累会占用大量磁盘空间。
文件类型 | 是否可删除 | 备注 |
|---|---|---|
nacos.log(当前日志) | ❌ 不建议直接删除 | 可清空(echo "" > nacos.log) |
access_log.*.log(旧访问日志) | ✅ 可删除 | 建议保留最近 7 天日志 |
config.log / naming.log | ✅ 可删除 | 按需保留 |
# 清空当前日志(避免直接 rm)
echo "" > nacos.log
# 删除 7 天前的访问日志
find logs/ -name "access_log.*.log" -mtime +7 -exec rm -f {} \;修改 conf/logback.xml,限制日志大小和保留天数:
<configuration>
<appender name="nacosLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/nacos.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/nacos.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 单个日志文件最大 100MB -->
<maxFileSize>100MB</maxFileSize>
<!-- 保留 30 天日志 -->
<maxHistory>30</maxHistory>
<!-- 总日志大小不超过 10GB -->
<totalSizeCap>10GB</totalSizeCap>
</rollingPolicy>
</appender>
</configuration>重启 Nacos 生效:
sh startup.sh -m standalonedata/protocol/raft/)清理Nacos 2.0+ 使用 JRaft 实现分布式一致性,data/protocol/raft/ 存储:
log/:Raft 操作日志(类似 WAL)snapshot/:数据快照(用于恢复)meta.json:节点元数据直接删除可能导致 集群选举失败或数据丢失!
运行模式 | 是否可删除 | 风险 |
|---|---|---|
单机模式(standalone) | ✅ 可删除(重启后重建) | 数据重置 |
集群模式(cluster) | ❌ 不可直接删除 | 可能导致集群分裂 |
修改 conf/raft.conf(Nacos 2.2+):
# 保留的快照数量(默认 3,改为 1 可节省空间)
raft.snapshot.retain_num = 1
# 日志分段大小(默认 100MB,可降低)
raft.log.segment_size = 50MB重启集群生效:
sh shutdown.sh
sh startup.sh -m cluster# 保留最新快照,删除旧的
cd data/protocol/raft/snapshot/
ls -t | tail -n +2 | xargs rm -rf # 保留最新 1 个快照# 1. 停止 Nacos
sh shutdown.sh
# 2. 备份 raft 数据
cp -r data/protocol/raft/ raft_backup/
# 3. 清理 raft 目录
rm -rf data/protocol/raft/*
# 4. 重启 Nacos(自动重建数据)
sh startup.sh -m standalonefind + logrotate)。rm 正在写入的日志文件。raft.conf,而非手动删除。raft/,但需重启重建。#!/bin/bash
# Nacos 日志与 Raft 数据清理脚本
# 1. 清理 7 天前的日志
find /opt/nacos/logs/ -name "*.log*" -mtime +7 -exec rm -f {} \;
# 2. 清理旧 Raft 快照(单机模式)
if [ "$MODE" = "standalone" ]; then
cd /opt/nacos/data/protocol/raft/snapshot/
ls -t | tail -n +2 | xargs rm -rf
fi
# 3. 重启 Nacos(可选)
# sh /opt/nacos/bin/shutdown.sh
# sh /opt/nacos/bin/startup.sh -m $MODElogback.xml 自动化管理。通过合理配置,Nacos 可以长期稳定运行,避免磁盘爆满问题。如果有疑问,欢迎在评论区交流!