アジョブジ星通信

進捗が出た頃に更新されるブログ。

img.azyobuzi.net に New Relic を導入するまでのお話

f:id:azyobuzin:20130721224345p:plain

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 導入講座でした。さて、まともな開発のお供になるだろうか?乞うご期待。