.NET/.NET コア エージェント

apmsaas
.NET エージェントは、.NET アプリケーションを対象とするアプリケーション管理ソリューションです。.NET エージェントは、Microsoft Common Language Runtime (CLR)環境で実行されるミッションクリティカルな .NET アプリケーションを監視します。エージェントは、コンポーネント レベルの可視性を実現します。
2
2
.NET エージェントの概要
DX APM
が展開されたシステムでは、エージェントがアプリケーションおよび環境のメトリックを収集し、Enterprise Manager に渡します。エージェントにメトリックをレポートするアプリケーションを、インスツルメントされたアプリケーションと呼びます。
.NET エージェントをインストールして構成すると、システムで実行されるアプリケーションはスタートアップ時に自動的にインスツルメントされます。
以下の図は、.NET アプリケーションが SQL Server データベースに接続するシンプルな
DX APM
展開を示しています。各アプリケーション サーバが .NET および SQL エージェントをホストしています。エージェントは、アプリケーションのアクティビティを監視し、メトリックを Enterprise Manager にレポートします。より大規模で複雑なデプロイ環境では、エージェントの数が増え、複数の Enterprise Manager が使用される場合があります。Team Center または Workstation を使用してメトリックを表示します。
DX APM
の .NET エージェント
NET Agent in DX APM
デフォルトでは、Microsoft インターネット インフォメーション サービス(IIS)を使用してデプロイされ、システム上でアクティブになっている ASP.NET アプリケーションのみがインスツルメントされます。また、スタンドアロンの .NET 実行可能ファイルをインスツルメントしたり、アプリケーションの一部のみをインスツルメントしたりすることもできます。
トレーサによって実行されるインスツルメンテーション プロセスは、ProbeBuilder ディレクティブ(PBD)ファイルに定義されています。PBD ファイル内のディレクティブは、監視対象のアプリケーション コンポーネントを識別します。トレーサは、それらのコンポーネントが CLR で実行される際にエージェントが収集するメトリックを識別します。その後、.NET エージェントから Enterprise Manager にこのメトリック情報が送信されます。
Enterprise Manager は、複数のエージェントからレポートされたメトリックを保存します。Team Center または Workstation を使用して、アプリケーション アクティビティを監視し、パフォーマンスの問題のソースを調査し、問題を診断できます。
.NET エージェントは、動的にインスツルメンテーションをロードします。アプリケーションを再起動する必要はありません。以下に例を示します。
  • 既存のプローブ定義にまだ一致していない特定のメソッドをインスツルメントできます。具体的には、再起動することなく、非同期 MVC メソッドをインスツルメントできます。
  • DX APM
    は、以下のアクションを実行するときに、メソッドを再評価し、インスツルメンテーションを変更できます。
    • 新規の .pbd ファイルを
      hotdeploy
      フォルダに配置します。
    • 既存の .pbd ファイルを変更または削除します。
モデル ビュー コントローラ(MVC)のサポート
.NET エージェントは、MVC フレームワーク アプリケーションの監視をサポートし、以下のタスクを実行できるようにします。
  • 標準の URL グループおよびビジネス トランザクション記録およびデコード機能の使用
  • 個々の MVC コントローラおよびアクションのパフォーマンスの監視
  • Team Center および Workstation で、MVC コントローラを汎用フロント エンドとして表示
    メトリックが、Workstation の MVC | Controllers | <
    controller_name
    > の下に表示
  • 各コントローラの下に集約されたメトリックに設定されたアラートの受信メトリック グループおよびアラートは以下のとおりです。
    • MVC コントローラ エラー
    • MVC コントローラの応答時間
  • MVC\|Controllers\|[^|]+:Average Response Time \(ms\) 差異分析メトリックの表示
  • .NET バージョン メトリックを表示します。
    メトリック ツリーの場所は、ASP.NET MCV ビューによって異なります(次の段落を参照)。メトリック値には、.NET/.NET Core バージョンが表示されます。たとえば、メトリック ツリーの以下の場所で .NET バージョン メトリックを選択したとします。
    SuperDomain | .NET Process | <Process Name> .NET Version
    この場合、この情報は[メトリック グラフ]領域の下部に表示されます。
    SuperDomain | .NET Process | <Process Name> | .NET Version: 3
  • MVC のビジネス トランザクション マッチング
