作者:子葵
背景
在日常開發和生產環境中,可能會遇到由於網絡或者其他因素導致客戶端連接 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 產品過程中遇到的問題,提升運維效率。