Java エージェントの名前付け

このセクションでは、エージェントの名前付け、関連する環境およびデプロイ実施における考慮点、エージェントに自動的に名前を付けるオプションについて説明します。
apmdevops102jp
このセクションでは、エージェントの名前付け、関連する環境およびデプロイ実施における考慮点、エージェントに自動的に名前を付けるオプションについて説明します。
Java エージェント名の理解
Introscope 環境で動作している各 Java エージェントには名前が割り当てられています。名前の割り当ては、明示的に割り当てる、自動的に名前を割り当てる方法を設定する、または Java エージェントが監視するインスツルメントされたアプリケーションを起動する、といういずれかの方法で行われます。Java エージェント名は、Introscope Workstation および Investigator 内の多くのビューの中心となります。また、この名前は、対象となるアプリケーションと監視ロジックを関連付けるプロセスにおいて重要な役割を果たします。
エージェントが Enterprise Manager にレポートするときは、Investigator ツリーにそのエージェントのノードが作成されます。Workstation でダッシュボード、アラート、アクションなどの管理ロジックを設定する場合、エージェント名は管理ロジックの適用対象となるアプリケーションを識別する正規表現のコンポーネントになります。以下の Investigator ツリーには、WebLogic プロセスの下のホスト qw32vtest01 で実行している domain1//Adminserver という名前のエージェントが表示されています。
*SuperDomain*。
Custom Metric Host (Virtual)
Custom Metric Process (Virtual)
Custom Metric Agent (Virtual)(*SuperDomain*)
エージェント
アラート
Enterprise Manager
qw32vtest01(ホスト マシン)
WebLogic(プロセス)
domain1//Adminserver (*SuperDomain*)(agent)
EM ホスト
Java バージョン
Launch Time
ProcessID
Virtual Machine
エージェントの名前付けの方法
Java エージェントは、以下の順に名前を決定します。
  1. 1 つ目の方法で名前が見つかった場合はその名前が採用され、Enterprise Manager に接続されます。
  2. 1 つ目の方法を使用しても名前が見つけられなかった場合は、2 つ目の方法が試されます。その後も同様です。
  3. どの方法を使用しても名前が見つけられなかった場合は、その Java エージェントに「UnnamedAgent」という名前が付けられます。
方法 1: Java システム プロパティに指定されたエージェント名
エージェント名は、コマンド ラインで Java システム プロパティを使用して定義されます。この方法は、ほかのエージェント名前付けの方法より優先されます。
Java コマンド ラインから Java システム プロパティを使用してエージェント名を指定するには、このプロパティを使用して任意の名前を指定します。
-Dcom.wily.introscope.agent.agentName=
方法 2: IntroscopeAgent.profile のシステム プロパティ キーに指定されたエージェント名
この方法は、エージェントが名前の検索に使用する 2 番目の方法です。
IntroscopeAgent.profile
で指定した既存の Java システム プロパティの値を使用してエージェントに名前を付ける場合は、この方法を使用します。
以下の手順に従います。
  1. IntroscopeAgent.profile
    を開きます。
  2. 「Agent Name 」セクションにある以下のプロパティで、エージェント名を提供する Java システム プロパティを指定します。
    introscope.agent.agentNameSystemPropertyKey
    注:
    ここで指定された Java システム プロパティが存在しない場合、このプロパティは無視されます。
  3. アプリケーション サーバを再起動します。
方法 3: アプリケーション サーバから自動的に取得されたエージェント名
特定のバージョンの WebLogic または WebSphere を使用している場合、エージェント自動名前付け機能を使用して、エージェント名を自動的にアプリケーション サーバから取得できます。これによって、エージェント プロファイル ファイルごとに個別のエージェント名を設定する手間が省けます。アプリケーション サーバ環境で変更があった場合、エージェントは、自身の名前を変更できます。これにより、アプリケーション サーバ プラットフォームが混在している可能性がある多数の環境に、単一のエージェント プロファイルを展開できます。
遅延を設定して、Enterprise Manager に接続する前に名前を決定するのに必要な時間をエージェントに与えることができます。
エージェント自動名前付け機能がサポートされるのは、以下のサポートされているアプリケーション サーバのバージョンで Introscope を使用する場合です。
  • JBoss
  • WebLogic
  • WebSphere Distributed
