如何在java中查看storm的状态?

时间:2014-10-29 19:41:25

标签: java apache-storm

现在我在本地计算机上配置了风暴群集。现在我知道在开始风暴之前你必须启动nimbus然后是主管,最后ui通过风暴命令。

现在我正在编写一个Java程序,我想检查我的风暴集群的状态是否有效。

像:

if(stormWorking()){
//do this
}
else{
//do this
}

现在我如何检查我的风暴群集是否成功运行?

3 个答案:

答案 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使用的端口。如果缺少任何端口,那么现在您的系统出现问题。