APMインサイト(.NETエージェント版)
APMインサイトでは、ユーザー満足度の認識・分析を比類なきレベルで可能とし、.NET Webトランザクションのすばやいトラブルシュートを支援します。この包括ソリューションでは、複雑な.NETアプリケーションのパフォーマンスを、エンドユーザーからデータベースにわたり、あらゆる視座で監視できます。
.NET Webトランザクションの監視
.NETトランザクションにAPMインサイトを設定するには、APMインサイトのエージェントを、アプリケーション サーバーに展開する必要があります。.NETアプリケーションに組み込まれたエージェントは、データ(メトリック、トレース)を収集し、APMインサイト サーバーに送出、パフォーマンス グラフがそこで作成されます。
インストールの要件
- アプリケーションがMicrosoft .NET Frameworkバージョン3.0以上で動作すること。
- IIS 6.0以上。
APMエージェントのインストール(.NETエージェント版)
- APM > APMインサイト と選択してださい。
- .NETタブをクリックし、説明にしたがってエージェントをダウンロードします。
- ダウンロードをクリックし、.msiファイルを入手してください。
- .msiファイルを実行します。 これにより、インストール フォルダーの選択画面が開きます。
- 検索をクリックし、フォルダー パスを選択し、.NETエージェントをインストール。次へをクリックします。
- エージェントを起動する場合、次のウィンドウのスタートアップ オプションの下で、インストール後にエージェントを開始するのチェックボックスを選択してください。次へをクリックすると、エージェントのインストールが始まります。
- インストール終了前に、.NETエージェント設定画面が表示されます。
- ログイン後、ライセンス キーを、Site24x7 APMインサイトのホームページから、コピー・ペーストしてください。
- 保存ボタンのクリックで、インストールが完了します。
- これによって、.NETエージェントの準備が整い、サーバーで実行するASP.NETアプリケーションがすべて、監視できるようになります。収集データが、Site24x7 APMインサイトのページに表示されるまで、数分かかります。IIS上のすべての.NET Webアプリケーションが監視対象です。
エージェントの管理
インストール後に可能な作業は、.NETエージェントの開始、停止、編集です。
.NETエージェントの開始
- インストール時に、インストール後にエージェントを開始する チェックボックスを選択しなかった場合は、Windowsサービス マネージャーから、エージェントのサービスを手動で起動してください。サービス名は、APM Insight .NET Agentです。
- エージェント サービスが起動すると、IISがリセットされ、プロファイラーの環境変数がセットされます。
.NETエージェント設定の編集
- スタート メニューで、APMインサイト.NETエージェントのフォルダーから、設定の編集をクリックし、エージェント設定の編集を行います。
- これによって、.NETエージェントの設定ダイアログ ボックスが開きます。変更を行った際は、保存をクリックして設定ファイルを更新してください。
.NETエージェントへのpingを停止
- エージェント サービスは、Windowsサービス マネージャーからマニュアルで停止できます。これによって、アプリケーションとサービスのIPC接続はクローズとなります。プロファイラー変数はシステム環境変数から削除され、プロファイラーは無効となります。IISのリセットも行います。
- .NETエージェントの開始で上述した通り、エージェントはマニュアルで再起動できます。
- エージェントのアンインストールは、スタート メニューから行います。.NETエージェントのアンインストールを、スタート メニューのAPM Insight .NET Agentフォルダーからクリックし、エージェントをアンインストールしてください。
APMインサイト設定
- 一部の項目は、クライアントから操作できません。apminsight.confファイルから設定してください。
- 詳細は、APMインサイト設定オプションをご覧ください。
アプリ フィルターの設定
アプリケーション フィルターは、IISサーバーから監視対象のアプリケーションを指定するのに役立ちます。
設定ダイアログでのWebアプリケーション フィルター
エージェントのバージョン2.0以上
- .NETエージェントのWindowsサービスを停止します。
- 設定の編集を開きます(スタート メニュー > 設定の編集)。このダイアログは、インストール中に自動的に起動します。
エージェントのバージョン2.3未満では、スタート メニュー> 設定の編集(x64かx86)で起動します。
- apminsight.appnameキーがIIS内部のWebアプリケーションいずれかにあれば、ダイアログには、削除のオプションが表示されます。なお、バージョン2.0より、この、キーの有無に依存した挙動の違いは、削除されています。
- アプリ フィルタータブへ移動します。
- アプリ フィルターを利用するを選択。
- 監視するアプリケーションを選択してください。デフォルトでは、すべてのアプリケーションが監視対象となります。
- APMインサイト キーのコラムで、テキストボックスに、アプリケーションの一意の名前を指定してください。これによる、IISへの影響はありません。
- 保存をクリックしてください。
- .NETエージェントのWindowsサービスを開始します。
エージェントのバージョン2.0未満
- 設定の編集ウィンドウを、スタート メニュー > 設定の編集(x64かx86)で起動します。このダイアログは、インストール中に自動的に起動します。
- アプリ フィルター タブへ移動してください。
- アプリ フィルターを利用するを選択。
- APMインサイト キーの利用を選択してください。これにより、キーapminsight.appnameが、アプリ設定で、選択したアプリケーションの、それぞれのweb.configファイルに追加されます。
- 監視するアプリケーションを選択してください。デフォルトでは、すべてのアプリケーションが監視対象となります。
- APMインサイト キーのコラムで、テキストボックスに、アプリケーションの一意の名前を指定してください。APMインサイト キーを使うを手順4で選択しなかった場合、このコラムは表示されせん。
- 保存をクリックしてください。
- .NETエージェントWindowsサービスの再起動で、変更が有効となります。
.NETエージェント v2.0以上での、エージェント設定変更
- APMインサイト(.NETエージェント)インストール フォルダーに移動します。
- DotNetAgentフォルダーを開きます。
- appfilter.confファイルを開き、以下のキーを編集してください。
use.app.filters=true (default)
use.apminsight.appnames=true (default is false)
include.app.names={json formatted appnames}
例:
include.app.names = { "Default Web Site/" : "ServerRoot", "Default Web Site/Services/wcf1" : "Service1", ... }
- このappfilter.confファイルをコピーし、次の場所にペーストします。
- エージェントのバージョン2.3以上
-
エージェントのバージョン2.3未満
- 64ビット版エージェントの場合
%WINDIR%\ProgramData\DotnetAgent\x64
- Windows Server 2003では、対応するパスは、%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64です。
%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64
- 32ビット版エージェントの場合
%WINDIR%\ProgramData\DotnetAgent\x86
- Windows Server 2003では、対応するパスは、%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64です。
%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x86
- 監視が複数ある場合、上記の場所に、すべてのサブフォルダーを加えてください。
- .NETエージェントのWindowsサービスを再起動すると、変更が有効になります。
エージェント バージョン2.0以上で、IISマネージャーに変更を行う
- IISマネージャーを起動。
- Webアプリケーションを選択してください。
- IIS 7.0以上では、アプリケーションの設定セクションへ移動し、次のキー・バリュー ペアを追加します。この手順は、複数アプリケーション名の中での衝突を回避するために必須です。
key = apminsight.appname
value = <custom application name>(この名前を設定ファイルで使用)
- IISバージョン6.0では、web.Configファイルを開き、<appSettings> セクションを次の通り編集します。
<appSettings>
<add key="apminsight.appname" value="<custom application name>"/>
...
</appSettings>
- web.Configを保存
- この手順を、すべての監視するアプリケーションについて繰り返してください。
エージェント バージョン2.0未満で、IISマネージャーに変更を行う
- APMインサイト(.NETエージェント)インストール フォルダーに移動します。
- DotNetAgentフォルダーを開きます。
- apminsight.confファイルを開き、以下のキーを編集してください。
use.app.filters=true (default)
use.apminsight.appnames=true (default is false)
include.app.names=<comma seperated appnames>
- アプリ設定セクションで示されるアプリケーション名を、正確に入力します。
- この、apminsight.confファイルを、次の場所にペーストしてください。
- 64ビット版エージェントの場合
%WINDIR%\ProgramData\DotnetAgent\x64
Windows Server 2003では、対応するパスは、%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64です。
%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64\
- 32ビット版エージェントの場合
%WINDIR%\ProgramData\DotnetAgent\x86
Windows Server 2003では、対応するパスは、%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64です。
%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x86\
監視が複数ある場合、上記の場所に、すべてのサブフォルダーを加えてください。
- .NETエージェントを再起動すると、Windowsサービスが有効となります。
バックッグラウンド通信の追跡
- 詳細は、バックグラウンド トランザクションむけ設定を参照ください。
類似トランザクションのグループ化
トランザクション名が動的に決まることは、多くのアプリケーションで、日常化しています。そのため、アプリケーションのパフォーマンス追跡は、困難になりつつあります。動的Webトランザクションの場合、アプリケーションは同一URLを提示するもの、起動のたびに一意の識別子(英数字)を埋め込むため、トランザクション名自体が別物に見えるのです。このようなURLを、それぞれ追跡するのは、手間がかかりすぎます。Site24x7の、類似トランザクション グループ化機能を利用すれば、多くの動的トランザクションを、監視すべき実際のURLへ、まとめることが可能です。
.NETエージェントでの設定手順
- 設定の編集ウィンドウを開き、トランザクションのマージタブを選択してください。マージするすべてのトランザクション パターンを追加します。
- パターンのサンプルで、トランザクションをグループ化する場合は、.NETエージェントによるAPMインサイト利用をご覧ください。
- トランザクションのマージパターンを、マニュアルで設定するには:
- エージェントのインストール後、APMインサイト(.NETエージェント)インストール フォルダーへ移動します。
- DotNetAgentフォルダーを開きます。
- transaction_merge_patterns.confを開き、パターンを、こちらを参照の上、追加。
- このtransaction_merge_patterns.confファイルをコピーし、次の場所にコピーしてください。
- エージェントのバージョン2.3未満
- 64ビット版エージェントの場合
%WINDIR%\ProgramData\DotnetAgent\x64
- Windows Server 2003では、対応するパスは、%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64です。
%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64
- 32ビット版エージェントの場合
%WINDIR%\ProgramData\DotnetAgent\\x86
- Windows Server 2003では、対応するパスは、%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x64です。
%WINDIR%\Documents and Settings\All Users\Application Data\DotNetAgent\x86
- 複数監視の場合、上記パスより、アプリケーションごとに、すべてのサブフォルダーを指定。
- 設定ファイル内のパターンは、いつでも、追加、削除、コメントが可能です。
トランザクションのマージパターンの例
- 下記のパターンは、aspsite/account/で始まるトランザクションすべてにマッチし、名称はaccountに変わります。
aspsite/account/*=account
- 下記のパターンは、aspsite/で始まり、/basicdetailsで終わるトランザクションすべてにマッチします。名称はbasicdetailsに変わります。
aspsite/*/basicdetails=basicdetails
- 下記のパターンは、/educationdetailsで終わるトランザクションすべてにマッチし、名称はeducationdetailsに変わります。
*/educationdetails=educationdetails
.NETエージェントAPIでカスタム インストルメントする
APMインサイト(.NETエージェント)APIは、Webアプリケーションにおける、ユーザー定義のメソッドを追跡するのに役立ちます。Webアプリケーションのパフォーマンスを監視するため、DLLの指定メソッドをインストルメントするのにも有用です。コードの特定箇所追跡にも、利用いただけます。
API追加の手順
- DotNetAgent.Api.dllライブラリへの参照を、Webアプリケーション プロジェクトに追加します。
- API DLLは、APIマネージャー ツールのインストール先にあります(C:\All Programs (x86)\APM Insight\APM Insight.NET Agent\AgentApi\DotNetAgent.Api.dll)。
エージェントのバージョン2.3未満では、APIのDLLは、C:\All Programs\APM Insight\APM Insight .NET Agent (<x64もしくは x86>)\AgentApi\DotNetAgent.Api.dllで見つかります。
- APIには、CustomTrackerという名称のクラスがあり、メソッドのパフォーマンスを追跡できます。
CustomTrackerクラスと、そのメソッド
コンストラクター
CustomTracker(Type thisType)
- thisType:今のクラスか基底クラスのタイプです。
例:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType());>
CustomTracker(Type thisType, string methodName)
- thisType:今のクラスか基底クラスのタイプです。
- methodName:監視するメソッドの名前です。
例:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType(),"BasicDetails");
CustomTracker(Type thisType, string className, string methodName)
- thisType:今のクラスか基底クラスのタイプです。
- className:クラスの名前監視する~.
- methodName:監視するメソッドの名前です。
例:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType(), "EmpController", "BasicDetails");
CustomTracker.StartTracker (Type thisType, string className, string methodName)
- このメソッドは、カスタム メソッドのメトリック収集を開始するのに用います。
- これは、コンストラクター自体で呼び出されるため、必要ありません。
CustomTracker.StopTracker()
- メトリック収集は、このメソッドの呼び出しで停止します。
- finallyブロックでは、必ず、これを呼び出してください。
- メソッドの最初ではCustomTrackerクラスのインスタンスを作成し、StopTracker()はメソッドの終わりに実行します。
- {}ブロックを利用して、CustomTrackerインスタンスを作成することもできます。オブジェクト廃棄の際には自動的に、StopTracker()メソッドが呼び出されます。
次の例では、CustomTrackerの利用法を示します。
例 1:Usingステートメントの利用
public ActionResult BasicDetails(int id = 0)
{
AdminBL objadmin = new AdminBL();
using(CustomTracker customTracker = new CustomTracker(base.GetType(),"BasicDetails"))
{
ASPSite.BL.MYSQLReference.BasicDetails basicDetails = objadmin.getBasicDetails(id);
EmpApp.Models.BasicDetails basic = getBasicDetailsModel(basicDetails);
return View(basic);
}
}
例 2: StartTrackerとStopTrackerを、try・finallyブロックで利用する
public ActionResult BasicDetails(int id = 0)
{
CustomTracker customTracker = null;
AdminBL adminBL = new AdminBL();
try
{
customTracker = new CustomTracker(base.GetType(),"BasicDetails");
ASPSite.BL.MYSQLReference.BasicDetails basicDetails = adminBL.getBasicDetails(id);
EmpApp.Models.BasicDetails basicDetailsModel = getBasicDetailsModel(basicDetails);
}
finally
{
customTracker.StopTracker();
}
return View(basicDetailsModel);
}
例 3: CustomTrackerのUsingステートメントで、コードをインストルメント化
public ActionResult BasicDetails(int id = 0)
{
AdminBL adminBL = new AdminBL();
using(CustomTracker customTracker = new CustomTracker(base.GetType(),"BasicDetails"))
{
// コードのインストルメント化。この関数から、FetchAllEmplpyeesとSQL呼び出しを実行
using(CustomTracker fetchAllEmpTracker = new CustomTracker(base.GetType(),"FetchAllEmployees"))
}
ASPSite.BL.MYSQLReference.BasicDetails basicDetails = objadmin.getBasicDetails(id);
EmpApp.Models.BasicDetails basic = getBasicDetailsModel(basicDetails);
}
return View(basicDetailsModel);
}
- メソッド名やクラス名をCustomTrackerに与えない場合、現在のメソッド名やクラス名自体を取得しようとします。
- StartTracker() メソッドは、デフォルトで、コンストラクター内で呼び出されます。
- エージェントがインストールされていない場合や、エージェントのサービスが停止している場合は、メソッド実行は何の効果も発揮しません。
Azure環境へのエージェントのデプロイ
エージェントのバージョン2.3以上
- 次の記載を、Webロール プロジェクトに追加し、「出力にコピー(Copy to Output)」プロパティを「常にコピーする(Copy Always)」にセットします。
a. .NETエージェントのインストーラー「apminsight-dotnetagent.msi」
b. ライセンス キーやその他の設定を含む「apminsight.conf」ファイル
c. バッチ ファイル「deploy-apminsight.cmd」
-
下記のとおり、スタートアップ タスクを、サービス定義(.csdef)ファイルに、定義します。
<ServiceDefinition>
<WebRole>
<Startup>
<Task commandLine="deploy-apminsight.cmd configfile=apminsight.conf
appfilterconfigfile=appfilter.conf multimonitor=true/false"
executionContext="elevated" taskType="background"/>
</Startup>
</WebRole>
</ServiceDefinition>
エージェントのバージョン2.3未満
- 次の記載を、Webロール プロジェクトに追加し、「出力にコピー(Copy to Output)」プロパティを「常にコピーする(Copy Always)」にセットします。
a. .NETエージェントのインストーラー「apminsight-dotnetagent.msi」
b. ライセンス キーやその他の設定を含む「apminsight.conf」ファイル
c. バッチ ファイル「deploy-apminsight.cmd」
-
下記のとおり、スタートアップ タスクを、サービス定義(.csdef)ファイルに、定義します。
<ServiceDefinition>
<WebRole>
<Startup>
<Task commandLine="deploy-apminsight-x64.cmd configfile=apminsight.conf
appfilterconfigfile=appfilter.conf multimonitor=true/false"
executionContext="elevated" taskType="background"/>
</Startup>
</WebRole>
</ServiceDefinition>
フィルターで選択したアプリケーションを監視
パラメーターappfilterconfigfile=appfilter.confを追加すると、コマンドライン タスクで説明した通り、選択したアプリケーションのみを監視することができます。これには、アプリ フィルター関連の設定が含まれます(include.app.namesとuse.appfilter)。マニュアルでのアプリ設定の手順にしたがってください。可能な場合は、この設定をUIで同じ手順でおこない、設定ファイルをコピーすることを推奨します。
展開方法:
- クラウド サービスに、Visual Studio自体から公開する、もしくは、
- パッケージにまとめ、Azureポータルでクラウド サービスからアップロードする
既知の問題と回避策
Azure環境では、W3SVCサービス(World Wide Web Publishing Service)の起動タイプを、デフォルトでは「マニュアル」にしています。これにより、.NETエージェントのインストール後に、「サービスを使用できません」というメッセージが表示されることがあります(インストール時のIISリセットによる)。問題の回避策として、起動タイプを「自動」にセットしてください。それには、それには、sc config w3svc start=
autoを、バッチ ファイルのインストール コマンドの前に追記します。
エージェントのバージョン2.3以上
下記スクリプトを新規テキスト ファイルにコピー・ペーストし、ファイル名を、deploy-apminsight.cmdとしてください。
deploy-apminsight.cmd
REM APMインサイトのエージェントをWindows Azureにインストールする
SETLOCAL EnableExtensions
REM インストール済みであれば、割愛
IF DEFINED COR_PROFILER GOTO :END
IF NOT EXIST apminsight-dotnetagent.msi GOTO :END
REM w3svc IIS ワーカー プロセスのサービス起動を、自動に設定
sc config w3svc start=auto
REMエージェントをインストール
apminsight-dotnetagent.msi /quiet /log %windir%\ApmInsightInstall.log editconfig=false %*
:END
EXIT /B %ERRORLEVEL%
エージェントのバージョン2.3未満
下記スクリプトを新規テキスト ファイルにコピー・ペーストし、ファイル名をdeploy-apminsight-x64.cmdとします。x86エージェントでは同様のスクリプトを、x86 msiファイル名で作成してください。
deploy-apminsight-x64.cmd
REM APMインサイトのエージェントをWindows Azureにインストールする
SETLOCAL EnableExtensions
REM インストール済みであれば、割愛
IF DEFINED COR_PROFILER GOTO :END
IF NOT EXIST apminsight-dotnetagent-x64.msi GOTO :END
REM w3svc IIS ワーカー プロセスのサービス起動を、自動に設定
sc config w3svc start=auto
REMエージェントをインストール
apminsight-dotnetagent-x64.msi /quiet /log %windir%\ApmInsightInstall.log editconfig=false %*
:END
EXIT /B %ERRORLEVEL%
Health Monitorの利用
- Health Monitorは、エージェント設定の概要を提供する自己診断ツールです。エージェントでありがちな設定上の問題を特定・解消するのに役立ちます。この機能は、APMインサイト(.NETエージェント)のバージョン1.8以上で利用可能です。
- このツールは、「APM Insight .NET Agent」フォルダーのスタート メニューにあります。
- Health Monitorより、以下の作業が可能です。
- 問題発生の際は、診断ZIPファイルを作成する前に、エージェントのログ レベルを「debug」にして、トランザクションを試してください。この情報がいただければ、問題の絞り込みと、手早い解決に役立ちます。