Отображение времени отклика Rails - PullRequest
0 голосов
/ 17 декабря 2009

Я пытаюсь настроить пользовательский мониторинг 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, и поэтому не очень хорошо измеряет текущее время отклика мое заявление.

Есть ли у кого-нибудь хорошие предложения для лучшего подхода?

Ура, Арфон

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

В этом Railscast показан способ реализации чего-то похожего на промежуточное программное обеспечение Rack, которое, вероятно, не должно быть сложно изменить в соответствии с вашими потребностями.

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

1 голос
/ 17 декабря 2009

На что указывает время ответа? Рассматривали ли вы вместо этого что-то вроде разведчика или новой реликвии?

...