New Relic の各製品紹介: New Relic ってアプリケーションパフォーマンス監視ツールじゃないの？

デジカの宮澤です。New Relic の Advent Calendar 1日目です。

New Relic についてあまり日本語で情報をみかけないのと、APM (Application Performance Monitoring) 以外についての情報もあまりみないので、この Advent Calendar では僕の知る範囲で、New Relic について説明していきたいと思います。僕のパートは、知見というより、マニュアル的な解説になると思います。実例は他の方、是非お願いします。

2015年11月12-13日に行われた Future Stack 15 で新機能など発表されたこともあり、そのタイミングでサイトやマニュアルが結構、変わりました。そのため、多少書いている内容に齟齬があるかもしれません。気づいた方は指摘していただけると助かります。

では、初日ということで、１日目は、軽めにざーっと New Relic について説明してみたいと思います。 

また、New Relic 自体、かなり頻繁に UI や機能やプランが変わるので、2015年12月初旬時点と情報ということもご了承ください。

# New Relic とは

New Relic という名前は、New Relic 社の名前でありかつ、New Relic 社が運用するソフトウェアのパフォーマンス分析サービスの名前です。分析サービスと一言で言っても、単一のサービスではなく、複数のサービスの総称です。

2016年4月21日~~2015年12月~~の時点で、New Relic には、7 つのサービス + α があります。New Relic の Lite （無料）アカウントで、だいたい無料で使えます。（データ保持期間や機能制限はあるけど）

<img width="530" alt="software_analytics_cloud2.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/327dbd6b-848b-cb09-2b52-be7855848863.png">

- New Relic APM (エーピーエム)
    - アプリケーションのパフォーマンス監視サービス
- New Relic Browser
    - ブラウザのパフォーマンス監視サービス
- New Relic Servers
    - サーバーのパフォーマンス監視サービス
- New Relic Mobile 
    - モバイルアプリ(iOS, Android)のパフォーマンス監視サービス
