Nacos便携运维命令行工具,支持Prometheus自动发现

960次阅读
没有评论

共计 5170 个字符,预计需要花费 13 分钟才能阅读完成。

Nacos 运维便携命令行检查工具

Github: https://github.com/typ431127/Nacos_check

如果您觉得此工具对你的工作有帮助,可以点击上面的链接地址点一个小星星⭐⭐

方便运维查看 nacos 注册服务,快速查找服务,同时生成 prometheus 自动发现所需要的 json 文件。
golang 运维萌新,学习项目 … 😊

首先我并不是一个专业的开发人员,我只是一个小运维,此工具只为方便工作开发,代码水平一般,大佬勿喷 ……….

  • 支持 Nacos v1 v2 版本, 支持集群模式
  • 快速查找注册服务,支持匹配名称,命名空间,端口,ip,多个服务模糊匹配
  • 支持指定命名空间,默认全部
  • 支持命令行导出 json
  • 支持自定义 Prometheus label
  • 支持 Prometheus 自动发现,file_sdhttp_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 便携运维命令行工具,支持 Prometheus 自动发现

查看 Nacos 集群状态

./nacos_check-linux-amd64 --url http://nacos-0:8848cluster --v2upgrade
Nacos 便携运维命令行工具,支持 Prometheus 自动发现

查找注册服务

./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
Nacos 便携运维命令行工具,支持 Prometheus 自动发现

加载本地配置

每次运行工具都需要指定 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 便携运维命令行工具,支持 Prometheus 自动发现
Nacos 便携运维命令行工具,支持 Prometheus 自动发现

注意: 仅注册功能支持多个 nacos 地址写法

主机名解析

因为默认只获取到主机 ip,获取不到主机名, 可以指定 ipfile 解析主机名,有条件可以二次开发对接自己 cmdb, 文件格式如下 (可选)

{
    "test1": "10.x.x.x",
    "test2": "10.x.x.x",
}
./nacos_check-linux-amd64 -i ../ip.json

效果

Nacos 便携运维命令行工具,支持 Prometheus 自动发现
Nacos 便携运维命令行工具,支持 Prometheus 自动发现

对接机器人执行命令查询

Nacos 便携运维命令行工具,支持 Prometheus 自动发现

grafana 展示出图

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

Nacos 便携运维命令行工具,支持 Prometheus 自动发现
正文完
 0
ddn
版权声明:本站原创文章,由 ddn 2022-08-17发表,共计5170字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。