可以从下列链接找到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 &"