2012年5月19日土曜日

heroku上のpython flaskアプリをNew Relicで監視する

基本ここに書いてある通りでできるけど、いちおうまとめ。
https://newrelic.com/docs/python/python-agent-and-heroku


(1)new_relicをインストールする
ローカル環境にいちおういれる
$ pip install newrelic

heroku上の環境にいれるためにrequirements.txtに以下を追記
newrelic

commitしてherokuにアップする
$ git add requirements.txt
$ git commit -m "hogehoge"
$ git push heroku master


(2)herokuのNEW_RELICアドオンを追加する
$ heroku addons:add newrelic:standard

これをやるだけでnew relic上に自動的にアカウント発行される模様。
ほんと便利。

(3)ちゃんと入ったか確認する
$ heroku run env | grep NEW_RELIC
これで、newrelicのアカウント情報が表示されればOK

テストスクリプトを流す
$ heroku run newrelic-admin validate-config - stdout
*stdoutのハイフンの前にスペースがいるから注意

流したらherokuのWeb画面にログインして
自分のアプリケーションのAddonからNEWRelicを選ぶと
NewRelicの管理画面がでる。
Python Agent Test というのが出てればOK。だと思う。

(4)自分のアプリの監視をする
procfileを編集する。
gunicornを使ってる場合は以下のように書き換えるだけでOK

(変更前)web: gunicorn -b 0.0.0.0:$PORT hogeApp:app
(変更後)web: newrelic-admin run-program gunicorn -b 0.0.0.0:$PORT hogeApp:app

(5)procfileをherokuにアップする
git でpush

おわり









Ubuntu10.04にHerokuコマンドをいれる

Ruby環境をRVMでセットアップした後にいれる

●RVMインストール
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

●.bashrcに以下を追記
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

●.bashrc反映
$  source $HOME/.bashrc

●RVMの依存パッケージを確認し、足りないものがあればいれる
$ rvm list

●今回はpatchが無かったのでPacthだけいれた
$ sudo aptitude install patch

●ruby1.9.2を入れる
$ rvm install 1.9.2 --with-iconv-dir=$HOME/.rvm

●入れたRubyをデフォルトで使うのにする
$ rvm use ruby-1.9.2-p320 --default

●このRuby用のsetつくる
$ rvm --create 1.9.2@myset


●herokuインストール$ gem install heroku --no-ri --no-rdoc

ここまでで基本的には使えるようになる。
が、これだとコマンドライン使えない。たとえばlogsすると

$ heroku logs
こんなエラーがでる
$HOME/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- readline (LoadError)


ので、もう少し作業がいる。

●インストールした場所のreadlineに移動
cd $HOME/.rvm/src/ruby-1.9.2-p320/ext/readline/

●チェック
$ ruby extconf.rb
checking for tgetnum() in -lncurses... no
checking for tgetnum() in -ltermcap... no
checking for tgetnum() in -lcurses... no
checking for readline/readline.h... no
checking for editline/readline.h... no


ということで上のを全部入れるために
$ sudo aptitude install libncurses5-dev libreadline5-dev

●で作りなおし。。
make
make install

●GEMSETも作りなおし
$ rvm --create 1.9.2@myset
$ gem install heroku --no-ri --no-rdoc



これでHerokuコマンドがちゃんと使える