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 アプリケーションにヒットしていないことを意味するため、アプリケーションの現在の応答時間の実際の測定にはあまり適していません。
より良いアプローチのための良い提案はありますか?
乾杯、アルフォン