nacos配置文件语法检测&报警

nacos配置文件语法检测&报警

背景

项目使用nacos作为配置中心,nacos控制台对于语法检测功能比较弱,因此有时会发生配置文件格式不对导致项目重启或者发布时服务起不来的情况,排查起来也比较麻烦

目标

实时检测出nacos配置文件的语法错误,并做出报警提示

方案

方案
有点
缺点

扩展nacos控制台,控制台监测

1、一劳永逸,客户端无需改造

1、改造成本比较高

2、为未来升级nacos带来了潜在的风险和不兼容性

客户端实时监测

1、改动相对简单,插件化,可插拔,风险可控

1、如果有多语言客户端,改造的成本会比较高

考虑到公司主要以java作为开发语言,因此采用第二种方案

详细设计

以下方案基于spring-cloud-starter-alibaba-nacos-config

先介绍几个重要的class

com.alibaba.cloud.nacos.NacosConfigManager


// 获取ConfigService
public ConfigService getConfigService() {
   if (Objects.isNull(service)) {
      createConfigService(this.nacosConfigProperties);
   }
   return service;
}
// 获取nacos全部配置,比如server-addr、namespace等
public NacosConfigProperties getNacosConfigProperties() {
   return nacosConfigProperties;
}

com.alibaba.nacos.api.config.ConfigService

com.alibaba.cloud.nacos.NacosConfigProperties

com.alibaba.cloud.nacos.NacosPropertySourceRepository

com.alibaba.cloud.nacos.client.NacosPropertySource

com.alibaba.nacos.api.config.listener.Listener

所以方案也比较简单:在服务启动之后,拿到所有的配置文件,然后针对每个配置文件,分别添加listener,实现receiveConfigInfo方法,监听到变更时,针对configInfo做语法检查,如果检查失败打印日志并报警

下面上代码

最后更新于