mseutil是一个命令行工具,支持在Linux、macOS和Windows客户端运行环境下诊断MSE实例,同时也支持查询和操作MSE实例的数据。本文以Linux系统为例,介绍如何获取和使用mseutil工具,以及mseutil的命令详情。
前提条件
步骤一:下载mseutil工具
mseutil工具支持在Linux、macOS和Windows系统中运行。您可根据自身需要下载使用。
wget https://msetools.oss-cn-hangzhou.aliyuncs.com/mseutil/linux/x86_64/mseutil
wget https://msetools.oss-cn-hangzhou.aliyuncs.com/mseutil/linux/arm64/mseutil
wget https://msetools.oss-cn-hangzhou.aliyuncs.com/mseutil/darwin/x86_64/mseutil
wget https://msetools.oss-cn-hangzhou.aliyuncs.com/mseutil/darwin/arm64/mseutil
wget https://msetools.oss-cn-hangzhou.aliyuncs.com/mseutil/windows/x86_64/mseutil
wget https://msetools.oss-cn-hangzhou.aliyuncs.com/mseutil/windows/arm64/mseutil
例如,在Linux客户端执行命令,下载mseutil工具。结果输出如下:
步骤二:在MSE控制台获取地址
登录MSE注册配置中心管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择注册配置中心 > 实例列表。
在实例列表页面,单击目标实例(希望通过mseutil操作的实例)。
在基础信息页面,获取实例连接的地址。
下图所示为内网地址,如果需要通过公网访问,请在公网地址区域获取公网地址。
步骤三:使用mseutil工具
mseutil通过指定子产品名以及对应的命令,对实例进行操作。
执行如下命令,获取用户文件的执行权限。
chmod +x ./mseutil
执行如下命令,对实例进行操作。更多命令的详细信息,请参见命令详情。
mseutil [子产品名] [子产品下的子命令] [flags]
说明在对实例进行操作时,注意区分子产品名,即引擎类型。
使用示例
如下所示,分别以ZooKeeper和Nacos为例,诊断客户端环境和MSE Server的连通性以及Server的API健康程度。其中,实例的连接地址为步骤二获取的地址。
ZooKeeper:
执行如下代码。
mseutil zk --serverAddr ${实例的连接地址} inspect # 诊断客户端环境和MSE ZooKeeper Server的连通性以及Server的API健康程度
执行结果如下:
Nacos:
执行如下代码。
mseutil nacos --serverAddr ${实例的连接地址} inspect # 诊断客户端环境和MSE Nacos Server的连通性以及Server的API健康程度
示例执行结果如下所示:
命令详情
工具迭代更新较快,更多命令请通过在客户端执行mseutil -h
查看。
mseutil具备Nacos和ZooKeeper两个产品的基础操作能力,但由于Nacos和ZooKeeper的API参数不完全一致,因此命令有所区别。
mseutil nacos和mseutil zookeeper的所有命令都需要serverAddr参数。
mseutil zookeeper命令
命令 | 描述 |
|
|
| 获取给定path的数据,返回的数据以UTF-8编码形式显示。 例如,执行如下代码,获取
|
| 更新给定路径的数据。 例如,执行如下代码,更新
说明 更新成功显示 |
| 删除给定路径的数据。 例如,执行如下代码,删除
说明 更新成功显示 |
| 列出给定路径的子节点。 例如,执行如下代码,获取
|
| 获取给定路径的znode的状态信息。 例如,执行如下代码,获取
|
| 支持所有的ZooKeeper四字命令,通过 例如,执行
|
| 从指定文件中获取sessionId列表。 说明 指定日志文件的路径目前只支持Java客户端日志中sessionId的提取,Java客户端日志和业务日志默认情况下是同一份日志。 |
mseutil nacos命令
Nacos通用选项 | 是否可选 | 默认值 | 描述 |
| 可选 | <空> | 指定命名空间ID。 |
| naming模块必选 | 无 | 指定服务名。 |
| 可选 |
| 指定服务的分组。 |
| config模块必选 | 无 | 指定服务名。 |
| 可选 |
| 指定配置的分组。 |
| 可选 | 无 | 当Nacos开启鉴权时使用。指定RAM鉴权使用的accessKeyId。 |
| 可选 | 无 | 当Nacos开启鉴权时使用。指定RAM鉴权使用的accessKeySecret。 |
子命令 | 参数 | 描述 |
| 无 |
|
| instance |
|
| instance | 将指定的 除继承通用选项,额外选项有如下:
其它选项可通过 |
|
诊断问题详解
DNS LookUp失败,显示no such host?
DNS解析失败,请检查输入的serverAddr
是否正确。如果为容器环境,请检查CoreDNS是否工作正常。
test Connect error,显示dial tcp ip:port: i/o timeout?
测试连接对应的实例端口超时,请检查网络环境。
在MSE基础信息页面的实例节点区域,查看MSE实例的状态是否为运行中。
如果通过公网访问,请确保公网白名单中已经加入诊断工具运行环境的公网出口IP。关于如何为实例设置白名单,请参见设置Nacos白名单或设置ZooKeeper白名单。
请确保端口号输入正确。ZooKeeper端口号为2181;Nacos端口号为8848。
请确保诊断工具运行环境所在的VPC和创建MSE实例时所选的VPC相同。
显示ZooKeeper Api test error: zk: could not connect to a server?
执行如下代码,如果返回This ZooKeeper instance is not currently serving requests
,请确保MSE实例处于运行中状态,此时Server端正在选主,请稍后重新执行诊断。
mseutil zk --serverAddr ${实例的连接地址} 4lw stat