トップ «前の日記(2015/02/01 (日) ) 最新 次の日記(2015/02/03 (火) )» 編集 RSS feed

HsbtDiary


2015/02/02 (月) [長年日記]

[newrelic][rails] Rails で特定のホストでのみ NewRelic Agent を起動する術

NewRelic は素晴らしいけど、Pro は高い($149/ホスト)ので、数十台、数百台でサービスを支えている時に全台に入れるわけにはいかない。何とかできないかね、と雑に

%w[
  foo.example.com
  bar.example.com
].each do |hostname|
  if `hostname`.chomp == hostname
    require 'newrelic_rpm'
  end
end

みたいな奴を、initializers に突っ込んでみたけど、見事に全部無効になってしまった。どうやら newrelic の agent は railtie で initializer の hook に初期化処理を仕込んでいるので、initializer で require すると遅すぎるらしい。困ったなーと調べてみたら require で railtie には全部登録するけど、on/off を newrelic.yml で動的に切り替える。という方法を見つけたのでざっくり試してみた。

http://makandracards.com/makandra/19145-enable-newrelic-monitoring-for-rails-on-specific-hosts-only

エントリでは、host を特定する処理のコードを newrelic.yml で require しろって書いてるけど、これは application.rb でやるのがいいと思う。これで指定したベンチマーク用のホストでのみ newrelic を有効にできるので、安心して Pro プランを契約できる。やったね。