.NET エージェントは、IIS アプリケーションのみを自動的にインストゥルメント化します。ただし、以下の手順に従って、Windows サービスやスタンドアロン .NET アプリケーションをインストゥルメント化するように .NET エージェントを手動で構成できます。

Web アプリケーションが処理中のハンドラとして実行されるように設定されていない場合、アプリケーションは dotnet.exe または mywebappapplication.exe として実行されることがあります。このシナリオでは、アプリケーションのサイト名とアプリケーションパスは自動的に検出されません。これらのアプリケーションを手動で設定し、アプリケーションに最適な階層およびノード名を指定する必要があります。 

はじめに

Windows サービスとスタンドアロン .NET アプリケーションをインストゥルメント化するには、.NET エージェント構成ファイル config.xml を編集します。

デフォルトドメインを使用してアプリケーションを実行する場合は、手動でインストゥルメント化する必要があります。デフォルトでは、AppDynamics はデフォルトドメインを自動的にインストゥルメント化しません。デフォルトドメインを使用する必要があるかどうか、およびその構成方法を判断するには、「スタンドアロンアプリケーションのDefaultDomainのインストゥルメンテーション」を参照してください。

開始する前に、インストゥルメント化するサービスまたはアプリケーションがネイティブアプリケーションや別のタイプのアプリケーションではなく、.NETアプリケーションであることを確認します。コマンドラインから次のように入力します。

tasklist /m "mscor*"
CODE

このコマンドは、64 ビットプロセス専用です。32 ビットプロセスの場合は、Process Explorer を使用して、プロセスの依存関係と、ファイルにロードされた .NET .dll ファイルがあるかどうかを確認します。

出力には、mscor* で始まる dll を使用しているプロセスがリストされます。これは、.NET プロセスを示しています。リストに表示されないプロセスは .NET プロセスではないため、.NET エージェントではインストゥルメント化できません。

Windows サービスとスタンドアロン アプリケーションをホストするサーバで、以前 IIS アプリケーションのインストゥルメント化を行っている場合、サーバにはすでに編集可能な config.xml ファイルがあるはずです。ない場合は、次の手順に従ってファイルを生成します。

  1. Windows 用 .NET エージェントのインストールを使用して無効にすることができます。 
  2. AppDynamics エージェント構成ユーティリティを実行します。 

IIS アプリケーションをインストゥルメント化しない場合は、階層の手動命名方式を選択して、IIS アプリケーションの階層を割り当てる手順を省略します。これにより IIS アプリケーションのインストゥルメンテーションが無効化され、対象の Windows サービスまたはスタンドアロン アプリケーションのみをインストゥルメント化できるようになります。 

ユーティリティにより次の構成タスクが実行されます。

  1. ログディレクトリの場所を変更し、権限を割り当てます。
  2. コントローラへの接続を構成およびテストします。
  3. エージェント用ビジネスアプリケーションを設定します。

.NETエージェントの手動構成

