開発者は .NET Remoting を使用して、複数のプロセスまたは同じプロセス内で実行中のアプリケーションドメインでオブジェクトを共有している分散アプリケーションを構築します。AppDynamicsはデフォルトで、.NET Remoting機能の相関を無効化しています。

.NET Remoting を使用するアプリケーションのインストゥルメント化

.NET Remoting エントリポイントとイグジットポイントを見つけるには、 .NET Agentを構成します。

  1. 管理者として config.xml ファイルを開き、編集。「.NETエージェントの管理」の「エージェントプロパティの構成場所」を参照してください

  2. 以下のコードブロックをマシンエージェントエレメントの子エレメントにコピーします。次を参照してください。.NETエージェントの構成プロパティ

        <instrumentation>
            <instrumentor name="RemotingMscorlibEntryInstrumentor" enabled="true"/>
            <instrumentor name="RemotingExitInstrumentor" enabled="true"/> 
        </instrumentation>
    CODE

    例:

    <?xml version="1.0" encoding="utf-8"?>
    <appdynamics-agent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    ...
     <machine-agent>
        <!--Enable correlation for .NET remoting-->
        <instrumentation>
            <instrumentor name="RemotingMscorlibEntryInstrumentor" enabled="true"/>
            <instrumentor name="RemotingExitInstrumentor" enabled="true"/>
        </instrumentation>
      </machine-agent>
    ...
    </appdynamics-agent>
    CODE
  3. config.xml ファイルを保存。
  4. AppDynamics.Agent.Coordinator サービスを再起動します。
  5. インストゥルメント化されたアプリケーションを再起動して、変更を適用。

構成してもエージェントによりエントリポイントが検出されない場合は、エージェントトリガーを指定します。

エージェントトリガーの指定

.NET Remoting のエントリポイント関数は、自動エージェント インストゥルメンテーションをトリガーしない可能性がある低レベルの .NET ライブラリで実行されます。構成後にエージェントが .NET Remoting のエントリポイントを検出しない場合は、エージェントがインストゥルメンテーションを開始するようにトリガーする関数を指定できます。

  1. インストゥルメンテーションを開始するためにエージェントをトリガーする関数を指定。この関数は、アプリケーションプロセスの一環として実行される任意の関数です。

    たとえば、MovieTicket リモート処理オブジェクトに次のコードがあるとします。この場合、関数 GetTicketStatus を使用してエージェントをトリガーします。 

    using System;
    namespace MovieGoer
    {
        public class MovieTicket : MarshalByRefObject
        {
            public MovieTicket()
            {
            }
            public string GetTicketStatus(string stringToPrint)
            {
                return String.Format("Enquiry for {0} -- Sending back status: {1}", stringToPrint, "Ticket Confirmed");
            }
        }
    }
    
    CODE
  2. 管理者として config.xml ファイルを編集します。詳細については、.NETエージェントの管理を参照してください。

  3. AgentTriggerInstrumentor 属性を含むように、インストゥルメンテーション エレメントを更新。詳細については、.NETエージェントの構成プロパティを参照してください。

        <instrumentation>
    		<instrumentor name="AgentTriggerInstrumentor" enabled="true" args=""/>
            <instrumentor name="RemotingMscorlibEntryInstrumentor" enabled="true"/>
            <instrumentor name="RemotingExitInstrumentor" enabled="true"/> 
        </instrumentation>
    CODE
  4. ステップ 1 のコードブロック内の情報を使用して、AgentTriggerInstrumentor args  の値をトリガー関数の名前に設定。args の値は、namespace.public_class.public_string の形式にする必要があります。

    次に例を示します。

    <?xml version="1.0" encoding="utf-8"?>
    <appdynamics-agent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    ...
     <machine-agent>
        <!--Enable correlation for .NET remoting-->
        <instrumentation>
            <instrumentor name="AgentTriggerInstrumentor" enabled="true" args="MovieGoer.MovieTicket.GetTicketStatus" />
            <instrumentor name="RemotingMscorlibEntryInstrumentor" enabled="true"/>
            <instrumentor name="RemotingExitInstrumentor" enabled="true"/>
        </instrumentation>
      </machine-agent>
    ...
    </appdynamics-agent>
    CODE
  5. config.xml ファイルを保存。
  6. インストゥルメント化されたアプリケーションを再起動して、変更を適用。