OpsJAWS: やってみようシリーズ] NewRelic APM(Application Performance Monitoring)~その①
Partner SA 酒徳です。こんにちは。そろそろ夏も本番を迎え、暑い夏はクーラーのきいた部屋でゆっくり、アプリケーションのパフォーマンス モニタリングでもしていると暑さもしのげていいかもしれませんw。さて、本日は日商エレクトロニクス小沢様にNewRelic を使ったアプリケーション モニタリングに関してご詳細頂きます。
みなさんこんにちは。日商エレクトロニクスの小沢と申します。
前回は「New Relicのはじめかた」と題し、New Relicのエージェントのインストールを行いアプリケーションやインフラストラクチャの性能監視を始めるところまでを解説させて頂きました。
今回~次回の二回にわたり、APMエージェントを使ったアプリケーションの性能監視を実際に見ていきます。まず今回は「APM~その①」ということで、ざっとNew Relic APMの概要をお話しできればと思います。
<<アジェンダ>>
- APM概説
- アプリケーションの中へDeepDiveできる
- プロビジョニングなしで監視をスタート
- 対応する言語
- 主なモニタリング画面の紹介
- 最初の画面(APMダッシュボード画面)
- Overview
- Service Maps
- Transactions
- Databases
- 次回予定
APM概説
1.1 アプリケーションの中へDeepDiveできる
従来からのアプリケーション性能測定手法として、測定対象のトランザクションを走らせてリクエストからレスポンスまでにかかる時間をみるという方法があります。この方法ではアプリケーション全体の処理時間(外形的な、リクエストからレスポンスまでの間のTAT)を把握することができます。
一方、昨今のLAMPスタックなどで構成されるウェブアプリケーションはフロントエンド、処理エンジン、データベースアクセス周りなど、様々な要素から構成されています。また一概に処理時間といっても負荷は低いが体感として時間がかかる場合もあれば、CPU時間を消費し高負荷であるがゆえに処理時間がかかる場合もあります。そのため、一般的に開発者は改善ポイントを探るため、アプリケーションのコード各所に時刻ログを仕込んで各処理ごとのTATを細かく測定したり、負荷測定したい機能だけを切り出した単独プログラムを製作しtime/timexコマンドで実測するなど、さまざまな手間を掛ける必要に迫られます。
New Relic APMはアプリケーションの動作環境(言語や条件によってはコード)にエージェントを適用するだけで、これらアプリケーションの構成要素を自動的に分解のうえ把握し、各々の箇所でどのような性能状況にあるのかをビジュアルに可視化できます。
AWSに代表されるクラウド上でサービスを展開することが一般的となった現在、ビジネスの速度、サービスの品質はCI/CDサイクルの速度と比例すると言ってもよいわけですが、このCI/CDサイクルを回すにあたり、改善すべき性能ボトルネックを探るための時間もまた短いに越したことはないことは、みなさんにおいても異論のないところだと思います。
1.2 プロビジョニングなしで監視をスタート
前回の手順にしたがいエージェントをインストールするだけで、New Relic APMはアプリケーションがどのように構成されているかを自動で把握し、デフォルト(※)で監視対象であるトランザクション性能やデータベースアクセス性能などを監視し始めます。監視を始めるにあたり、細かいプロビジョニングは必要ありません。
(※)独自の監視項目もカスタムメトリクスやPLUGIN機能を使うことで可能です。
また、New Relic APMはエージェントが取得した値だけではなく、アプリケーションに対して一般的にエンドユーザが感じる快適さの指標値(「Apdexスコア」と呼びます)も自動的に計算/取得し、ウェブ上のダッシュボードに掲示します。(厳密にエンドユーザの満足度を測定しようとすれば当然サービスの種類やユーザの層により基準が変わってくるかとは思いますが、)一般的に満足かどうかの指標値をプロビジョニングの必要なく参照できるというのはNew Relic APMの大きな特色の一つです。
(なお、モニタリング対象値の閾値超過による各種アラート発報などの動作は、別途閾値設計・設定が必要です)
1.3 対応する言語
New Relic APMのエージェントを導入できる(※)対応言語は2017年3月現在、以下の7言語になります。
(※)このほかの言語で作成されたアプリケーション、またパッケージソフトウェアなど他者が作成したアプリケーションを監視する場合は、そのアプリケーションのAPIなど独自の方法で取得した値をカスタムメトリクスとしてNew Relicに登録したり、PLUGIN機能を用いて監視することが可能です。
- Java
- PHP
- .NET
- js
- Python
- Ruby
- Go
ちょうど、AWSのElastic BeansTalkが対応している言語と同じですね。
主なモニタリング画面の紹介
2.1 最初の画面(APMダッシュボード画面)
APMの監視画面は、New Relicにログイン後、画面上部の[APM]をクリックし表示します。左上の[Applications]をクリックすると、監視対象のアプリケーションの一覧が表示されます。
前回New Relic APM Agentのインストール手順についてご紹介しましたが、問題なくRuby Agentが起動していれば、このApplication一覧にアプリケーション名が表示されているはずです。今回はRedmineサーバ(LAB244_Redmine(Ruby))を例に各ダッシュボードの内容について紹介したいと思います。
2.2 OverView
左端の[MONITORING]-[Overview]を選択すると、同じ時系列で発生したアプリケーションのボトルネック・品質・イベント情報のサマリ結果を1画面で確認することができます。
・ボトルネックの可視化
Web transactions time
Webアプリケーションのトランザクション時間として、アプリケーション(Ruby)、ミドルウェア、データベース、外部呼出し(External Service)などのカテゴリに分類して、レスポンスの応答時間と合計時間の関係性を確認することができます。Non-webを選択することで、Webアプリケーション以外も確認することができます。
・品質の可視化
Apdex Score
Apdex Alliancで標準化された、ユーザ満足度を表す指標になります。レスポンス時間とリクエスト数を元に算出することができ、1.0~0.0の範囲でユーザの満足度を確認することができます。1.0であればユーザはアプリケーションのレスポンスに満足し、0に近づくほどレスポンスに不満を抱くことになります。
Throughput
アプリケーション全体、または特定Webトランザクションの、スループット(RPM:1分毎のリクエスト数)を確認することができます。
・ボトルのネックの詳細
Transactions
ボトルネックになりうる時間を要しているWebトランザクションのTop5を確認することができます。
・エラーの発生状況
Errorrate
現在の時間軸で発生したエラー数が表示されます。
・イベントの発生状況
Application activity
Alertで検知したイベントの状況一覧を確認することができます。
・稼動インフラの状況
アプリケーションが稼動している個々のホストとインスタンスに関するデータを確認することができます。New Relic Infrastructureと連携すれば、ホスト名をクリックするだけで、対象ホストにフィルタされた状態でComputeページを表示することもできます。
2.3 Service Maps
左端の[MONITORING]-[Service maps]を選択すると、マイクロサービス間の相関を自動的に検出し描写することができます。今回の例では、クライアントであるBrowserと1つのRubyアプリケーション (Ruby App)、そして2台のDBサーバ(Database)の各パフォーマンス状況の相関を確認することができます。
自動描写されたService Mapsは、必要な箇所のみ表示したり、拡大・移動など自由に変更することも可能です。また、詳細なパフォーマンス状況を確認したい場合は、該当のMapをクリックすることで、直接APMやBrowserのダッシュボードに移動することも可能です。
2.4 Transactions
左端の[MONITORING]-[Transactions] をクリックすると表示されるページは、各トランザクションの処理時間(トランザクションの処理時間、スループット、トランザクショントレース)関連のメトリクスが参照可能です。
また、画面左方では、トランザクションの処理時間(CPU時間のかかる順、平均レスポンスタイムの遅い順、Apdexスコアがよくない(不満な)順、スループット、の4種で、いずれかをプルダウンで選択可能)でソートした処理の一覧をランキング形式で表示します。ランキング表示された各トランザクションの呼び出しをクリックすると、アプリケーションの詳細性能情報(トランザクションの処理時間内訳グラフ、およびトランザクションの処理内訳内容)を参照することができます。
2.5 Databases
左端の[MONITORING]-[Databases] をクリックすると表示されるOverviewページは、各データベース操作の処理時間(CPU時間、クエリ応答時間、スループット)関連のメトリクスが参照可能です。
また、画面左方では、前述の各処理時間でソート(プルダウンで選択可能です)した処理の一覧をランキング形式で表示します。ランキング表示された各データベースの呼び出しをクリックすると、前述の処理時間を表すグラフ、および存在する場合はSlowクエリを参照することができます。
次回予定
今回はNew Relic APMの概要をざっくりお話しさせて頂きました。次回はウェブベースのアプリケーションによるサービスのデモを用いたボトルネック探り出しの手法など、もう少し具体的なお話をさせて頂く予定です。お楽しみに。
|
ライセンス体系とコスト
弊社からトライアルを申込みいただくと30日間有料(PRO)プラン全機能をお試し頂くことができます。30日を経過しても自動的に無料(LITE)プランが適用され、機能は制限されますが継続して利用が可能です。 トライアル期間内に有料(PRO)プランへの正式契約を頂いた場合、お試しいただいてるすべての機能を継続して利用でき、翌月1日から課金が開始されます。ちなみに、日本のお客様にじっくり検証していただけるよう、30日間という期間倍増の無料トライアルを設けさせていただきました。
有料(PRO)プランの料金体系はこちらになります。
お問い合わせ先
1.一般お問い合わせ先
製品情報や一般的なお問い合わせは以下からお願いします。
日商エレクトロニクス:New Relic特設サイト
日商エレクトロニクス株式会社のWebフォームからどうぞ。
- 技術お問い合わせ先
技術的にご不明な点はサポートコミュニティに投稿して頂ければご対応します。New Relicの技術問い合わせに関する日本語でのオンラインWEBコミュニティになります。LITE(無料)およびNew Relic PRO(有料)プランを問わず、また日商エレクトロニクス契約ユーザおよび米国New Relic直接契約ユーザを問わず、公開の場で日商エレクトロニクスによる技術サポートを提供します。
日商エレクトロニクス:New Relic サポートコミュニティ
尚、有料版をご契約のお客様は電子メールによるOne to Oneサポートもご提供しております。
エンジニアブログ
弊社エンジニアが投稿しているブログです。New Relicに関する情報もあります。
日商エレクトロニクス:New Relic 製品ブログ
Qiita: ブログ
セミナー情報
セミナーを随時開催しています。詳しくはこちらで告知しております。
****
OpsJAWS メインページはこちら。
クラウド運用にご興味ある方は、こちらからOpsJAWSに登録ください。
コメント