以zookeeper为例,总结一下supervisor如何才能获取到监控进程的启动命令。
1. 先通过正常途径启动zookeeper
//守护启动的方式,supervisor是无法进行监控的。
[[email protected] bin]# /usr/local/zookeeper-3.4.10/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
2. 获取supervisor的启动命令
[[email protected] bin]# ps -ef | grep zookeeper
root 16053 1 0 10:24 pts/3 00:00:01 /usr/local/jdk8u212-b03/bin/java -Dzookeeper.log.dir=/usr/local/zookeeper-3.4.10/bin/../logs -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper-3.4.10/bin/../build/classes:/usr/local/zookeeper-3.4.10/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
root 16082 7954 0 10:32 pts/3 00:00:00 grep --color=auto zookeeper
获取到supervisor能监控的启动命令:/usr/local/jdk8u212-b03/bin/java -Dzookeeper.log.dir=/usr/local/zookeeper-3.4.10/bin/…/logs -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper-3.4.10/bin/…/build/classes:/usr/local/zookeeper-3.4.10/bin/…/build/lib/.jar:/usr/local/zookeeper-3.4.10/bin/…/lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/…/lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/…/lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.10/bin/…/lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.10/bin/…/lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.10/bin/…/zookeeper-3.4.10.jar:/usr/local/zookeeper-3.4.10/bin/…/src/java/lib/.jar:/usr/local/zookeeper-3.4.10/bin/…/conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper-3.4.10/bin/…/conf/zoo.cfg
3. 调试启动命令
有时候需要指定java的-classpath路径,先手动运行下看看能否正常运行。
[[email protected] bin]# /usr/local/jdk8u212-b03/bin/java -Dzookeeper.log.dir=/usr/loc
al/zookeeper-3.4.10/bin/../logs -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/lo
cal/zookeeper-3.4.10/bin/../build/classes:/usr/local/zookeeper-3.4.10/bin/../bui
ld/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr
/local/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.
10/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.10/bin/../lib/log4
j-1.2.16.jar:/usr/local/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/usr/local/ zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper-3.4.10/bin/../ src/java/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../conf: -Dcom.sun.management .jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper. server.quorum.QuorumPeerMain /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
2019-11-01 10:40:00,617 [myid:] - INFO [main:[email protected]] - Reading configuration from: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
2019-11-01 10:40:00,622 [myid:] - INFO [main:[email protected]] - autopurge.snapRetainCount set to 3
2019-11-01 10:40:00,623 [myid:] - INFO [main:[email protected]] - autopurge.purgeInterval set to 0
2019-11-01 10:40:00,623 [myid:] - INFO [main:[email protected]] - Purge task is not scheduled.
2019-11-01 10:40:00,624 [myid:] - WARN [main:[email protected]] - Either no config or no quorum defined in config, running in standalone mode
2019-11-01 10:40:00,638 [myid:] - INFO [main:[email protected]] - Reading configuration from: /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg
2019-11-01 10:40:00,639 [myid:] - INFO [main:[email protected]] - Starting server
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:host.name=com.sunwayland.pspaceplus
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:java.version=1.8.0_212
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:java.vendor=AdoptOpenJDK
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:java.home=/usr/local/jdk8u212-b03/jre
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:java.class.path=/usr/local/zookeeper-3.4.10/bin/../build/classes:/usr/local/zookeeper-3.4.10/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../conf:
2019-11-01 10:40:00,648 [myid:] - INFO [main:[email protected]] - Server environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-11-01 10:40:00,649 [myid:] - INFO [main:[email protected]] - Server environment:java.io.tmpdir=/tmp
2019-11-01 10:40:00,649 [myid:] - INFO [main:[email protected]] - Server environment:java.compiler=<NA>
2019-11-01 10:40:00,650 [myid:] - INFO [main:[email protected]] - Server environment:os.name=Linux
2019-11-01 10:40:00,650 [myid:] - INFO [main:[email protected]] - Server environment:os.arch=amd64
2019-11-01 10:40:00,650 [myid:] - INFO [main:[email protected]] - Server environment:os.version=3.10.0-327.4.5.el7.x86_64
2019-11-01 10:40:00,650 [myid:] - INFO [main:[email protected]] - Server environment:user.name=root
2019-11-01 10:40:00,650 [myid:] - INFO [main:[email protected]] - Server environment:user.home=/root
2019-11-01 10:40:00,651 [myid:] - INFO [main:[email protected]] - Server environment:user.dir=/usr/local/zookeeper-3.4.10/bin
2019-11-01 10:40:00,659 [myid:] - INFO [main:[email protected]] - tickTime set to 2000
2019-11-01 10:40:00,659 [myid:] - INFO [main:[email protected]] - minSessionTimeout set to -1
2019-11-01 10:40:00,659 [myid:] - INFO [main:[email protected]] - maxSessionTimeout set to -1
2019-11-01 10:40:00,672 [myid:] - INFO [main:[email protected]] - binding to port 0.0.0.0/0.0.0.0:2181
验证没有问题。
4. 配置supervisor配置文件
[program:zookeeper] ;程序名称,终端控制时需要的标识
command=/usr/local/jdk8u212-b03/bin/java -Dzookeeper.log.dir=/usr/local/zookeeper-3.4.10/bin/../logs -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper-3.4.10/bin/../build/classes:/usr/local/zookeeper-3.4.10/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.10/bin/../conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper-3.4.10/bin/../conf/zoo.cfg ; 运行程序的命令
directory=/usr/local/zookeeper-3.4.10/bin/ ; 命令执行的目录
autostart=false
autorestart=true
startretries=3
stopasgroup=true
stopsignal=INT
priority=1
``