性能監視サービスNew Relicについて

クラウドの監視・管理サービスについて、第2弾。
性能監視サービスNew Relicについてまとめます。
※下記は、2013年8月末時点の情報です。

(2017/11/1追記)
ここに記載したNew Relicの機能のうち、サーバーリソース監視のNew Relic Serversは、2017年11月14日をもってサービス終了とのことです。

・New Relic Technical Community/Important: Upcoming Changes for New Relic Servers and legacy alerting features
https://discuss.newrelic.com/t/important-upcoming-changes-for-new-relic-servers-and-legacy-alerting-features/49474

後継サービスのNew Relic Infrastructureは、フリープランが用意されておらず、サーバースペック、台数に応じた料金となっています。
(2017/11/1追記ここまで)

isdNew Relicの機能

New Relicは、性能監視サービスです。
https://newrelic.com/

  • 監視対象となるサーバーにエージェントをインストールすることで、自動的に性能監視に関する情報をNew Relicのサーバーに収集します。
    • 性能データは、監視対象サーバー→New Relicの向きで流れます。New Relicから監視対象サーバーへのアクセスはありません。
  • 大きく分けて、サーバーリソース監視とアプリケーション監視の2種類の監視が可能です。
  • アプリケーション監視は、PHP, Java, Ruby, .NET, Pythonに対応しています。また、Apache HTTP, Nginx, MySQL等のミドルウェアの状態を監視するプラグインも多数あります。(こちらは動作確認ができていません。)
  • サーバーリソースの監視項目は下記のとおり。
    • CPU使用率
    • CPU Load Average
    • メモリ・スワップ使用量(バッファ、キャッシュを除いた実質的な使用量が表示されます)
    • ネットワーク転送量
    • プロセス(各プロセスの起動ユーザー、プロセス数、CPU使用率、メモリ使用率)
    • ディスクI/O使用率
    • ディスク使用率
  • アプリケーションの監視項目は下記のとおり。
    • Response Time / レスポンスタイム(ms)
    • Throughput / スループット(rpm)
    • Web Transaction / Webトランザクション(ページ)
    • プログラム処理やDBテーブルごとのアクセス時間など。
    • Apdex Score / Apdexスコア
    • Error Rate / エラー率
    • DBレスポンスタイム(Standard/Proプランのみ)
  • 指定した閾値を超えた場合にアラート通知する機能があります。
    • サーバーリソース監視のアラート通知
      • CPU使用率
      • ディスクI/O使用率
      • メモリ使用率
      • ディスク使用率
    • アプリケーション監視のアラート通知
      • Apdexスコア
      • Error率

サーバーリソース監視のオーバービュー。
対象サーバーはさくらのVPS 2G。
Phisical Memory(メモリ使用率)のグラフで、UsedとSwapが同じ線になっているのはグラフ表示のバグだと思われます。
※スワップ使用量自体は正しい値が取れています。


 

アプリケーション監視オーバービュー。
対象アプリケーションはWordPress。


 

アプリケーション監視のWebトランザクション画面。
DBアクセスにはほとんど時間がかかっていないことがわかります。


 

サーバーリソース監視のアラート通知閾値設定画面。
CPU使用率、ディスクI/O使用率、メモリ使用率、ディスク使用率を指定できます。
赤(Critical)で設定した閾値を超えるとアラートメールを送信します。


 

アプリケーション監視のアラート通知閾値設定画面。
Appdexスコア、エラー率を指定できます。
赤(Critical)で設定した閾値を超えると(Appdexスコアの場合は閾値を下回ると)アラートメールを送信します。


 

isdNew Relicの料金

https://newrelic.com/pricing/

  • 無料のLITEプランでは、直近24時間までのデータ参照が可能です。
    • とくに記述はないので、監視対象のサーバー数の制限はありません。(僕は3台監視できるのを確認しました。)
  • STANDARDプランでは、サーバー1台あたり$24/月で、直近1週間までのデータ参照が可能です。
    • STANDARDプランには、DBレスポンスタイムの分析機能があります。
  • AWSを使用していれば、STANDARDプランが無料で使えます。 https://newrelic.com/aws
    • (のですが、僕はこのことを知らなくて、通常のSign Upを行ってしまいました。)

isdNew Relicの設定

まず、New RelicのサイトでSign Upし、監視エージェントに設定するライセンスキーを取得します。
(ライセンスキーはNew Relicのアカウントで共通で、監視対象のサーバーごとに変更する必要はありません。)
次に、監視対象のサーバーにエージェントをインストールし、ライセンスキーをセットします。
すると、サーバーの情報が自動的にNew Relicに送信され、数分で管理コンソールで性能が表示されます。

