以交互模式提供服务,可通过配置文件或启动参数设置初始信息 基本功能如下:
- 命名空间:
- 增删查改
- 配置命令:
- 增删查,列出前n条
- 服务命令:
- 增删查改,列出前n条
- 实例命令:
- 增删查改
- 系统开关:
- 查,改
数据获取的实现基于:
- Open-Api v1
- Prometheus Http
- Nacos Java SDK 1.4.2
nacosctl以jar包形式部署,为方便启动,写了一个简易启动脚本,使用方式如下: 启动会等待10秒左右,因为需要创建nacos-client中的service比较耗时,启动后可以看到提示语,参数配置情况,以及连接效果,看到输入栏提示后即可进行操作,按tab自动展示帮助,使用quit退出 初次连接会尝试使用配置中的信息进行鉴权,如果失败则会有提示,不过不影响后续正常启动(因为对于未启动权健的nacos-server,就算认证失败了也可以访问) nacosctl中自带了一套基本的配置,启动后会自动以nacos初始账号密码连接本机8848端口 启动之前也可以修改配置,例如指定启动参数: 更多的参数可以在启动后通过help指令查看: 也可以通过配置文件,持久化修改配置,只需要在和nacosctl同目录下创建一个名为conf.properties的文件即可,比如example文件夹目录下的摆放方式: 文件写法如下: 在同时有配置文件且启动指定了参数到时候,nacosctl会优先使用启动指定的参数
启动后,可以通过help指令查看全局帮助: 在输入的过程中,可以通过按tab键获得提示与补全能力: 若想查看各个子命令的使用方式,则可以采用subcommand help xx的方式: 查看子命令的具体某个小命令: 如果输入指令的过程缺少参数或者拼写错误,也会有红色高亮提示: 缺少参数的提示: 此外,为了防止误删除操作,默认情况下nacosctl会对删除操作进行确认询问: 如果想要关闭掉误操作询问,则可以在配置文件中将confirmEnabled设置为false: 再次重启后,没有删除保护了:
由于Nacos存在命名空间隔离,不同Namespace下的Config和Service是不相通的,所以nacosctl在操作过程中也提供了一个全局上下文的namespace,代表当前操作的所有资源所属的命名空间,可以在启动后的输入提示栏左侧括号中看到: 使用者可以通过use命令手动切换当前的上下文命名空间,输入use后按下tab,会自动展示可选的命名空间,以namespace名称(namespaceId)的形式展示: 输入前缀后,通过tab键自动补全,回车后,即可切换到新的命名空间,此过程也需要几秒钟的等待
命名空间操作提供了基本的增删查改四个命令: 具体语法规范可以在nacosctl中通过namespace help xx来查看,这里特意说明一下update子命令: Namespace update只能修改命名空间的描述,而不能修改name和id,若想修改id,则需要重新创建删除,下图是一次命名空间的创建-查看-删除操作的指令流程:
Config操作是指对Nacos的配置模块的资源进行操作,而不是配置nacosctl自身的信息 该模块提供了增删查改四个功能 其中,config add是添加一条新的配置,指定好group与dataId后,输入配置内容即可创建,语法规则如下: 其中,为了方便较长配置文件的创建操作,提供了文件读取功能,即通过-f指定文件,上传的config的内容即为文件内容,若不指定-f,则config的内容即为输入内容,例子如下: 同理,对于config get操作,也提供了-f能力,可以把获取的输出内容直接写到指定文件中: 而若只想浏览当前nacos-server上的配置文件,则可以使用config list命令,默认情况下会列出nacos-console第一页的config,可以通过help查看并指定参数修改数目,使用效果如下:
Service操作是指通过open-api,对nacos-server的服务进行编辑,提供了增删查改的基本能力: 增删查改具体使用方式与config类似,参数选项细节可以通过service help xx指令查看 下图是一个 创建-查询-删除-查询 的使用案例: 如果想知道nacos-server有哪些内容,也可以通过service list命令查看,用法与config list类似: (这里注意,nacosctl及open-api的创建只会创建空服务而没有实例,过一段时间服务会被销毁掉)
Instance操作是基于nacos-client实现,提供了对实例的操作(以及创建后会维持心跳),也是增删查改功能: 下面是一个简单的使用例子:为同一个服务创建3个实例,查询,修改后再查询,删除一个,再查询:
Switch操作是指对开源版Nacos的系统开关进行查询与修改,基于Open-Api完成。Nacosctl能解决某些开关的展示名称和真实的key名不一致的问题,并提供了remove与add对list与map类开关进行参数修改,switch操作支持的命令如下: 通过switch get,可以查询到某个开关的情况,可以按tab自动补全,如果想查看全部开关,则输入switch get all: 对于修改开关,以nacos-2.0.1开源版本总结,各开关需要注意的点如下:
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命令修改,例如: 对于特殊类型map,可以通过add与remove修改,例如: 不过要注意的是,nacosctl这里对map的添加,删除只是对open-api的switch操作进行了一个封装,所以目前会存在无法删除最后一个key的情况,后续需要配合nacos-server解决。
由于Open-Api中还对Switch提供了debug操作(也就是只在单节点上生效以便于调试),但是这里目前存在一个问题:若首次使用debug修改部分key后,当后续再使用非debug推送某个key,则该节点的所有key都会被同步到整个集群,包括debug的信息。更多细节原因请@三辰 所以为了尽可能减少用户触发这种情况,nacosctl对这个问题做了如下设计:
- 当使用debug推送后,则后续不能进行非debug推送,提示用户在debug后需要手动改回原值
- 若想继续使用非debug推送,则请重启nacosctl