アプリケーション環境はますます動的になっています。たとえば、AWS または Rackspace でホストされる環境では、管理者はワークロードが原因で短時間でノードをオンラインまたはオフラインにすることができ、結果として、多数の短命な JVM が存在する環境になります。  

動的な環境に関する考慮事項

AppDynamicsのアプリエージェントは実質上、従来のデータセンターと同じように動的な環境で動作します。ただし、動的な環境にエージェントを展開する際にはいくつか考慮すべき事項があります。

  • エージェントがコントローラに到達できることを確認する。特にエージェントがホステッドサーバで実行され、コントローラがオンプレミスで動作する場合、使用環境でエージェントがファイアウォールを通ってコントローラにアクセスできることを確認する必要がある。 
  • カスタムノード期限の処理を構成する。デフォルトでは、コントローラはデフォルトのタイムアウト設定に基づいてノードのライフサイクルを管理している。「履歴ノードと切断ノード」に記載されているといて、ノードのデフォルト期限を短くするとよい。これを直接管理するには、アクティビティのタイムアウトに頼るのではなく AppDynamics REST API の mark-nodes-historical リソースを呼び出す JVM でシャットダウン前にスクリプトを実行し、コントローラにそれ自体が履歴であることを宣言する。 

  • 使用環境の性質によっては、AppDynamics の固有ノードとして各 JVM インスタンスを追跡しても意味がないことがある。それはノードセットが無限にあるためであり、JVMは同じものなので、AppDynamicsで異なるノードとして表しても、環境の論理モデルを上手く反映することができない。 

動的な環境におけるエージェントの構成

AppDynamics を構成して、動的な環境でノード名を再利用することができます。ノード名の再利用を有効化しておくと、ノードがシャットダウンされ AppDynamics で履歴としてマークされた後、そのノードの名前は後に登録されるノードに再利用できるようになります。また、動的なアプリケーションに対して同時に実行されているすべての JVM 間の関連を示すためにノード名を再利用する際、ノード名のプレフィックスを指定できます。 

この環境でエージェントを構成するには、次のプロパティを使用します。

有効にすると、コントローラでエージェントの名前の割り当てが管理されます。連続して増える数がサフィックスとして指定のプレフィックスに追加され、ノード名となります。その他の仕組み(controller-info.xml ファイルまたはシステムプロパティなど)を使用してノード名を指定することは避けてください。

以下に、起動スクリプトに表示されるプロパティのサンプル設定を示します。

-Dappdynamics.agent.reuse.nodeName=true
-Dappdynamics.agent.reuse.nodeName.prefix=CloudActivator_
CODE

ノード名の再利用を有効にすると、Javaエージェントは起動後およびコントローラへの登録前に標準出力にログを出力します。エージェント登録の失敗をトラブルシューティングするために、代わりにログファイルをファイルに書き込むこともできます。

ログをファイルに書き込むようにエージェントを構成するには、<agent_home>/<version_number>/conf/logginglog4j-unknown.xml を編集し、次のように AgentLog Appender のコメントを外します。

<!-- To log files to an "unknown" folder before the agent registers 
                          with the Controller, uncomment the line below -->
<appender-ref ref="AgentLogAppender"/>
CODE

この変更により、登録前のエージェントのログファイルは標準出力ではなく「不明」という名前のディレクトリに書き込まれるようになります。   

シャットダウン時に動的ノードを履歴ノードとして記録する

動的環境用のエージェントの構成」セクションに示されているように、ノード名再利用フラグを設定すると、JVM は正常なシャットダウンを報告し、コントローラは対応するノードを履歴ノードとして記録します。ノード名を再利用しない場合は、次のいずれかの代替方法を使用してノードを履歴ノードとして記録できます。

  • JVM のスタートアップ時に次のシステムプロパティを設定します。

    -Dappdynamics.jvm.shutdown.mark.node.as.historical=true
    JAVA
  • app-agent-config.xml の次のプロパティを true に設定します。

    <app-agent-configuration>
       ...
       <configuration-properties>
          ...
          <property name="appdynamics.jvm.shutdown.mark.node.as.historical" value="true"/>
    CODE

    注意

    ご利用中のアプリケーション環境で JVM が正常にシャットダウンされるのではなく JVM が異常終了する場合は、コントローラ API([Configuration API] > [Mark Nodes as Historical])を使用して、ノードの終了と同時にノードを履歴ノードとして記録するようにオーケストレーション フレームワークを調整します。

コントローラでの履歴ノードの処理

ノードが一定期間コントローラと通信していない場合、コントローラはそのノードを履歴ノードとして記録します。コントローラは、そのノードに関するルール評価などの一部の処理アクティビティを中断します。詳細については、「履歴ノードと切断ノード」を参照してください。