0

我正在尝试为我的 Rails 应用程序设置自定义 Pingdom 监控,并希望制作一个如下所示的 XML 响应:

<?xml version="1.0" encoding="UTF-8"?>
<pingdom_http_custom_check>
  <status>OK</status>
  <response_time>210.22</response_time>
</pingdom_http_custom_check>

其中 response_time 值是 Rails 呈现 XML 响应所用的时间。

我找到了一些使用 Mongrel 执行此操作的资源,但我使用的是 Apache Passenger。

我有一个作为 Sinatra-Metal 端点实现的解决方案,如下所示:

class Pingdom < Sinatra::Base  
  set :views, "#{RAILS_ROOT}/app/views/metal"
  get '/pingdom' do
    @start_time = Time.now
    builder :pingdom
  end
end

然后我有一个构建器视图:

xml.instruct!
xml.pingdom_http_custom_check do |pingdom_http_custom_check|
  pingdom_http_custom_check.status("OK")
  pingdom_http_custom_check.response_time((Time.now-@start_time)*1000)
end

(注意 response_time 以毫秒为单位)。

这个实现足以检查应用程序是否启动,但它是一个金属端点这一事实意味着它实际上并没有命中主 Rails 应用程序,因此并不是我的应用程序当前响应时间的一个很好的衡量标准。

有人对更好的方法有什么好的建议吗?

干杯,阿方

4

2 回答 2

1

这个 railscast 展示了一种实现类似于 Rack 中间件的方法,可能不应该很难修改以满足您的需求。

http://railscasts.com/episodes/151-rack-middleware

于 2009-12-18T09:19:39.647 回答
1

响应时间表示什么?您是否考虑过使用侦察兵或新遗物之类的东西?

于 2009-12-17T20:40:20.597 回答