一、背景

服务使用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做运维的时候,多加注意其日志治理。

GitHub 加速计划 / na / nacos
123
24
下载
Nacos是由阿里巴巴开源的服务治理中间件,集成了动态服务发现、配置管理和服务元数据管理功能,广泛应用于微服务架构中,简化服务治理过程。
最近提交(Master分支:4 个月前 )
762303b9 * [ISSUE #12970] Fix NamingMetadataManager.removeInstanceMetadata() error fix #12970 * Update NamingMetadataManagerTest.java 4 天前
05561813 * fix type search on mysql model * 灰度模型迁移程序并发&迁移不落历史表 * Config migrate executor times * 1.Config migrate executor times 2. history comparation optimize * 1.Config migrate executor times 2. history comparation optimize * checkstyle 4 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