リソース監視のためのサーバー設定(Redhat系OSの場合)

New Relicのリポジトリを追加。

# rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm

 

リソース監視エージェントをインストールし、ライセンスキーをセット。

# yum -y install newrelic-sysmond
# nrsysmond-config --set license_key=<LICENSE_KEY>

 

リソース監視エージェントの起動と、自動起動設定。

# /etc/init.d/newrelic-sysmond start
# chkconfig newrelic-sysmond on

 

アプリケーション監視(PHPの場合)のためのサーバー設定(Redhat系OSの場合)

PHP監視エージェントをインストールし、ライセンスキーをセットして、PHPモジュールをインストールする。

# yum -y install newrelic-php5
# export NR_INSTALL_KEY=<LICENSE_KEY>
# newrelic-install install

 

New RelicエージェントとWebサービス Apacheを再起動。

# /etc/init.d/newrelic-sysmond restart
# /etc/init.d/httpd restart

 

Apacheではなく、Nginx + php-fpmであれば、下記のとおり。

# /etc/init.d/php-fpm restart
# /etc/init.d/nginx restart

 

サーバーの設定はたったこれだけです。
簡単ですね!

isd性能監視ツールとNew Relicの長所

アラート通知機能をもつ性能監視を行うことで、下記のメリットがあります。

  • サーバーリソースの枯渇を検知する。
  • サーバーリソースの増減を把握することで、アクセス急増時のスケールアップ、スケールアウトの目安となる。
  • アプリケーションやDBクエリーのボトルネック箇所を検出し、性能改善・チューニングの参考とする。

日本では、性能監視ツールとしては、ZabbixやCacti, Munin, MRTGを使用し、必要に応じて、アラート通知のためNagiosを組み合わせるケースが多いと思います。
これらのツールは多機能でとても便利なのですが、監視対象のサーバーにエージェントをインストールしたり、監視ツールで監視対象のエントリーを設定するのが大変ですね。
監視対象が増えるたびに、毎回手作業でエントリーを追加する必要があります。

New Relicを使うと、こうした運用管理の手間を大きく減らすことができます。
そもそも監視サーバーを用意する必要がありませんし、監視エージェントをインストールするだけで、あとはNew Relicのほうで勝手にグラフ化してくれます。

監視エージェントのインストールもコマンドを順番に実行するだけなので、導入を自動化できます。
Chefのようなサーバー構成ツールに組み込むことができますし、オートスケールサービスやAWS Beanstalkのように、サーバーインスタンスが自動的に生成されるようなサービスの初期設定スクリプトに組み込めば、自動的にNew Relicによる監視が開始されます。

無料プランでは24時間しか性能データを参照できません。
また、アラート通知できる項目はCPUやメモリ、ディスクなど基本的なリソースに限定されています。
ですが、導入・メンテナンスの手間を考えると、運用保守専門のメンバーがいない場合などは、その点を割り切って採用しても十分メリットがあるかと思います。
ただし、監視エージェントが監視対象のサーバー上で動作しているというしくみですので、監視対象サーバーのダウンは検知できないことに注意する必要があります。
サーバーの死活監視については、Pingdomを使うとよいでしょう。

(2014.5.10追記)
その後、サーバーダウン時にアラート通知する’Downtime alerts’機能が追加されました。
(2014.5.10追記ここまで)

また、週単位、月単位、年単位など、中長期的なスパンで性能を監視すると、「○○という機能を導入してからサーバーが重くなった」などの変化に気づくことができます。
New Relicの有料プランを利用するか、従来の性能監視ツールのうち、比較的導入が簡単なツールと併用するのでもよいと思います。

無料で使用開始できるので、ぜひ試してみてください。
AWSのユーザーはトップページではなく、https://newrelic.com/aws からSign Upすると、Standardプランが無料で使用できるようです。

余談になりますが、New Relicは営業活動がとても活発で、有料プランへのお誘いやディスカウントセールのメールがちょこちょこ届きます。
先日、直接電話が来たときはびっくりしました。
→英語でうまく答えられず、メールでやりとりすることにしてもらいました。

(関連記事)
・New Relic MySQL PluginでAmazon RDS for MySQLの性能を監視
https://inaba-serverdesign.jp/blog/20160421/new_relic_mysql_plugin_rds.html

・サーバー管理・監視サービスMackerelについて
https://inaba-serverdesign.jp/blog/20140510/mackerel.html
 

Follow me!