Workstation に表示されるアプリケーション サーバの名前は、Java J2EE API によって決定されます。すべてのアプリケーション サーバで API の実装方法が異なるため、それが原因でアプリケーション サーバの名前が Workstation 内で異なって表示されることがあります。Workstation 内では、複数のアプリケーション サーバの名前が異なる方法でフォーマットされており、アプリケーション サーバの名前が同じでも、リリースごとに異なる方法でフォーマットされている可能性があります。
方法 4: エージェント プロファイルで明示的に指定されたエージェント名
エージェント名は、
IntroscopeAgent.profile
のプロパティ
introscope.agent.agentName
で定義されています。初期のバージョンの Introscope では、この方法がエージェントの名前付けの標準でした。すでにアプリケーション別のエージェント プロファイルがある場合は、このオプションを使用します。
方法 5: 「未知のエージェント」であると判断されたエージェントの名前
上記のいずれかの方法を使用してもエージェントの名前を判断できなかった場合は、そのエージェントに「UnnamedAgent」という名前が付けられます。
クラスタ化されたアプリケーション用のエージェントの名前付けに関する考慮事項
同じアプリケーションの複数のインスタンスを実行する場合、Introscope はカスタム メトリック エージェントを
含む
同一のエージェント名を、名前に文字と乱数を追加することによって解決しようとします。ただし、CA Technologies では、Introscope が名前付けを解決するように設定することをお勧めします。
同一 エージェント名を解決するためのオプションには以下のものがあります。
エージェント自動名前付け
エージェント自動名前付け機能が有効になっている場合、エージェントは、起動時にアプリケーション サーバからの名前情報を検索します。エージェントは、エージェント名を取得してから Enterprise Manager に接続します。
エージェントが名前付けに必要な情報を見つけると、Introscope は、その情報を編集して、エージェント名をエージェント名前付け規則に準拠させます。
サポートされているアプリケーション サーバでのエージェント名は、いくつかの情報の要素から構成され、それらはアプリケーション サーバごとに異なります。
  • JBoss の場合、エージェント名はサーバの起動時に指定される設定名に基づいています。
  • WebLogic の場合、エージェント名は以下のようになります。
    ドメイン(データ センター) + クラスタ + (WLS の)インスタンス
  • WebSphere の場合、エージェント名は以下のようになります。
    セル(ドメイン) + プロセス(WAS のインスタンス)
情報が取得されると、セグメントはスラッシュで区切られます。例: medrec/MyCluster/MedRecServer
個々のセグメントの名前に含まれるスラッシュはすべて下線に変換されます。たとえば、ドメインの名前が Petstore/West である場合は、Petstore_West と変換されます。
注:
Introscope は、以下の規則に従って、エージェント名の作成に使用される情報を編集します。
  • パイプ、コロン、パーセンテージ記号などの文字は、下線に置き換えられます。
  • 英字以外の文字で始まる名前には、先頭に「A」が追加されます。
  • 空の名前は、「UnknownAgent」である状況と区別するために「UnnamedAgent」に置き換えられます。
エージェント自動名前付け機能を有効にする方法
  1. IntroscopeAgent.profile
    で、
    introscope.agent.agentAutoNamingEnabled
    true
    に設定します。
  2. 以下のアプリケーション サーバ固有の変更を行います。
    • WebLogic の場合、Introscope 起動クラスを作成します。
    • WebSphere の場合、Introscope カスタム サービスを作成します。
    • JBoss の場合、XML ファイルを作成します。
