以交互模式提供服务,可通过配置文件或启动参数设置初始信息 基本功能如下:
- 命名空间:
- 增删查改
- 配置命令:
- 增删查,列出前n条
- 服务命令:
- 增删查改,列出前n条
- 实例命令:
- 增删查改
- 系统开关:
- 查,改
数据获取的实现基于:
- Open-Api v1
- Prometheus Http
- Nacos Java SDK 1.4.2
nacosctl以jar包形式部署,为方便启动,写了一个简易启动脚本,使用方式如下:






启动后,可以通过help指令查看全局帮助:








由于Nacos存在命名空间隔离,不同Namespace下的Config和Service是不相通的,所以nacosctl在操作过程中也提供了一个全局上下文的namespace,代表当前操作的所有资源所属的命名空间,可以在启动后的输入提示栏左侧括号中看到:


命名空间操作提供了基本的增删查改四个命令:


Config操作是指对Nacos的配置模块的资源进行操作,而不是配置nacosctl自身的信息
该模块提供了增删查改四个功能




Service操作是指通过open-api,对nacos-server的服务进行编辑,提供了增删查改的基本能力:



Instance操作是基于nacos-client实现,提供了对实例的操作(以及创建后会维持心跳),也是增删查改功能:


Switch操作是指对开源版Nacos的系统开关进行查询与修改,基于Open-Api完成。Nacosctl能解决某些开关的展示名称和真实的key名不一致的问题,并提供了remove与add对list与map类开关进行参数修改,switch操作支持的命令如下:


open-api请求时 key name 需要修改:
(不过对于nacosctl使用者则无需关心,直接输原key就可以了,有自动转换):
healthCheckEnabled:true --> check true/false
checkTimes:3 --> healthCheckTimes
distroEnabled:true ---> distro
defaultPushCacheMillis:20000 --->pushCacheMillis
pushJavaVersion:"0.2.0" -->pushVersion xx:xx.xx.xx
pushPythonVersion:"0.4.3"
pushCVersion:"1.0.12"
pushCSharpVersion:"0.9.0"
pushGoVersion:"0.1.0"
不能通过open-api修改:
enableAuthentication:false 不能设置
name:"00-00---000-NACOS_SWITCH_DOMAIN-000---00-00" 不能改
checksum:null 不能设置
adWeightMap:{} 不能改
mysqlHealthParams:{"max":3000,"min":2000,"factor":0.65} 不能改
incrementalList:[] 不能改
healthCheckWhiteList:[] 不能改
可以直接用原key修改:
masters:null Ps:value用,分割输入多个,比如a,b,c,d即可
serviceStatusSynchronizationPeriodMillis:5000
distroThreshold:0.7
disableAddIP:false
overriddenServerStatus:null
doubleWriteEnabled:true
lightBeatEnabled:true
pushEnabled:true
clientBeatInterval:1
enableStandalone:true
defaultCacheMillis:3000
sendBeatOnly:false
distroServerExpiredMillis:10000
autoChangeHealthCheckEnabled:true
serverStatusSynchronizationPeriodMillis:2000
defaultInstanceEphemeral:true
特殊类型(list/map):
httpHealthParams:{"max":5000,"min":500,"factor":0.85}
tcpHealthParams:{"max":5000,"min":1000,"factor":0.75}
limitedUrlMap:{}
所以对于普通的key,可以通过switch set命令修改,例如:


由于Open-Api中还对Switch提供了debug操作(也就是只在单节点上生效以便于调试),但是这里目前存在一个问题:若首次使用debug修改部分key后,当后续再使用非debug推送某个key,则该节点的所有key都会被同步到整个集群,包括debug的信息。更多细节原因请@三辰 所以为了尽可能减少用户触发这种情况,nacosctl对这个问题做了如下设计:
- 当使用debug推送后,则后续不能进行非debug推送,提示用户在debug后需要手动改回原值
- 若想继续使用非debug推送,则请重启nacosctl




