img.azyobuzi.net に New Relic を導入するまでのお話
img.azyobuzi.net のパフォーマンス調査ということで導入してみたのですが、変なところで突っかかったのでメモ。
New Relic とは
パフォーマンス監視するアレ。正直私もよくわかってない(おい
環境
Python 2.7 上で動く img.azyobuzi.net 、つまり既存の WSGI アプリケーションに突っ込みます。OS は Ubuntu 12.04、HTTP サーバーは Apache。
えーじぇんとをいんすとーる
大体マニュアル通りにやればおk。
pip install newrelic newrelic-admin generate-config アカウント設定画面の「License key」 設定ファイル(ini ファイル)を保存したいパス
を叩いて、設定ファイル内の app_name とか log_file とかを適当な値にすれば完了。
アプリケーションに寄生してモニターできるようにする
しようとしたら、どうやら現状の mod_wsgi ではできないようです。色々やってみましたができませんでしたし、ドキュメントにもそれっぽいこと書いてあったし。。誰かやり方わかったら教えてください。
というわけで、今回は mod_wsgi を捨てて Gunicorn に移行することで対応しました。 Gunicorn の使い方は適当にググってください。
はい、この作業もドキュメント通りにやります。ドキュメント通りにやればできるのですが、何としてでも mod_wsgi でやろうとして躓いただけです。はい。
一応説明すると、
NEW_RELIC_CONFIG_FILE=設定ファイル export NEW_RELIC_CONFIG_FILE newrelic-admin run-program gunicorn ~ #デーモンとして動かす場合は gunicorn の後に -D なり --daemon なりつける
これを OS 起動時に発動するようにすればいい感じ。 newrelic-admin をデーモンにできなくてアタフタしましたが、 Gunicorn をデーモンとして起動させてもちゃんとトラックされるようです。
あとは Apache 側でリバースプロキシ設定をして完了です。ここで mod_proxy_http を有効にし忘れて躓きましたね。。
まとめ
- mod_wsgi にこだわらない
- newrelic-admin run-program を使うのが一番確実
以上を抑えておけばうまくいくと思います。Manual integration は当てになりません!!もう一度言います。 Manual integration を使って現状のシステムのまま導入しようだとか無茶です。やめましょう。
以上、失敗から学ぶ手っ取り早い New Relic 導入講座でした。さて、まともな開発のお供になるだろうか?乞うご期待。