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アプリではデータベース接続もしていくので、監視できるようになるか見ていきます。