Zookeeper - 在哪里可以找到 Zookeeper 运行 实例的 "real" 版本?

Zookeeper - Where do I find the "real" version of a running instance of Zookeeper?

我最近安装了一个带 Exhibitor 的新 ZK 节点,它开始运行良好。当我执行 telnet localhost 2181 然后 运行 和 stats 查看版本时,即使我安装了 3.4.11,我仍然在输出中看到 3.4.5 构建。我试图找到 ZooKeeper 在哪里读取版本号,但它只是一个 .jar 和一些 lib 文件。你知道我在哪里可以获得我应该 运行ning 的 "real" 版本吗?谢谢!

这是我做的时候看到的 telnet:

myserver:/tmp/zookeeper # telnet localhost 2181
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
Clients:
 /127.0.0.1:53133[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 41
Sent: 40
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
Connection closed by foreign host.

运行 进程 (ps aux | grep zookeeper) 显示:

myuser    19002  0.9  1.2 2618596 49596 ?       Sl   14:02   0:00 /usr/pkgs/java/1.8.0.92/bin/java -Dzookeeper.log.dir=/var/run/zookeeper/log -Dzookeeper.root.logger=WARN,ROLLINGFILE -cp /opt/zookeeper-server/default/bin/../build/classes:/opt/zookeeper-server/default/bin/../build/lib/*.jar:/opt/zookeeper-server/default/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper-server/default/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper-server/default/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper-server/default/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper-server/default/bin/../lib/jline-0.9.94.jar:/opt/zookeeper-server/default/bin/../lib/exhibitor-1.6.0.jar:/opt/zookeeper-server/default/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper-server/default/bin/../zookeeper-3.4.11.jar:/opt/zookeeper-server/default/bin/../src/java/lib/*.jar:/var/run/zookeeper/conf: -server -Xmx1g -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /var/run/zookeeper/conf/zoo.cfg

查了源码,好像有一个叫Info的接口,给出了版本号。可以在这里看到:https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/Version.java

因此,版本文件在构建时完成。

ZooKeeper 支持四个字母的命令,假设您是 运行 本地主机上的 ZooKeeper:

$ echo "status" | nc  localhost 2181 | head -n 1
Zookeeper version: 3.4.9-3--1, built on Fri, 24 May 2019 08:57:53 +0100

使用一些bash魔法,你可以过滤掉主要版本:

$ echo "status" | nc  localhost 2181 | head -n 1 | awk '{ print }' | cut -d "-" -f 1

猫动物园管理员-server.log | grep zookeeper.version

..... 信息服务器 environment:zookeeper.version=3.5.7-f0fdd52973d373ffd9c86b81d99842dc2c7f660e,构建于 02/10/2020 11:30 GMT (org.apache.zookeeper.server.ZooKeeperServer) .....

管理服务器 3.5.0 中的新功能:AdminServer 是一个嵌入式 Jetty 服务器,它为四个字母的单词命令提供 HTTP 接口。默认情况下,服务器在端口 8080 上启动,并通过转到 URL "/commands/[命令名称]" 发出命令,例如 http://localhost:8080/commands/stat
示例:

$  curl -s http://localhost:8080/commands/envi |grep zookeeper.version  
$ "zookeeper.version" : "3.5.8"