在视图中显示Rails响应时间

时间:2009-12-17 20:24:09

标签: ruby-on-rails ruby monitoring sinatra

我正在尝试为我的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中找到了一些resources,但我使用的是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应用程序,因此实际上并不是衡量当前响应时间的一个非常好的方法。我的应用程序。

有没有人对更好的方法有任何好的建议?

干杯,Arfon

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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