可以从下列链接找到process_monitor.sh:
https://github.com/eyjian/libmooon/blob/master/shell/process_monitor.sh
假设:
1) java安装目录为/data/jdk
2) 监控脚本process_monitor监控脚本process_monitor.sh安装目录为/usr/local/bin
3) hadoop安装目录为/data/hadoop
4) hbase安装目录为/data/hbase
5) zookeeper安装目录为/data/zookeeper
可以通过jps查看到进程ID,然后使用kill命令杀死进程,查看监控重拉起效果。
process_monitor.sh每隔2秒(由变量monitor_interval指定)检查一次,发现进程不存在时,立即启动。
假设运行用户为root,则process_monitor.sh的日志文件为/tmp/process_monitor-root.log,
假设运行用户为test,则process_monitor.sh的日志文件为/tmp/process_monitor-test.log,以此类推。
可以通过tail -f观察process_monitor.sh的日志,来了解process_monitor.sh的运行。
process_monitor.sh带两个参数,第一个参数是被监控的进程对象,process_monitor.sh依靠第二个参数重启被监控对象。
第一个参数又分两部分,第一个空格前的部分,和空格之后的部分。
第一部分为被监控对象的进程名称,对于java程序,进程名是java,而不是jar包的名称。
第二部分为参数部分,可有可无,但正是通过它来区分不同的被监控对象,对于java、shell程序等是必须的。
另外,process_monitor.sh对参数部分是采取模糊部分匹配方式。
可以通过ps aux命令来确定进程名称和参数。
crontab配置如下:
# 监控HDFS NameNode
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_namenode" "/data/hadoop/sbin/hadoop-daemon.sh start namenode"
# 监控HDFS切换主备NameNode程序
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_zkfc" "/data/hadoop/sbin/hadoop-daemon.sh start zkfc"
# 监控HDFS JournalNode
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_journalnode" "/data/hadoop/sbin/hadoop-daemon.sh start journalnode"
# 监控HDFS DataNode
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_datanode" "/data/hadoop/sbin/hadoop-daemon.sh start datanode"
# 监控HBase Master
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_master" "/data/hbase/bin/hbase-daemon.sh start master"
# 监控HBase thrift2
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_thrift2" "/data/hbase/bin/hbase-daemon.sh start thrift2 --framed -nonblocking"
# 监控ZooKeeper
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dzookeeper" "/data/zookeeper/bin/zkServer.sh start"
# 监控HBase regionserver
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_regionserver" "/data/hbase/bin/hbase-daemon.sh start regionserver"
# 监控YARN ResourceManager
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_resourcemanager" "/data/hadoop/sbin/yarn-daemon.sh start resourcemanager"
# 监控YARN NodeManager
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java -Dproc_nodemanager" "/data/hadoop/sbin/yarn-daemon.sh start nodemanager"
# 监控HiveServer
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java HiveServer2" "/data/gongyi/hive/bin/hiveserver2 &"
# 监控Hive MetaStore
* * * * * /usr/local/bin/process_monitor.sh "/data/jdk/bin/java HiveMetaStore" "/data/gongyi/hive/bin/hive --service metastore &"