ASP.NET MVC では以下のコンポーネントが提供されます。
  • さまざまな Web アプリケーション presentation-layer 構文の使用のためのテンプレートであるエンジンを表示します。.NET エージェントは、Razor ビュー エンジンのパフォーマンス メトリックでは、さまざまな ASP.NET Razor view-engine テンプレートを監視します。
    注:
  • MVC アプリケーション領域は、作業可能なセクションを作成することで Web プロジェクトを整理します。.NET エージェントは、MVC 領域のパフォーマンスを監視します。
  • 注:
    MVC 領域のパフォーマンス メトリックのレポートは、デフォルトでは無効です。メトリックのレポートは、有効にすることができます
MVC フレームワーク アプリケーションのメトリックは、図に示すように、Team Center に表示されます。
MVC controller metrics in Team Center Map.
Web API サポート
.NET エージェントは、問題のあるトランザクションのボトルネックになっている階層を特定するための Web API ベースのアプリケーション トランザクションの監視をサポートします。
サポートされている Web API バージョン
Microsoft ASP.NET Web API の以下のバージョンがサポートされています。
バージョン 4
  • Microsoft ASP.NET Web API 4.0.30506
バージョン 5
  • Microsoft ASP.NET Web API 5.0.0
  • Microsoft ASP.NET Web API 5.2.3
.NET エージェントは、Web API フレームワーク アプリケーションの監視をサポートし、以下のタスクを実行できるようにします。
  • 標準の URL グループおよびビジネス トランザクション記録およびデコード機能の使用
  • 個々の Web API コントローラおよびアクションのパフォーマンスの監視
  • Team Center および Workstation で Web API コントローラを汎用フロント エンドとして表示メトリックが、Workstation の WebAPI | Controllers | <
    controller_name
    > の下に表示されます。
  • 各コントローラの下に集約されたメトリックに設定されたアラートの受信新しいメトリック グループおよびアラートは以下のとおりです。
    • WebAPI コントローラ エラー
    • WebAPI コントローラの応答時間
  • WebAPI\|Controllers\|[^|]+:Average Response Time \(ms\) 差異分析メトリックの表示
  • Web API のビジネス トランザクション マッチング サポート
Web API のメトリックは、図に示すように、Team Center に表示されます。
Web API Controller nodes in Team Center
アプリケーション環境での .NET エージェントの監視
デプロイで、監視対象のアプリケーションを実行する各コンピュータに .NET エージェントをインストールします。インストール後、.NET エージェントは Microsoft インターネットインフォメーション サービス(IIS)によって制御されます。IIS がユーザからアプリケーションへのリクエストを受信するまで、.NET エージェントはアクティブではありません。アプリケーション コード(.aspx、.asmx など)が実行されると、.NET エージェントが起動し、NativeProfiler がコードをインスツルメントします。
IIS による .NET エージェントの制御方法
デフォルトでは、.NET エージェントは、IIS が管理するアプリケーションおよび IIS ワーカ プロセス下で実行しているアプリケーションのみを監視します。.NET アプリケーションの開始時に、IIS が .NET エージェントおよびインスツルメント処理をどのように制御するかを以下の手順で示します。
  1. IIS がアプリケーションへのユーザ要求を受け取ります。
  2. IIS が .NET ワーカ プロセスを開始します。
  3. リクエストされた.NET アプリケーションが開始します。
  4. 共通言語ランタイム(CLR)が NativeProfiler を開始します。
  5. NativeProfiler がグローバル アセンブリ キャッシュ(GAC)から .NET エージェントをロードします。
  6. .NET エージェントが IntroscopeAgent.profile を読み込み、インスツルメントに使用する PBL および PBD ファイルを決定します。
  7. NativeProfiler は、PBL および PBD ファイル内の情報を使用してプローブをバイトコードに挿入します。プローブは、アプリケーション コンポーネントから適切なメトリックを収集します。アプリケーションがインスツルメントされます。
  8. インスツルメントされたアプリケーションが、.NET エージェントへのメトリックのレポートを開始します。
    IIS ワーカ プロセスが実行されている限り、エージェントはメトリックを収集し、それを Enterprise Manager にレポートします。インスツルメントされたアプリケーションが、ユーザのアクティビティをタイムフレームの間感知しない場合、IIS ワーカ プロセスはアプリケーション プロセスを停止します。IIS がアプリケーション プロセスを停止すると、ユーザ アクティビティが再開するまでは .NET エージェントは停止状態になります。
