Rails应用程序检查服务器的状态

时间:2017-08-06 10:18:52

标签: ruby-on-rails http weblogic net-http

我想实现一个问题,我们手动去检查一个webapp / server,如果它是up / down。我想构建一个可以自动执行此任务的rails应用程序。

考虑我的应用网址是:主机名:PORT /路由?参数(可能有也可能没有网址中的端口)

我检查了网络/ http'

def check_status()
      @url='host'
      uri = URI(@url)
      http = Net::HTTP.new(@url,port)
      response = http.request_get('/<route>?<params>')
      if response == Net::HTTPSuccess
        @result='Running'
      else
        @result='Not Running'
      end
    end

我正面临着错误,

response = http.request_get('/<route>?<params>')

当应用程序出现故障时,无法打开与URL的TCP连接&#39;这是正确的。

你们能帮我找一些新的解决方案,或者我如何改进上述实施?

2 个答案:

答案 0 :(得分:1)

由于它按预期工作,你只需要处理应用程序关闭时返回的错误,将其包装在一个救援块中。

    def check_status()
      @url='host'
      uri = URI(@url)
      http = Net::HTTP.new(@url,port)
      begin
        response = http.request_get('/<route>?<params>')
        rescue TheClassNameOfThisErrorWhenSiteIsDown
          @result = 'Not Running'
        end
        if response == Net::HTTPSuccess
          @result='Running'
        else
          @result='Not Running'
        end
      end
    end

答案 1 :(得分:0)

只是碰到了这个老问题。 Net :: HTTP方法Shell("c:\curl.exe https://xxxxxxx.service-now.com/sys_report_template.do?CSV&jvar_report_id=676dbfdadb2637489ec9de1a489xxxxx -o output-name-xxxx.csv") get不会引发异常。因此,请使用其中之一。

head