自建分布式配置中心nacos2.1.0,因打印日志过多,磁盘空间已满导致新增配置读取失败。
一、背景
服务使用nacos作为分布式配置中心,新申请了一个java服务,部署至测试环境。它在启动的时候,一直未能读取到服务的配置文件。
但是,同样版本的代码,在开发环境,访问开发环境的nacos正常。
二、问题排查
1、对比测试环境与开发环境
部署在开发环境的程序,访问开发nacos正常;
部署在测试环境的程序,访问测试nacos异常。
2、本地程序访问开发和测试nacos
本地访问开发nacos正常;
本地访问测试nacos异常。
3、对比测试环境下的不同服务
该台机器部署了多个服务,对比其他服务,访问测试nacos都正常。
而新增的服务访问测试nacos异常。
nacos的配置项是在环境变量中,不存在服务的差异,全部服务共用该配置。
总结:猜测是测试nacos服务端出现问题,而且是只影响新增的配置。
三、nacos日志治理
登录nacos服务端,发现机器磁盘空间已满。
[root@nacos-03 ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 1.4G 79M 85M 350M 199M
Swap: 2.0G 307M 1.7G
[root@nacos-03 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 903M 0 903M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 102M 813M 12% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 18G 20K 100% /
/dev/xvda1 253M 131M 123M 52% /boot
tmpfs 183M 0 183M 0% /run/user/0
可以看到,可用空间已剩20K。
进一步分析,发现大量的是nacos日志。
nacos/logs目录下大量的访问日志access_log.*.log
于是,我把logs目录下的所有文件清理掉,一下子省出4.7G空间了。
[root@nacos-03 logs]# rm -rf *
[root@nacos-03 logs]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 903M 0 903M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 102M 813M 12% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 14G 4.7G 74% /
/dev/xvda1 253M 131M 123M 52% /boot
tmpfs 183M 0 183M 0% /run/user/0
重启一下机器,然后继续清理日志吧。
2、进入nacos根目录,统计目录大小
cd /opt/nacos
# 使用下面命令,逐个目录统计大小
du -h --max-depth=1 .
可以发现data/protocol/raft下有四个目录naming_instance_metadata、naming_persistent_service、naming_persistent_service_v2和naming_service_metadata,他们各有log目录,各占据3G多的空间。
依次清理log目录,空间一下子就变成如下了。
又一次清除了12G多的空间。。。
[root@nacos-03 conf]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 903M 0 903M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 8.6M 906M 1% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 2.7G 16G 16% /
/dev/xvda1 253M 131M 123M 52% /boot
tmpfs 183M 0 183M 0% /run/user/0
3、日志设置
- 关掉access log日志。
在nacos/conf/application.properties配置文件中,可以找到关于日志的配置项。
server.tomcat.accesslog.enabled=false
- 设置nacos/conf/nacos-logback.xml
根据启动命令nacos/bin/startup.sh,可知logback.xml所在位置。
# 其他参数省略
java -jar /opt/nacos/target/nacos-server.jar \
--spring.config.additional-location=file:/opt/nacos/conf/ \
--logging.config=/opt/nacos/conf/nacos-logback.xml
修改保留天数、每个文件的最大值、每个目录的总值。
四、总结
nacos服务端所在机器因为磁盘空间已满导致新增服务无法读取配置,而原有旧服务可以正常读取配置。这是我们走弯路的直接原因。
希望大家在对nacos做运维的时候,多加注意其日志治理。
更多推荐
所有评论(0)