Я пытаюсь настроить пользовательский мониторинг Pingdom моего приложения на Rails и хотел бы создать ответ 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, и поэтому не очень хорошо измеряет текущее время отклика мое заявление.
Есть ли у кого-нибудь хорошие предложения для лучшего подхода?
Ура, Арфон