.NET エージェントのコントローラプロパティを構成すると、スタンドアロン アプリケーション エレメントを config.xml に追加することで Windows サービスまたはスタンドアロン アプリケーションのインストゥルメント化が実行されます。

  1. 管理者として config.xml ファイルを編集します。詳細については、.NETエージェントの管理を参照してください。 

    IIS アプリケーションをインストゥルメント化していない場合、ファイルにはコントローラ接続とマシンエージェント用の最小構成が含まれています。コントローラのプロパティとビジネスアプリケーション名を確認します(次の例を参照)。

    <?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">
      <controller host="mycontroller.example.com" port="8090" ssl="false">
        <application name="My Business Application" />
      </controller>
    ...
    </appdynamics-agent>

    すでに IIS アプリケーションをインストゥルメント化している場合は、上記の構成が IIS エレメントの下に表示されます。

  2. app-agents エレメントで単体のスタンドアロン アプリケーション エレメント(standalone-applications)を追加し、standalone-applications エレメントで、インストゥルメント化を行う各 Windows サービスまたはスタンドアロン アプリケーションのスタンドアロン アプリケーション エレメント(standalone-application)を追加します。例:

    ...
    <app-agents> 
       ...
       <standalone-applications>
          <standalone-application executable="MyStandaloneApp.exe">
            <tier name="Standalone Tier 1"/>
          </standalone-application>
          <!-- Instrument a standalone application using a partial path. -->
          <standalone-application executable="MyApplication\MyOtherStandaloneApp.exe">
            <tier name="Standalone Tier 2"/>
          </standalone-application>
          <!-- Instrument a Windows service using arguments. -->
          <!-- The following example matches the command "MyWindowsService.exe -d -x -r". -->
          <standalone-application executable="MyWindowsService.exe" command-line="-x">
             <tier name="Windows Service Tier"/>
          </standalone-application>
       </standalone-applications>
    </app-agents>
    ...

    スタンドアロンアプリケーションエレメント構成で次を実行します。

    • tier エレメントを使用して、インストゥルメント化されたアプリケーションをコントローラのティアに割り当てます。詳細については、.NETエージェントの構成プロパティを参照してください。

    • 次の形式のいずれかを使用して、スタンドアロン アプリケーション エレメントの executable 属性でアプリケーションの実行可能ファイルを指定します。

      • 実行可能ファイル名:MyStandaloneApp.exeMyWindowsService.exe など。ファイル拡張子はオプションであるため MyStandaloneApp も有効です。dotnet.exe が .NET Core アプリケーションを起動するために使用される場合は、"dotnet.exe" をアプリケーション実行可能ファイルとして指定します(「構成ファイルのサンプル」を参照してください)。 

      • 実行可能ファイルへのフルパスまたは部分パス:たとえば、C:\Program Files\MyApplication\MyStandaloneApp.exe MyApplication\MyStandaloneApp.exe。異なるパスから実行される同じ実行可能ファイルのインスタンスごとに別の AppDynamics 階層を割り当てる場合は、フルパスまたは部分パスを使用します。

      • 同じ実行可能ファイルの 2 つのインスタンスを区別するには、スタンドアロン アプリケーションのコマンドライン属性でアプリケーションのコマンドライン呼び出し形式の独自の部分(引数など)を指定します。

      管理ツールのサービスパネルでWindowsサービスの実行ファイルへのパスを確認できます。[Services] で、サービスをクリックし、[Properties] を選択します。パスが [General] タブに表示されます。

  3. AppDynamics.Agent.Coordinator サービスを再起動します。

  4. Windowsサービスまたはスタンドアロンアプリケーションを再起動します。

  5. Windows サービスまたはスタンドアロン アプリケーションで自動検出フレームワークが実装されていない場合は、エージェントがインストゥルメンテーションを開始するために、サービス内のクラス/メソッドの POCO エントリポイントを構成する必要があります。

構成ファイルのサンプル

このサンプルの config.xml は、Windows サービスおよびスタンドアロン アプリケーションのインストゥルメンテーションを示しています。

<?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">
  <controller host="mycontroller.mycompany.com" port="8090" ssl="false">
    <application name="My Business Application" />
  </controller>
  <machine-agent />
  <app-agents>
    <IIS>
        <applications />
    </IIS>
    <standalone-applications>
        <standalone-application executable="MyWindowsService.exe" command-line="-x">
           <tier name="Windows Service Tier" />
        </standalone-application>
        <standalone-application executable="MyStandaloneApp.exe">
           <tier name="Standalone Tier" />
        </standalone-application>
    </standalone-applications>
  </app-agents>
</appdynamics-agent>

.Net Core アプリケーションが実行可能ファイルとしてパブリッシュされている場合は、実行可能ファイル名とコマンドライン(オプション)を指定することによって、.NET Framework アプリケーションと同様に設定できます。ただし、アプリケーションがライブラリとしてパブリッシュされている場合は、dotnet.exe ツールを呼び出すことによって開始されます。 

次の設定例は、dotnet.exe によってホストされている .NET Core スタンドアロン アプリケーションをインストゥルメント化する方法を示しています。

<?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">
  <controller host="mycontroller.mycompany.com" port="8090" ssl="false">
    <application name="My Business Application" />
  </controller>
  <machine-agent />
  <app-agents>
    <IIS>
        <applications />
    </IIS>
    <standalone-applications>
        <standalone-application executable="dotnet.exe" command-line="MyApp.dll"> //command-line option instructs the agent to monitor only "MyApp" 
           <tier name="DotNet Core Tier" />
        </standalone-application>
      </standalone-applications>
  </app-agents>
</appdynamics-agent>

トラブルシューティング

断続的な Windows サービスのインストゥルメンテーションの消失

Windows サービスをインストゥルメント化するときに、インストゥルメント化されたサービスが AppDynamics.Agent.Coordinator サービスの前に初期化される場合があります。これが発生すると、プロファイラがシャットダウンし、インストゥルメンテーションが実行されません。この問題はまれです。 

次の手順では、Windows 2008 および Windows 2012 以降でこの問題を解決する方法について説明します。

Windows 2008

Windows 2008 を使用している場合は、AppDynamics サポートにお問い合わせください。

Windows >= 2012

Windows サービスをインストゥルメント化する前に AppDynamics.Agent.Coordinator サービスを初期化するには、レジストリを変更する必要があります。
Reg キー EarlyStartServices @HKLM:\SYSTEM\CurrentControlSet\Control を編集し、AppDynamics.Agent.Coordinator_service を初期の開始サービスのリストに追加します。

Modify Registry