カジュアルに鯖を監視するNewRelic をAmazon Linux に導入
今っぽい感じのSaaS型監視サービス NewRelicを Amazon Linuxに入れてみる。( Newvem とか Server DensityとかPingdomとかもある)
New Relic は、エージェントを監視対象ノードに入れておく点は Zabbix等と変わらないが、監視サーバを構築しないですぐに(無料で)始められる、という点がメリット。
監視対象サーバが少ないシステムだと、監視サーバのコスト・運用負荷がデメリットになるので、CloudWatchを補助する目的で、CloudWatchで取れない Load Average, free memory, Disk UsageといったOS内部の情報をカジュアルに一元管理するのに向いている。
特徴を説明したページはこちら。
で、Amazon Linuxに導入する手順。
そのまえに、 New Relicの無償アカウントを作り、License Keyを取得しておく。AWSでnewrelicを使う場合は、こちらからサインアップ。
AWS & New Relic Server & User Monitoring, Website Optimizer, : New Relic
sudo rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm sudo yum -y install newrelic-sysmond sudo nrsysmond-config --set license_key=xxxxxxxx sudo /etc/init.d/newrelic-sysmond start
とすれば、監視エージェント nrsysmondが起動し、NewRelicサーバに定期的に監視データを送信し始める。あとは NewRelicのダッシュボードでサーバの情報を見るだけ。
登録されていないサーバからのデータを受信すると、自動でサーバ一覧に表示される。
各サーバをクリックすると、詳細情報が見れる。
アラートの閾値を設定すればメモリやディスクも監視可能。Freeアカウントだと30分しか統計データを保持しないが、通知と割り切れば十分使える。
アプリケーションサーバの場合、各言語毎の監視モジュールを追加で入れることでさらに詳しい情報を監視可能。
PHPの場合は,エージェントがapacheモジュールとして動作し、Proxyデーモン newrelic-daemon を経由してNewRelicサーバにデータが送信される。
sudo yum -y install newrelic-php5 sudo /usr/bin/newrelic-install install sudo cp /etc/newrelic/newrelic.cfg{,.bak} sudo sed -e "s/REPLACE_WITH_REAL_KEY/xxxxxxxxxxxx/" /etc/newrelic/newrelic.cfg | sudo tee /etc/newrelic/newrelic.cfg sudo /etc/init.d/newrelic-daemon restart sudo /etc/init.d/httpd restart
とすると、以下の様な画面を閲覧できる。PHP/DBの処理時間の割合も見える。
DBアクセスの内訳も見える
呼び出しからバックエンドの各処理でどのくらい時間がかかっているか、も可視化できる。