エージェント自動名前付けおよび名前変更されたエージェント
エージェント自動名前付け機能を使用すると、エージェントは常に、各アプリケーション サーバ固有の最新のエージェント名を取得しようとします。このために、エージェントは定期的に新しい名前をチェックします。
アプリケーション サーバ設定を変更した結果としてエージェント名が変更される場合、エージェントは自動的に自身の名前を変更します。このとき、このエージェントは、Investigator ツリーでは切断されているものとして表示されます。切断されたエージェントは、引き続き Investigator ツリーに表示され、定義されているマウント解除までの待機時間が経過した後、自動的にマウント解除されます。また、手動でもマウント解除できます。
名前変更されたエージェントは、Enterprise Manager に再接続され、Investigator ツリーに表示されます。エージェントは、これらの変更を記録します。
エージェントの高度な自動名前付けオプション
ご使用の環境に合わせてエージェント自動名前付け機能を制御するために変更できるプロパティがいくつかあります。
Enterprise Manager の初期接続の遅延
エージェント自動名前付け機能を使用する場合、エージェントは、Enterprise Manager に接続する前に、エージェント名情報を検索する長さとして設定された時間まで待機します。デフォルトの遅延は 120 秒です。
以下の手順に従います。
  1. IntroscopeAgent.profile
    を開きます。
  2. 「Agent Name」セクションのプロパティ
    introscope.agent.agentAutoNamingMaximumConnectionDelayInSeconds
    で必要な遅延を設定します。
  3. アプリケーション サーバを再起動します。
遅延値が設定されました。
エージェントの名前変更チェック間隔
エージェント自動名前付け機能を使用している場合、エージェントはアプリケーション サーバの名前付け情報が変更されているかどうかを定期的にチェックします。デフォルト間隔は 10 分です。
この間隔を変更する方法
  1. IntroscopeAgent.profile
    を開きます。
  2. 「Agent Name」セクションのプロパティ
    introscope.agent.agentAutoRenamingIntervalInMinutes
    で必要な間隔を設定します。
  3. アプリケーション サーバを再起動します。
エージェント ログ ファイルの自動名前付けの無効化
デフォルトでは、Java システム プロパティまたはアプリケーション サーバから提供された情報によってエージェント名が自動的に検出されたときに、そのエージェントに関連付けられているログ ファイルにも、同じ情報を使用して自動的に名前が付けられます。ただし、このログの自動名前付けをオフにして、
IntroscopeAgent.profile
で指定されたエージェント ログ名を引き続き使用することもできます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    を開きます。
  2. プロパティ
    introscope.agent.disableLogFileAutoNaming
    の値を
    true
    に設定します。
  3. IntroscopeAgent.profile
    を保存します。
  4. アプリケーション サーバを再起動します。
クラスタ化された環境での重複したエージェントの名前付けの有効化
同じホストおよびプロセスのモニタを行う同じ名前のエージェントが 2 つ存在し、これらにユーザが一意の名前を付けていない場合、名前に数が追加されます。重複するエージェントの名前付けを有効にすると、エージェントとクラスタ化されたアプリケーション内の特定のアプリケーション インスタンスを互いに関係付けることができます。
以下の場合は重複するエージェントを実行しています。
  • ホスト、プロセス、または Java エージェント名を、1 つ以上のほかのエージェントと共有しているエージェントを実行している。
  • 同じエージェント プロファイルを使用している複数のエージェントを実行している。
以下の手順に従います。
  1. 管理対象アプリケーションおよび Java エージェントを停止します。
  2. IntroscopeAgent.profile
    を開き、以下のプロパティを true に設定します。
    introscope.agent.clonedAgent
    =true
  3. IntroscopeAgent.profile
    を保存します。
  4. 管理対象アプリケーションおよび Java エージェントを再起動します。
重複するエージェントの名前付けの例
Java エージェントの重複プロパティがオンになっている場合、名前がすべて
AgentX
である 4 つの Java エージェントがあると、Enterprise Manager はこれらのエージェントに
AgentX-1
AgentX-2
AgentX-3
、および
AgentX-4
という名前を付けます。
AgentX-1
が切断されて再接続された場合は、再接続時に、名前としてまた
AgentX-1
を使用します。この名前付けでは、データベース内の Java エージェント名の数が、元の重複した Java エージェントの数を超えることはなくなります。
アプリケーション インスタンスに対する一意の名前の設定
同じマシン上にあるアプリケーションの複数のインスタンスを監視する場合、以下のように一意のエージェント名を明示的に設定できます。
一意のエージェント名を設定する方法
  1. 各アプリケーションに別々のエージェント プロファイルを作成します。
  2. エージェント プロファイルで各エージェントに一意の名前を付けます。
  3. 各アプリケーションが使用するエージェント プロファイルを指定します。
