Update 2014-10-09
: IronMQの非同期処理をNewRelicで監視 - Part7: mackerel-agentをFabricでインストール
NewRelicがオープンソースにしたDockerコンテナ管理ツールのCenturionを今度試してみようと思います。その前にNewRelicはしばらく使っていませんでした。NewRelicからDockerコンテナもシステム監視ができるようになっているようです。そういえば2008年くらいにRailsで使って以来です。今回はPythonアプリを監視してみます。
UbuntuのDockerコンテナ
OSのシステム監視をするため、監視対象のDockerコンテナへnewrelic-sysmondをインストールします。
Ubuntuのリポジトリを追加してインストールします。
$ sudo -i |
設定ファイルを/etc/newrelic/nrsysmond.cfg
に作成をします。license_key
はサインアップ後に取得できます。
# nrsysmond-config --set license_key=xxx |
runitのinitファイル
phusion/baseimageを使っているのでコンテナのinitはrunitです。最近initをDockerで使うのは役割の分離的にちょっと違う気がしてきましたが、Docker開発環境ではssh-agentを使いたいのでこのままです。
nrsysmond用のinitファイルを作成します。-f
フラグでフォアグラウンド実行させます。
|
同様にsvlogdのinitファイルです。
|
runファイルには忘れず実行権限をつけます。
$ sudo chmod +x /etc/service/nrsysmond/run |
runitをrestartするため、dockerホストからコンテナをdocker restart
します。
$ docker restart a05a1d9d42ee |
Python Agentのインストール
この前作成したIronMQとFabricアプリをNewRelicのPython Agent
で監視してみます。
newrelic-adminをインストールします。
$ sudo pip install newrelic |
カレントディレクトリに、license_key
を指定してnewrelic.iniの設定ファイルを作成します。
$ cd ~/python_apps/spike_nocelery |
Pythonアプリの監視
newrelic-adminコマンド経由で起動するようにrunitのinitファイルを修正します。
|
runitでは環境変数をファイルに記述して、-e
フラグでディレクトリを指定して使います。
newrelic.ini |
監視は失敗
newrelic.iniでログをdebugモードにしているため、詳細なログが出力されます。
2014-08-27 14:07:09,364 (50/MainThread) newrelic DEBUG - Initializing Python agent logging. |
ログも出力され、Pythonアプリも正常に動作していますが、NewRelicコンソールには表示されません。
This server isn’t hosting any apps that report to New Relic
監視対象のPythonモジュールを使っていないためか、バックグラウンドのCelery、WebアプリのDjangoやFlaskのでないとPython Aegnt
を監視してくれないのかも知れません。
後でこのPythonアプリではデータベース接続もしていくので、監視できるようになるか見ていきます。