我想监控一些服务,这些服务需要重新启动,当他们下降,我发现了一个神奇的工具monit
。对于Zookeeper
,它可以正常工作,因为我得到了matching "QuorumPeerMain"
这样的条件,如下面的monitrc
文件
check process Zookeeper matching "QuorumPeerMain"
start program = "path/to/zkServer.sh start"
stop program = "path/to/zkServer.sh stop"
同样,我想监控这些:hadoop, yarn和hbase
check process Hadoop matching "?"
start program = "startorstop.sh start" #equivalent to start-dfs.sh
stop program = "startorstop.sh stop" #equivalent to stop-dfs.sh
应该在的位置写什么?
这些是问题
- 在hadoop的情况下,可能有一个机会,这些向下
NameNode
,DataNode
,SecondaryNameNode
。Monit Doc说"选择了具有最高正常运行时间的最匹配的父级">。例如,如果DataNode down,它仍然考虑NameNode,并且不会尝试重新启动hadoop
。另一个选项是使用pid文件,我无法在/var/run/
中找到hadoop的pid文件 - 我想要一个自上而下的方法(不完全)。仅启动
zookeeper
后,我想启动其余的服务,如hbase
,hadoop
和yarn
我有一种方法来启动NameNode
,DataNode
,SecondaryNameNode
独立使用shell脚本,即hadoop-daemon.sh
,所以在我的监视器confNameNode
看起来像
感谢@OneCricketeer的评论,这样我就可以找到一种独立启动这些过程的方法
check process NameNode matching "NameNode"
start program = "startorstop.sh start" #hadoop-daemon.sh start namenode
stop program = "startorstop.sh stop" #hadoop-daemon.sh stop namenode
group hadoop
对于我问题的另一部分,我得到了depends
选项。有关更多细节,请参阅此处的服务依赖关系. 在我的例子中,当DataNode
出现故障时,我想重新启动HRegionServer
。在下面conf works
check process HRegionServer matching "HRegionServer"
start program = "startorstop.sh start" #hbase-daemon.sh start regionserver
stop program = "startorstop.sh stop" #hbase-daemon.sh stop regionserver
depends on DataNode
check process DataNode matching "DataNode"
start program = "startorstop.sh start" #hbase-daemon.sh start datanode
stop program = "startorstop.sh stop" #hbase-daemon.sh stop datanode