作者:子葵
背景
在日常开发和生产环境中,可能会遇到由于网络或者其他因素导致客户端连接 MSE 集群出现异常,此时需要排查集群以及客户端状态,通常需要通过文档查询对应的异常解释来定位问题,排查问题的链路比较长,比较耗时。因此 MSE 提供了一键诊断工具,发现 client -> server 链路上的问题并提供建议,使得问题排查更加快捷。
轻松上手
在日常使用中可能会遇到 MSE 实例端口不通,客户端出现端口不可用的异常日志
此时我们就可以通过 mseutil 快速诊断网络问题。
- 通过文档下载对应平台的 mseutil 工具,工具是独立的二进制包可完全独立运行。之后通过 mse 实例详情页面获得 MSE 实例的 serverAddr
- 通过以下命令进行快速诊断:
mseutil {子产品名} inspect --serverAddr mse-xxxxx.aliyuncs.com
诊断分为基础网络诊断以及 API 诊断,网络诊断会测试客户端环境和 MSE 实例之间的网络连接是否可达,端口是否可访问。API 诊断针对不同子产品的 API 进行测试,主要测试接口的可用性以及接口调用延时等信息。
mseutil zookeeper inspect --serverAddr mse-xxx-p.zk.mse.aliyuncs.com
mseutil nacos inspect --serverAddr mse-xxx-p.zk.mse.aliyuncs.com
此时我们可知 DNS 解析正常,但是网络连接出现问题,此时我们根据文档中的错误描述可排查到公网白名单未配置,此时只需要配置公网白名单即可。
如果一切正常会输出以下结果:
通过诊断结果我们可知客户端环境到 MSE 实例之间的网络不通,之后可通过 MSE 对应文档排查具体原因,Nacos 诊断步骤和 ZooKeeper 一致。
MSE 实例操作
mseutil 提供对 MSE 实例的数据操作能力,兼容 zkCli,并且提供四字命令查询能力,具体使用可使用 -h 子命名查询使用方法,并且支持查询修改 Nacos 服务信息以及配置信息,使得线上环境排查问题更加便捷,mseutil 可完全独立在 x86 以及 arm64 环境的Windows,Linux,OSX 运行,避免繁琐的环境配置,上手即用。
支持四字命令查询 Server 状态并且兼容 zkCli
mseutil 支持 ZooKeeper 四字命令,例如可通过以下方式进行四字命令查询 Server 当前状态的摘要:
mseutil zookeeper 4lw --serverAddr mse-xxx.aliyuncs.com stat
mseutil 支持所有的 ZooKeeper 四字命令,可通过 mseuitl zookeeper 4lw -h 查看具体使用。
mseutil 兼容 zkCli,支持对 MSE ZooKeeper 中的数据进行查询和修改。
例如可通过以下命令快捷查询实例中对应 Path 的 Znode 数据:
mseutil zookeeper get --serverAddr=mse-xxxx.aliyuncs.com /zookeeper
类似的 mseutil 还支持(set,delete,ls,stat)等命令通过 mseutil zookeeper -h 获取更多帮助。
支持对Nacos实例的服务信息查询和更新能力
mseutil 支持对 Naocs 一键诊断,支持查询基础的实例查询注册功能。一键诊断
mseutil nacos inspect --serverAddr ${实例连接地址}
查询服务实例列表
mseutil nacos get instance -n ${namespaceId} -s ${serviceName} -g ${groupName}
注册对应服务的实例
mseutil nacos create instance <IP>:<PORT> -n ${namespaceId} -s ${serviceName} -g ${groupName} -c ${clusterName}
此外,诊断工具支持 Nacos 1.x 客户端协议和 Nacos 2.x 客户端协议,可通过参数切换:
mseutil nacos get instance -s ${serviceName} --v2
从而可以完全覆盖客户端侧所有基本场景,减少问题定位的成本。
未来规划
mseutil 未来还会支持更多的MSE子产品以及更细粒度的,更智能的诊断能力,包括客户端到 MSE 实例的网络报文分析,客户端负载状态分析,具体应用的资源占用水平以及 GC 分析等能力,帮助用户更便捷的排查在使用 MSE 产品过程中遇到的问题,提升运维效率。