読者です 読者をやめる 読者になる 読者になる

aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

カジュアルに鯖を監視するNewRelic をAmazon Linux に導入

AWS EC2 CloudWatch PHP Architecture

今っぽい感じの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のダッシュボードでサーバの情報を見るだけ。

登録されていないサーバからのデータを受信すると、自動でサーバ一覧に表示される。

f:id:understeer:20121010135340p:plain

各サーバをクリックすると、詳細情報が見れる。

f:id:understeer:20121010135559p:plain

アラートの閾値を設定すればメモリやディスクも監視可能。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の処理時間の割合も見える。

f:id:understeer:20121010140331p:plain

 DBアクセスの内訳も見える

f:id:understeer:20121010140439p:plain

呼び出しからバックエンドの各処理でどのくらい時間がかかっているか、も可視化できる。

f:id:understeer:20121010140523p:plain