ASP.NET を使用しないスタンドアロン アプリケーションでも、インスツルメントを行うように .NET エージェントで設定されている場合は、インスツルメントすることができます。.NET エージェントを制御するための IIS プロセスは、スタンドアロン アプリケーションでも同様です。ただし、スタンドアロン アプリケーションは Windows オペレーティング システムによってブートできるため、手順 1 および 2 はスキップされます。
.NET エージェントのインスタンス化および IIS ワーカ プロセス
.NET エージェントは、監視したい管理対象 .NET アプリケーションをホストしている各システムにインストールします。.NET エージェントの起動時点で、CLR のデフォルト ドメインに対してエージェント インスタンスが 1 つ作成されます。さらに、CLR で実行されるアプリケーションごとに .NET エージェント インスタンスが作成されます。
以下の図は、管理対象 ASP.NET アプリケーションを示しています。アプリケーションには、1 つの .NET エージェントが起動された各ドメイン内に IIS ワーカ プロセスが 1 つあります。
管理対象 ASP .NET アプリケーションの例
Managed ASP .NET application example
以下の図は、複数の .NET アプリケーションが IIS アプリケーション プールでグループ化されている状況を示しています。アプリケーション プールは、単一のワーカ プロセスを共有します。デフォルト ドメインには、1 つの .NET エージェントがあります。アプリケーション プール内の各アプリケーションには、NET エージェントもあります。
IIS アプリケーション プールでグループ化されている複数の .NET アプリケーション
Multiple .NET applications grouped in IIS application pool
スケーラビリティ上の理由から、組織によっては、1 つのアプリケーションに複数のワーカ プロセスを割り当てることができます。そのため、デフォルト ドメインに対して .NET エージェント インスタンスが 1 つ作成されます。アプリケーションに関連付けられているワーカ プロセスごとに、より多くのドメインが作成されます。以下の図は、最も一般的な構成を示しています。
1 つのアプリケーションに複数のワーカ プロセスが割り当てられている NET エージェント
NET Agent with multiple worker processes assigned to single application
ワーカ プロセスが複数ある場合、複数の .NET エージェントが 1 つの管理対象アプリケーションに関連付けられます。この状況では、これらのエージェントを仮想エージェントとして設定します。この設定によって、複数の物理 .NET エージェントからのメトリックを集約できます。
デフォルト ドメインの .NET エージェント インスタンス
CLR のデフォルト ドメインには常に 1 つの .NET エージェントが作成されます。デフォルトでは、デフォルト ドメインの .NET エージェントは Enterprise Manager に接続しません。そのため、.NET エージェントは、Workstation のメトリック ツリー内にノードとして表示されません。ただし、必要な場合は、デフォルト ドメインの .NET エージェントが Enterprise Manager に接続するように構成できます。詳細については、「デフォルトのドメイン設定」のエージェント プロパティを参照してください。