我正在尝试为我的 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 应用程序,因此并不是我的应用程序当前响应时间的一个很好的衡量标准。
有人对更好的方法有什么好的建议吗?
干杯,阿方