Introscope によるエージェント名前付けの競合の解決方法
ホスト名、プロセス名、およびエージェント名で構成されるエージェントの完全修飾名は、通常、Introscope 環境内の各エージェントで一意です。ほとんどの場合、ホスト名とプロセス名は異なるため、複数のエージェントが同じエージェント名を持つ場合は、一意の「
完全修飾
」エージェント名が付けられます。複数のエージェントが同じ完全修飾エージェント名を持つのは、それらが同じホスト上にあり、同じプロセスのモニタを行い、同じエージェント名を持っている場合のみです。
エージェントが Enterprise Manager に接続しようとする際に、同じ完全修飾エージェント名を持つ別のエージェントがすでに接続されている場合、Enterprise Manager は、新しく接続するエージェントの名前の最後に一意の識別子を追加します。識別子は、パーセント(%)文字と数字で構成されます。このメカニズムによって、同じ完全修飾名を使用して接続する複数のエージェントを、接続中に一意に識別できるようにします。Enterprise Manager は、接続しているエージェントのうち、重複する 1 つ目のエージェントの名前を、その末尾に「%1」を追加して変更します。
たとえば、以下の完全修飾エージェント名を持つ 2 つのエージェントがあるとします。
hostPA|processNIM|PodAgent
Enterprise Manager に 1 つずつ接続します。Enterprise Manager は 2 つ目のエージェントの名前を以下のように変更します。
PodAgent%1
同じ完全修飾名の別のエージェントが接続されると、順に
PodAgent%2
PodAgent%3
PodAgent%4
のように名前が変更されます。パーセント文字の後の数字は、続き番号です。
名前が変更されたエージェントが切断されると、割り当てられていた末尾の文字列を再使用できます。たとえば、PodAgent の接続中に PodAgent%1 が切断された場合、次に接続される、完全修飾名
hostPA|processNIM|PodAgent
のエージェントの名前は、
PodAgent%1
に変更されます。
末尾の識別子を再使用することで、Enterprise Manager は、接続のたびに特定のエージェント名の末尾に同じ文字列を追加することが可能です。しかし、連続する接続で、対象となるエージェントの名前変更をこの方法で行うことはお勧めしません。エージェント名が接続のたびに変わるのは、履歴データをクエリする際に問題になります。したがって、Enterprise Manager がエージェントの名前を変える必要がないような名前付けの方針を設定することをお奨めします。
アプリケーション問題切り分けマップとエージェント名
Workstation のアプリケーション問題切り分けマップでは、Introscope データベースにアプリケーション コンポーネントの情報を保存する場合に加えて、フロントエンドおよびバックエンドのアプリケーションを定義する場合にも、いくつかの一意の識別子の一部としてエージェント名を使用します。エージェント名が変更されると、アプリケーション問題切り分けマップの一部の内容も変更される場合があります。たとえば、エージェントを初めて登録するときに、Enterprise Manager は、
%<sequence number>
をエージェント名に追加して、重複したエージェント名を一意の名前として割り当てる場合があります。追加するエージェント名の例としては、
MyAgent%1
があります。アプリケーション問題切り分けマップの一部が、重複したエージェント名に情報を依存している場合、マップの内容が変わる場合があります。
これはエージェントや Enterprise Manager の正常な機能に影響しませんが、システム全体のキャパシティを低下させる場合があります。そのため、Introscope 環境で使用する命名規則には十分注意することをお勧めします。この問題を回避するために、明確なエージェント名を指定することもできます。
JBoss の自動名前付けの有効化
JBoss アプリケーション サーバの自動名前付け機能を有効にします。
以下の手順に従います。
  1. Java エージェントがインストールされている <
    Agent_Home
    >\common ディレクトリに移動します。
  2. WebAppSupport.jar ファイルを選択し、アプリケーション サーバ(スタンドアロン)のデプロイ フォルダに移動します。
  3. IntroscopeAgent.profile に以下の行を追加します。
    com.wily.use.platform.mbeanserver=true
  4. standalone.xml ファイルに以下の行を追加します。
    <server name="jboss7" xmlns="urn:jboss:Domain:1.2">
    指定した名前が Investigator に表示されることを確認します。