- New Relic Synthetics (シンセティクス）
    - Webアプリ、サイトの疎通、障害監視サービス
- New Relic Plugins
    - サードパーティによる各種プラグイン
- New Relic Insights (インサイト）
    - リアルタイム分析ツール(ダッシュボード）

あと、製品ではないが Alert(警告、エラー管理）サービスは製品間を跨いだサービスになっています。Insights もどちらかというと、横断的なサービスですね。

それでは、各サービスをひとつづつ説明していきます。

# New Relic APM (Application Performance Monitoring)

その名のとおり、アプリケーションのパフォーマンスを監視するサービス。

<img width="400" style="border:1px solid #ccc" alt="apm_overview.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/84614878-945a-2e26-3aef-d2547b54a0ab.png">

New Relic と言ってみんなが言うのが、これ。とりあえず、エージェントと呼ばれるライブラリを利用したいアプリのサーバーにデプロイするだけで、後は自動的にデータを収集し、New Relic のサーバーに送り始める。そして、New Relic のAPMの画面で見れる。Rails 使っているなら、gem を追加して、設定ファイルにライセンスキーを設定するだけで終わり。すごい簡単。

インストールするだけで、トランザクションやスループット、エラー率なんかが簡単にわかる。New Relic をぼーっと眺めているだけで、時系列で大体の傾向はわかると思う。

### エージェント

エージェントとは、アプリケーションのデータを収集し、New Relic のサーバーへ送るプラグラムのこと。Java, .NET, Ruby, PHP, Python, Node.js 言語のエージェントが用意されています。その他の言語も Agent SDK という物が用意されているので、それを使えばデータ収集できるっぽいです。上記の言語で最近の環境なら、問題ないと思うけど、結構古い環境の方は、試す前に、[エージェントのマニュアル](https://docs.newrelic.com/docs/agents)にある各言語のサポート環境を見ることをお勧めします。 

ちなみに、最近よく Golang は？って言われるけど、まだ公式には対応していない。コミュニティで開発しているものはあるらしいので、気になる人は使ってみてはどうでしょう。[Github:sky-uk/newrelic-go-agent](https://github.com/sky-uk/newrelic-go-agent)

### プランは、Lite (無料) と Essential(有料) Pro (有料）

プランとして、Lite (無料) と Essential(有料：1ホストあたり 年契約: 75 USドル/月、月契約: 119 USドル/月) と Pro (有料：1ホストあたり 年契約: 149 USドル/月、月契約: 199USドル/月。時間契約: 0.29USドル/時間(最小149USドル/月)）。AWS, Heroku, Azure とかを使っている人には、Standard (無料）が使えるらしい。
※ 2015年2月くらいまで公式サイトに、月額プランの料金も乗っていたが、2016年4月時点では、年契約(annual subscription)のみの金額しか載っていない。

ホストの定義は、物理サーバーもしくは仮想マシンのインスタンス。Docker コンテナのインスタンスはカウントされないらしい。

Lite(無料) と Essential(有料) と Pro(有料)の違いは、データ保持期間と機能制限とサポート。
Lite は、New Relic サイト上で見れるのは、直近24時間のデータだけ。Essentailは、3日。Standardは、1週間。Pro は制限ありません。

公式サイトには、 Essential は、期間限定で利用可能なプロモーション価格とあります。なので、たぶん、一定期間このプランで使っていると、New Relic から問い合わせがくると思う。

英語だけど、[Products, pricing, and billing](https://docs.newrelic.com/docs/accounts-partnerships/partner-integration-guide/new-relic-products-features/products-pricing-billing) というページに多少、Standard について載ってます。

Lite と Essential と Pro の詳しい機能や制限の違いは、[公式サイトの pricing ページの Capabilities](http://newrelic.com/application-monitoring/pricing)を見てください。

APM は、14日間無料で、Pro と同様の機能が使えるので、気になる方は試してみるといいと思います。

# New Relic Browser

その名の通り、ブラウザのパフォーマンスを計測するサービス。

<img width="400" style="border:1px solid #ccc" alt="browser_overview.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/e28128cb-4606-dafd-e5fb-b56b3f4a3d7b.png">

分かりやすくいうと、Google Analytics 的なもの。HTMLに JS を埋め込み、それがデータを収集して、New Relic に送信している。
APM をデプロイすると、デフォルトで、HTML に JS が埋め込まれるようになる。また、収集されたデータは、Insights でも使える。

### プランは、Lite (無料) と Pro (有料）

プランとして、Lite (無料) と Pro (有料：50万ページビューまで：年額契約: 149 USドル/月、月額契約: 199 USドル/月）。

Lite(無料) と Pro(有料)の違いは、データ保持期間と機能制限とサポート。
Lite のデータ保持期間は、1日。Pro は、90日。Pro では、主に、セッショントレース、JS のエラー、Ajax リクエストのモニタリングができるようになる。

詳しくは、[公式サイトの価格表の Capabilities](http://newrelic.com/browser-monitoring/pricing)をみてください。

# New Relic Servers

<b style="color:red">注: 2017年11月4日にサービス停止。(既存有料ユーザーは、2018年5月5日まで）。サーバー監視の後継は、[New Relic Infrastructure](https://qiita.com/kumatronik/items/341fda79857f90e3094b) があるので、そちらを使う。</b>


<img width="400" alt="servers_overview.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/1f8461b1-56d5-f9ab-50ab-cfab64f7e618.png">

サーバーの監視ツール。CPU使用率や DISK IO、ネットワークIO、メモリ、ディスク使用率なんか見れる。使うには、APMのエージェントとは別途専用のパッケージをインストールする必要がある。また、最近、Docker タブも追加された。AWS などのサーバーリソースの監視もここでできるようになりそう。

### プラン
New Relic Server は、New Relic APM のプランに依存するっぽい。無料でも使えるけど、たぶん、データはそんなに貯められない気がする。

# New Relic Mobile

<img width="400" alt="mobile_overview.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/ed939fb1-9756-dc50-63dd-16c725ee880f.png">

モバイルアプリのパフォーマンス監視ツール。アプリやネットワークのパフォーマンス、メモリ使用状況、クラッシュレポート など、OS、デバイス ごとにみることができる。また、今後、バージョントレンド機能といって、アプリのバージョンを並べて、リリース後の特定の期間における各バージョンごとの、新規インストール率、更新率、エラー率などを簡単に比較できる機能も追加される。
無料でも使えるけど、かなり機能制限があるみたい。

### プラン

有料 (Enterprise)は、10万アクティブユーザーの１アプリ辺り: 年額契約 999 USドル/月。月額契約: 1,499 USドル/月。

Lite(無料) と Enterprise(有料)の違いは、データ保持期間と機能制限とサポート。
Lite のデータ保持期間は、1日。Enterprise は、90日。Enterprise では、主に、クラッシュレレポート、ユーザーインタラクションのトレース、ネットワークエラーや地域、デバイス別のパフォーマンスのモニタリングなどができるようになります。詳しくは、[公式サイトの価格表の Capabilities](http://newrelic.com/mobile-monitoring/pricing#)をみてください。

# New Relic Synthetics

<img width="400" alt="synthetics_overview.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/bda96ae9-3e10-3a30-42e0-a414c9a874fe.png">

外部から、Web アプリやサービスの状態管理を行うためのツール。すごい簡単にいうと、Pingdom + α みたいなサービス。

これは、上とは毛色がすこし違って、何かをどこかにインストールする必要はない。New Relic Synthetics の画面で、設定を行うだけ。Ping 機能は無料で使えます。その他に、実際のブラウザ(Chrome)を通して、ページの読み込みが正常にできるか、確認する機能 (Simple Browser) や、Selenium 用のスクリプトを書いてそれを、実行してくれる機能 (Scripted Browser) もあります。それらは有料。

Pingdom を使っている人は、一回試してみてもいいかもしれません。無料だし。

また、有料機能は、2週間は好きに使えるらしいので、試してみたい方は使ってみるといいと思います。

### プラン

有料 (Pro)は、1万アドバンスドチェックまで: 年額契約 69 USドル/月。月額契約: 99 USドル/月。

Lite(無料) と Pro(有料)の違いは、データ保持期間と機能制限とサポート。
Lite のデータ保持期間は、2週間。Pro は、13ヶ月。Pro では、実ブラウザからの 疎通確認や Selenium ベースの遷移チェックができます。詳しくは、[公式サイトの価格表の Capabilities](http://newrelic.com/synthetics/pricing)をみてください。

# New Relic Insights

<img width="400" alt="insights_overview.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/e248c3de-ce32-0d0e-6a48-f81f1e43b57f.png">

Insights は、上で紹介した各製品のデータをクエリ(※NRQL)を書いて、いい感じに表示してくれるダッシュボードサービス。謳い文句は、リアルタイム分析プラットフォーム。

※ NRQL は、New Relic Query Language の略で、SQL の文法 (Select, From, Where とか）をベースに、独自の要素を取り入れているクエリ言語。

Insights は、他のサービスのページの表示では物足りなかったり、もっとこういうデータの見方をしたいという時に役立つツール。また、他のツールはエンジニアよりのツールに対して、Insights は、よりビジネスよりのダッシュボードツールとして役立つと思う。BI ツール的な立ち位置を目指していると思う。

このダッシュボードの強みは、各 New Relic 製品のデータを横断的に１枚のダッシュボード上に表示できることだと思う。それにより、各ツールではバラバラに表示されるデータを総合的な視点で判断ができるようになります。
クエリ元のデータソースとしては、以下のデータを利用できます。
- APM: トランザクション、エラー
- Browser: ページビュー
- Mobile: クラシュデータ、インタラクションデータ、セッションデータ
- Synthetics: チェックデータ、リクエストデータ

また、上記以外のデータの独自データも送信するための API は用意されています。

Data Explorer っていう収集したデータのサンプルを見れるページがあるんだけど、これが、Future Stack 15 (New Relic のユーザーカンファレンス）に併せて、大幅に変更になりました。大分変わったので、前見たことがある人は、一回見てみると便利になっているので、驚くと思います。

### プラン

Insights は、APM Pro を使っている人なら無料で使えたと思う。

Insights のプランは非常に分かりにくく、一応、[7500万イベントまで、月額 250 USドルと公式サイトに書いてある](http://newrelic.com/insights/faq#insights-cost) けど、今後変わる可能性はありそう。（11月まで違ったから）

よって、現状、無料と有料で、機能的な違いはありません。イベント数の上限（がいくらかわからないけど）超えると、有料になるっぽい。

# おわりに

ということで、非常にざっくりと少しづつ、各製品を説明してみました。物足りないとは思いますが、少しでも、各製品がどういったものかイメージができたなら、よかったです。
後日の Advent Calendar で、知っている範囲で各製品を説明していきたいと思います。そちらもよろしくお願いします。