现在我在本地计算机上配置了风暴群集。现在我知道在开始风暴之前你必须启动nimbus然后是主管,最后ui通过风暴命令。
现在我正在编写一个Java程序,我想检查我的风暴集群的状态是否有效。
像:
if(stormWorking()){
//do this
}
else{
//do this
}
现在我如何检查我的风暴群集是否成功运行?
答案 0 :(得分:2)
您可以使用 monit [1] 守护程序原理并检查.pid文件。只需检查每个Storm进程是否需要正常工作:
cat /etc/monit.d/storm
check process storm-nimbus with pidfile /var/run/storm/storm-nimbus.pid
start program = "/sbin/service storm-nimbus start"
stop program = "/sbin/service storm-nimbus stop"
check process storm-supervisor with pidfile /var/run/storm/storm-supervisor.pid
start program = "/sbin/service storm-supervisor start"
stop program = "/sbin/service storm-supervisor stop"
check process storm-ui with pidfile /var/run/storm/storm-ui.pid
start program = "/sbin/service storm-ui start"
stop program = "/sbin/service storm-ui stop"
check process storm-logviewer with pidfile /var/run/storm/storm-logviewer.pid
start program = "/sbin/service storm-logviewer start"
stop program = "/sbin/service storm-logviewer stop"
[1] Monit是一个用于管理和监控Unix系统的小型开源实用程序http://mmonit.com/monit/
答案 1 :(得分:0)
我对此没有明确的答案,但您可以尝试以下几个选项来检查它是否有帮助:
1)通过做ps -ef | grep StormNimbus
之类的事情来寻找风暴过程ID。如果它存在,你可以确定该服务已经启动。
2)使用Java创建Thrift
客户端,并使用NimbusUpTime
类提供的get_nimbus_uptime_secs
方法查找ClusterSummary
..一个非常简单的示例代码可能看起来像以下
Map conf = Utils.readStormConfig();
conf.put(Config.NIMBUS_HOST, "xx.x.x.xxx");
Client client = NimbusClient.getConfiguredClient(conf).getClient();
// get the cluster summery object
ClusterSummary csummery = client.getClusterInfo();
// look for nimbus up time
int uptime = csummery.get_nimbus_uptime_secs();
如果正常运行时间具有非零值,则表示您的群集已启动并正在运行。
答案 2 :(得分:0)
我认为最快的方法是创建一个shell脚本来检查Storm使用的端口。如果缺少任何端口,那么现在您的系统出现问题。