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

Rails app to check the status of a server

我想解决一个问题,我们手动检查 webapp/server 是否为 up/down。我想构建一个可以自动执行此任务的 rails 应用程序。

考虑我的应用 url 是:HostName:PORT/Route?Params(在 url 中可能有也可能没有端口)

我查了'net/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>')

当应用向下抛出 'Failed to open TCP connection to URL' 这是正确的。

你们能帮我找到一些新的解决方案吗?或者我该如何改进上面的实现?

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

    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

刚刚遇到这个老问题。 Net::HTTP 方法 gethead 不会引发异常。所以改用其中之一。

def up?(site)
  Net::HTTP.new(site).head('/').kind_of? Net::HTTPOK
end

up? 'www.google.com' #=> true