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

はじめに

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.exe や MyWindowsService .exe。ファイル拡張子はオプションであるため MyStandaloneApp も同様に機能します。

      • 実行可能ファイルへのフルパスまたは部分パス:たとえば、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>

トラブルシューティング

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

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

次に、Windows 2012 以降、および Windows 2008 でこの問題を解決するために必要な手順について説明します。

Windows 2012 and later

インストゥルメント化された Windows サービスの前に AppDynamics.Agent.Coordinator サービスを初期化するには、次のようにレジストリを変更します。

Reg キー EarlyStartServices @HKLM:\SYSTEM\CurrentControlSet\Control を編集し、AppDynamics.Agent.Coordinator_service  を初期の開始サービスのリストに追加します。

Windows 2008

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