我如何在 zookeeper zkServer.cmd 中使用端口启用远程 jmx
How do i enable remote jmx with port in zookeeper zkServer.cmd
这是我的 zkServer.cmd
文件:
@echo off
setlocal
call "%~dp0zkEnv.cmd"
set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
echo on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*
endlocal
首先获取主机名(或可达IP,例如lan/public/NAT地址):
hostname -i
# or find ip
ip a
接下来将以下选项添加到 ZOOMAIN(假定主机名 my.remoteconsole.org 和所需端口 8989)
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=8989
-Djava.rmi.server.hostname=my.remoteconsole.org
有关 java docs (http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html 中可用选项的更多详细信息。
skServer.sh 脚本将 运行 zkEnv.sh 脚本依次查找脚本 '../conf/zookeeper-env.sh'
在 conf 文件夹中创建一个名为 zookeeper-env.sh
的文件
将此粘贴到文件中并重新启动 Zookeeper:
JMXLOCALONLY=false
JMXDISABLE=false
JMXPORT=4048
JMXAUTH=false
JMXSSL=false
在服务器启动中添加 org.apache.zookeeper.server.quorum.QuorumPeerMain。
class org.apache.zookeeper.server.quorum.QuorumPeerMain 将启动 JMX 可管理 ZooKeeper 服务器。 class 在初始化期间注册适当的 MBean 以支持实例的 JMX 监视和管理。
除了上面Marcell du Plessis的回答,如果你运行zookeeper作为systemd服务,那么你可以在环境变量中指定jmx端口。
[Unit]
Description=Apache Kakfa Zookeeper
Requires=network.target
After=network.target
[Service]
Type=simple
User=user
Group=users
ExecStart=/your-zookeeper-install-path/bin/zkServer.sh start
ExecStop=/your-zookeeper-install-path/bin/zkServer.sh stop
TimeoutStopSec=180
Restart=on-failure
Environment="JMX_PORT=9999"
[Install]
WantedBy=multi-user.target
Alias=zookeeper.service
这是我的 zkServer.cmd
文件:
@echo off
setlocal
call "%~dp0zkEnv.cmd"
set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
echo on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*
endlocal
首先获取主机名(或可达IP,例如lan/public/NAT地址):
hostname -i
# or find ip
ip a
接下来将以下选项添加到 ZOOMAIN(假定主机名 my.remoteconsole.org 和所需端口 8989)
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=8989
-Djava.rmi.server.hostname=my.remoteconsole.org
有关 java docs (http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html 中可用选项的更多详细信息。
skServer.sh 脚本将 运行 zkEnv.sh 脚本依次查找脚本 '../conf/zookeeper-env.sh'
在 conf 文件夹中创建一个名为 zookeeper-env.sh
的文件将此粘贴到文件中并重新启动 Zookeeper:
JMXLOCALONLY=false
JMXDISABLE=false
JMXPORT=4048
JMXAUTH=false
JMXSSL=false
在服务器启动中添加 org.apache.zookeeper.server.quorum.QuorumPeerMain。
class org.apache.zookeeper.server.quorum.QuorumPeerMain 将启动 JMX 可管理 ZooKeeper 服务器。 class 在初始化期间注册适当的 MBean 以支持实例的 JMX 监视和管理。
除了上面Marcell du Plessis的回答,如果你运行zookeeper作为systemd服务,那么你可以在环境变量中指定jmx端口。
[Unit]
Description=Apache Kakfa Zookeeper
Requires=network.target
After=network.target
[Service]
Type=simple
User=user
Group=users
ExecStart=/your-zookeeper-install-path/bin/zkServer.sh start
ExecStop=/your-zookeeper-install-path/bin/zkServer.sh stop
TimeoutStopSec=180
Restart=on-failure
Environment="JMX_PORT=9999"
[Install]
WantedBy=multi-user.target
Alias=zookeeper.service