第2回 アプリの運用監視サービスを活用する:連載:アプリケーションの運用監視(4/4 ページ)
New RelicとApplication Insightsを利用して、Webアプリの死活監視など、各種の情報を取得する方法を解説する。なお、本記事は2015/1/14時点の情報に基づいている
Application Insightsでの性能分析
Application InsightsにもモニターとApplication Insights SDKが提供されており、Webアプリを測定する場合と、サーバーの性能を測定する場合で使い分けを行う。確認したい情報を取得する方法がそれぞれ異なるため、以下の表にまとめた。
やりたいこと | 方法 | 取得できる情報 |
---|---|---|
ASP.NETアプリの性能情報を取得したい | Application Insights SDKをプロジェクトに追加する | アプリの健全性に関する情報。応答時間、リクエスト数(成功/失敗) |
追加の性能情報を取得したい/再デプロイなしでIISの問題を実行中に採取したい | Application Insights Status Monitor PreviewをIISに追加する | サーバーでの例外。平均応答時間 |
Webページの使用状況を知りたい | Application InsightsのJavaScriptをWebページに追加する | アクセスしたページの集計を行う |
Webサイトの正常応答を知りたい | Webテストを追加する(前節で解説) | pingを行い、URLに対する応答時間を調べる |
Ruby/Python/PHP/Wordpress/node.jsのアプリケーション情報を取得したい | GitHubにあるSDKを使用する(Microsoft AppInsights SDKs) | アプリケーションの健全性に対する情報 |
Application Insightsで各種の情報を取得する方法 |
前回Monitoringエージェントをインストールする方法を紹介したが、Azureの新ポータルで監視を行う場合、対象サーバーにステータスモニター(Application Insights Status Monitor)をインストールする(原稿執筆時点ではプレビュー版。Application Insights Status Monitor Preview)。
新モニターが出たことにより、前回紹介したモニターは今後System Center Operations Manager用になるだろう。今後は以下で紹介するモニターを使用することを推奨する。以下はステータスモニターのインストール画面だ。
ステータスモニターはWeb Platform Installer経由でインストールするため、事前にWeb Platform Installerをインストールしておく必要がある。インストール後には自動的にモニターが起動され、最新版のバイナリのダウンロードが実行される。その後、Azureへのサインイン画面が表示されるので、マイクロソフトアカウントとパスワードを入力してサインインをすると、次の画面が表示される。
Application Insightsステータスモニターの設定画面
(1)調査対象のWebアプリを選択する。
(2)テレメトリ(=遠隔地にあるものの状態を確認するための信号データ)送信先を指定する。送信先には、Azureの新ポータルで作成したApplication Insightsを選択する。ドロップダウンに隠されているが[Add Application Insights]ボタンをクリックすることで、テレメトリ情報が送信されるように設定される。
インストール対象のIISアプリがデプロイ済みであれば、上記の[IIS applications]リストボックスに該当仮想ディレクトリに表示される。アプリを選んで、Application Insightsのデータを送る先をそれぞれに選択すればよい。
Application Insightsステータスモニターの設定完了画面
(1)[Restart IIS]ボタンを押すとIISが再起動される。
(2) [Application Insights resource]カラムに値が表示されることで、テレメトリが設定されたことが分かる。
(3)Application Insightsを削除するためのボタン。
テレメトリ先を選択すると、IISを再起動するための[Restart IIS]ボタンが表示される。このボタンをクリックするとIISが再起動され、Application Insightsにデータが送信され始める。送信されたテレメトリを表示しているのが次の画面だ。
Application Insightsのポータル画面
(1)アプリの状態概要を表示する。クリックすると詳細なメトリクスが表示される。
(2)選択時間内のレスポンス詳細情報。
(3)Webブラウザーで表示した際の応答時間。
[アプリケーションの健全性]にサーバーの応答時間やアクセスされたページが表示される。このページで選択時間内におけるWebアプリの処理時間を確認することが可能だ。
その下の[診断]部分には診断情報も表示される。
Application InsightsでSQL処理状況を表示したところ
(1)SQL文の実行状況概要。クリックすると詳細なメトリクスが表示される。
(2)指定時間内でのSQL文の発行状況。
(3)指定時間内におけるSQL処理時間の割合。
[診断]ではアプリの例外、SQL文の使用率を確認できる。現時点ではNew RelicのようにINSERT文、SELECT文などで時間がかかっているといった詳細な情報はとれないようだ。
診断情報の下にはパフォーマンス情報が表示される。
Application InsightsでのSQL Serverパフォーマンスタイムラインの表示
(1)指定時間内におけるSQL処理状況。
(2)指定時間内におけるSQL処理時間、レスポンスタイム、ASP.NET要求間隔、CPU使用率を同時にグラフ化したもの。
(3)各データベースの平均応答時間とアクセス数。
[パフォーマンス]ではSQL Server内における負荷や、ASP.NETのリクエスト、CPU処理時間といった各種性能情報を取得できる。それぞれのグラフをクリックすれば、詳細画面で追加採取する情報を選択することが可能だ。
一番下には利用状況が表示される。
Application Insightsでの利用状況の表示
(1)指定時間内におけるセッション数/ユーザー数/ページビュー数の概要。
(2)指定時間内におけるセッション数詳細グラフ。
(3)アクセスしたブラウザー単位の分類。
[利用状況のタイムライン]の各グラフをクリックすると、該当時間帯にアクセスされたセッション数、使用ブラウザー、セッション応答数やアクセスされたURLが表示される。
サーバーモニター使用時の注意点として、アプリモニターを採取するASP.NETの実行アカウントは通常低い権限であるDefaultAppPoolで実行されていることが挙げられる。もしも、テレメトリ情報がApplication Insightsに送信されていない場合、Performance Monitor Userグループにモニターするアプリケーショングループのユーザーが追加されているか、確認してほしい。(参考:「アプリケーション プール ID」)。
ローカルグループにDefaultAppPoolを追加する
(1)Performance Monitor Usersグループに「IIS APPPOOL\DefaultAppPool」アカウントが追加されていることを確認する。
今回はNew RelicとApplication Insightsを使用して、アプリやサーバーの死活監視、性能分析を行う方法を見た。次回は、New Relicが提供するAPIを利用して、取得する情報をカスタマイズする方法やVisual Studio Onlineを使用して性能測定/ロードテストを行う方法を説明する。
Copyright© Digital Advantage Corp. All Rights Reserved.