0

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

より良いアプローチのための良い提案はありますか?

乾杯、アルフォン

4

2 に答える 2

1

この Railscast は、Rack ミドルウェアに似たものを実装する方法を示しています。おそらく、ニーズに合わせて変更するのは難しくないはずです。

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

于 2009-12-18T09:19:39.647 に答える
1

応答時間は何を示していますか? 代わりに scout や new relic などを使用することを検討しましたか?

于 2009-12-17T20:40:20.597 に答える