共计 5170 个字符,预计需要花费 13 分钟才能阅读完成。
Nacos 运维便携命令行检查工具
Github: https://github.com/typ431127/Nacos_check
如果您觉得此工具对你的工作有帮助,可以点击上面的链接地址点一个小星星⭐⭐
方便运维查看 nacos 注册服务,快速查找服务,同时生成 prometheus 自动发现所需要的 json 文件。
golang 运维萌新,学习项目 … 😊
首先我并不是一个专业的开发人员,我只是一个小运维,此工具只为方便工作开发,代码水平一般,大佬勿喷 ……….
- 支持 Nacos v1 v2 版本, 支持集群模式
- 快速查找注册服务,支持匹配名称,命名空间,端口,ip,多个服务模糊匹配
- 支持指定命名空间,默认全部
- 支持命令行导出 json
- 支持自定义 Prometheus label
- 支持 Prometheus 自动发现,
file_sd
和http_sd_configs
- 查看集群状态,以及 v1 升级 v2 接口详情
- 支持注册本身到 Nacos 集群
- 支持本地配置文件使用
- 支持 Nacos 用户名密码鉴权
- 支持自定义 contextpath
- 支持 Table 和 Markdown 格式输出
安装
curl -L https://github.com/typ431127/Nacos_check/releases/download/0.7.2/nacos-check_Linux_x86_64.tar.gz -o nacos-check_Linux_x86_64.tar.gz | |
tar xvf nacos-check_Linux_x86_64.tar.gz | |
chmod +x nacos-check | |
./nacos-check --url https://nacos 地址 |
可以把文件放入 /usr/bin 或者 windows path 环境变量里面,随时使用 cmd 调用命令
使用帮助
Nacos | |
Usage: | |
nacos-check [flags] | |
nacos-check [command] | |
Available Commands: | |
cluster 集群状态 | |
completion Generate the autocompletion script for the specified shell | |
config 查看本地配置文件路径 | |
help Help about any command | |
register 注册本实例到 Nacos 并开启 webapi | |
version 查看版本 | |
web 开启 web api Prometheus http_sd_configs | |
Flags: | |
--cluster 全集群查找 | |
--contextpath string server.servlet.contextPath (default "/nacos") | |
-f, --find string 查找服务 | |
--group string 指定分组 多个分组 group1,group2 (default "DEFAULT_GROUP") | |
-h, --help help for nacos-check | |
-i, --ipfile string ip 解析文件 (default "salt_ip.json") | |
--json 输出 json | |
-l, --lable stringToString 添加标签 -l env=dev,pro=java (default []) | |
--namespace string 指定命名空间 ID 多个: id1,id2,id3 | |
--password string 密码 | |
-s, --second duration 监控服务间隔刷新时间 (default 5s) | |
--stdout string 输出类型 table / markdown (default "table") | |
-u, --url string Nacos 地址 (default "http://dev-k8s-nacos:8848") | |
--username string 账户 (default "nacos") | |
-w, --watch 监控服务 | |
-o, --write string 导出 json 文件, prometheus 自动发现文件路径 | |
Use "nacos-check [command] --help" for more information about a command. |
显示所有实例注册信息
./nacos_check-linux-amd64 --url http://nacos-0:8848

查看 Nacos 集群状态
./nacos_check-linux-amd64 --url http://nacos-0:8848cluster --v2upgrade

查找注册服务
./nacos_check-linux-amd64 --url http://nacos-0:8848-f gateway | |
./nacos_check-linux-amd64 --url http://nacos-0:8848-f 8080 | |
./nacos_check-linux-amd64 --url http://nacos-0:8848-f 172.30 | |
# 多个服务匹配, 分割 | |
./nacos_check-linux-amd64 --url http://nacos-0:8848-f gateway,user,order | |
# 指定命名空间和 group | |
./nacos_check-linux-amd64 --url http://nacos-0:8848--namespace df7bee71-33ff-49ae-9adc-d9412b3d2ddb,dc7bca41-5aeb-417e-9876-488dcfb5b911 --group ddn,DEFAULT_GROUP -f xxx |
- 支持查找服务名,ip,端口, 命名空间
查找注册服务, 每 10 秒刷新一次
./nacos_check-linux-amd64 --url http://nacos-0:8848-f gateway -w -s 10s
Prometheus 自动发现支持
写入自动发现 json 文件
./nacos_check-linux-amd64 --url http://nacos-0:8848-o discovery.json
控制台输出 json
./nacos_check-linux-amd64 --url http://nacos-0:8848--json | |
# 添加自定义 label | |
./nacos_check-linux-amd64 --url http://nacos-0:8848 -l env=dev,pro=test-pro,k8s=true --json |
prometheus 可以结合 blackbox_exporter 使用
file_sd_configs: | |
- files: | |
- '/data/work/prometheus/discovery/*.json' | |
refresh_interval: 3m |
prometheus-file-sd 自动发现 | |
./nacos_check-linux-amd64 --url http://nacos-0.xxxxx:8848 -o discovery.json | |
http_sd_configs 自动发现 | |
开启 webapi | |
./nacos_check-linux-amd64 web --url http://nacos-0.xxxx:8848 | |
开启 webapi 并添加自定义 label | |
./nacos_check-linux-amd64 web --url http://nacos-0.xxxx:8848 -l env=dev,pro=test-pro,k8s=true |
注意鉴权模式下 Token 有过期时间,开启鉴权后默认 1 小时刷新一次 token,nacos 默认配置 token 过期时间为 5 小时,根据需要可调整 web 模式下 –refresh 参数
基于 http_sd_configs 的自动发现
scrape_configs: | |
- job_name: 'nacos' | |
scrape_interval: 10s | |
metrics_path: /probe | |
params: | |
module: [tcp_connect] | |
http_sd_configs: | |
- url: http://localhost:8099 | |
relabel_configs: | |
- source_labels: [__address__] | |
target_label: __param_target | |
- source_labels: [__param_target] | |
target_label: instance | |
- target_label: __address__ | |
replacement: 127.0.0.1:9115 |
find 快速查找服务,支持以下👇匹配
- 匹配命名空间
- 匹配服务名
- 匹配 IP 端口
# 模糊匹配命名空间 | |
./nacos_check-linux-amd64 -f registry | |
# 模糊匹配服务 | |
./nacos_check-linux-amd64 -f gateway | |
# 匹配端口 | |
./nacos_check-linux-amd64 -f 8080 | |
# 模糊匹配 IP | |
./nacos_check-linux-amd64 -f 172.30 |

加载本地配置
每次运行工具都需要指定 url 很麻烦,可以在本地写一个配置文件,这样默认情况下就会加载配置文件里面的 url,就不需要每次都指定了。查看配置文件路径
./nacos_check-linux-amd64 config | |
本地配置文件路径: /root/.nacos_conf.toml |
/root/.nacos_conf.toml
示例
# nacos url 地址 | |
url = "http://nacos-0:8848" | |
# 定义容器网段 | |
container_network = ["172.30.0.0/16","172.16.0.0/16","192.168.0.0/16"] | |
# 账号密码 https://nacos.io/zh-cn/docs/auth.html | |
#username = ""#password ="" | |
# 定义指定的 namespaceid (可选, 默认所有) | |
# 等同命令行 --namespace id1,id2 | |
namespace = ["df7bee71-33ff-49ae-9adc-d9412b3d2ddb","dc7bca41-5aeb-417e-9876-488dcfb5b911"] | |
# 定义 group 组 等同命令行 --group ddn1,ddn2, (可选, 默认 DEFAULT_GROUP) | |
group = ["ddn","ddn","ddn2","DEFAULT_GROUP"] | |
# 设置默认导出 json 和 web 服务附加标签 | |
label = [{name = "env",value = "dev"}, | |
{name = "os",value = "linux"} | |
] | |
ipfile = "/mnt/cxxxx/ip.json" |
默认优先加载本地配置文件
docker 启动 web 服务 Prometheus httpd_sd_config 使用
docker run -itd -e nacos_url=http://nacos-xx.com:8848 -p 8099:8099 typ431127/nacos-check:0.6 | |
访问 http://localhost:8099 |
工具注册到 Nacos
./nacos_check-linux-amd64 register -i 192.168.1.4 -p ":8048" -n ddn-test1 --url http://192.16 | |
8.100.132:8848 | |
./nacos_check-linux-amd64 register -i 192.168.1.4 -p ":8048" -n ddn-test1 --url \ | |
http://192.168.100.132:8848,http://192.168.100.133:8848,http://192.168.100.134:8848 | |
./nacos_check-linux-amd64 register -n ops-test --namespace dc7bca41-5aeb-417e-9876-488dcfb5b911 -g ddn |
执行后工具会开启一个 web 服务并注册到 Nacos 上面,同时可指定多个 Nacos 地址,此功能方便运维排查 Nacos 注册问题。
- -i 指定注册到 Nacos 的 IP 地址
- –namespace 指定命名空间
- -g 指定组
- -p 指定开启端口
- –url 指定 Nacos 服务地址,多个地址, 号分开
- -n 指定注册到 Nacos 的服务名称


注意: 仅注册功能支持多个 nacos 地址写法
主机名解析
因为默认只获取到主机 ip,获取不到主机名, 可以指定 ipfile 解析主机名,有条件可以二次开发对接自己 cmdb, 文件格式如下 (可选)
{ | |
"test1": "10.x.x.x", | |
"test2": "10.x.x.x", | |
} |
./nacos_check-linux-amd64 -i ../ip.json
效果


对接机器人执行命令查询

grafana 展示出图
grafana 控制台导入 grafana.json
此模板默认匹配 blackbox_exporter
