Java エージェントのモニタリングおよびログ記録

内容
apmdevops96jp
内容
Introscope でアプリケーションを監視する際は、Java エージェント自体の稼働状況およびアクティビティも監視できます。 このセクションでは、エージェントの稼働状況の監視、および Java エージェントのログ記録オプションについて説明します。
エージェントの接続メトリックの設定
デフォルトで、Introscope は、Enterprise Manager に接続されているエージェントの接続ステータスについて監視可能なメトリックを生成します。 エージェントの接続メトリックを監視すれば、エージェントと Enterprise Manager 間の接続の現在の状態を判断できます。
エージェントの接続メトリックは、Workstation Investigator の Enterprise Manager プロセス(カスタム メトリック ホスト)の下に表示されます。
Custom Metric Host (Virtual)|Custom Metric Process(Virtual)|Custom Metric Agent (Virtual) (*SuperDomain*)|Agents|<HostName>|<Agent Process Name>|<Agent Name>|ConnectionStatus
接続メトリックに設定される値を以下に示します。
  • 0 -- エージェントに関して利用できるデータがありません。
  • 1 -- エージェントは接続されています。
  • 2 -- エージェントは、レポートを行うために速度が低下しています。
  • 3 -- エージェントは切断されています。
エージェントの切断によって、「注目点」イベントも生成されます。 ほかのイベントと同様に、ユーザは、履歴クエリ インターフェースを使用して、エージェントの切断についてクエリを実行できます。 エージェント切断イベントは、Workstation および WebView の[概要]タブで、アプリケーションの稼働状況の評価に使用されるデータの一部です。
エージェントが Enterprise Manager から切断された後、Introscope はエージェントがタイムアウトするまで切断状態のメトリックの生成を続けます。 エージェントがタイムアウトすると、接続メトリックは生成されなくなり、Enterprise Manager にもレポートされません。
以下の手順に従います。
  1. Enterprise Manager がインストールされているコンピュータで、
    <Introscope_Home>/config
    ディレクトリにある
    IntroscopeEnterpriseManager.properties
    ファイルを開きます。
  2. 以下のプロパティを変更します。
    introscope.enterprisemanager.agentconnection.metrics.agentTimeoutInMinutes
    時間は分単位で指定します。
  3. IntroscopeEnterpriseManager.properties
    を保存します。
ソケット メトリック
ソケットおよび Secure Sockets Layer(SSL)のメトリック コレクションは、エージェントではデフォルトで有効になっています。
注:
  • AgentNoRedefNoRetrans.jar
    を使用している JVM は、ソケット メトリックをレポートしません。
  • GlassFish アプリケーション サーバはデフォルト ソケット実装を変更します。 そのため、エージェントはソケット メトリックをレポートせず、グレー表示されます。 Concurrent Readers、Concurrent Writers、Input Bandwidth(Bytes Per Second)、および Output Bandwidth(Bytes Per Second) などのメトリックは、以下の下に表示されます。
    • Sockets|Client| |CA portal
    • Sockets|Server|CA Portal
アプリケーション問題切り分けマップでの SSL、NIO、およびソケットの追跡
アプリケーション問題切り分けマップには、インスツルメントされたクライアント ソケット接続を表示できます。 エージェントは、トランザクションで使用されている外部システムの詳細を記録し、その情報を Enterprise Manager に送信します。 この情報は、アプリケーション問題切り分けマップにグラフィカルに表示されます。
<Agent_Home>
/core/config ディレクトリにある appmap.pbd のトレーサは、既存の SSL、NIO、およびソケット インスツルメンテーションを拡張します。 このため、エージェントはアプリケーション問題切り分けマップにより多くのコンポーネント情報を送信できます。 これらのトレーサは、デフォルトで有効になっています。 appmap.pbd にある Trace Sockets および Trace NIO Sockets セクションの特定のトレーサをコメント化することで、無効にすることができます。
ソケットおよび SSL メトリック コレクションの微調整
特定のトレーサ グループをオンまたはオフにすることにより、メトリック コレクションを細かく指定することができます。 これを行うことで、
  • 必要な情報を対象にすることができます。
  • オーバーヘッド コストを削減できます。
以下の手順に従います。
  1. <Agent_Home>
    /core/config ディレクトリにある java2.pbd ファイルを開きます。
  2. java2.pbd の I/O Socket Tracer Group または Network Tracer Group セクションで、オンまたはオフにするトレーサを見つけて、そのトレーサをコメント化するか、コメント化を解除します。 たとえば、入力帯域幅のメトリックを抑制するには、以下をコメント化します。
    #TraceOneMethodWithParametersIfFlagged: SocketTracing read InputStreamBandwidthTracer "Input Bandwidth (Bytes Per Second)"
    注:
    MappingTracer で終わる名前を持つトレーサはコメント化しないでください。
  3. java2.pbd ファイルを保存します。
ソケットおよび SSL メトリック コレクションの制限
ソケットおよび SSL メトリック コレクションはデフォルトで有効になっています。 監視対象アプリケーションまたはサービスで一時的なソケットを多数作成するものがあると、これらのソケットに関する情報を保存するために、メモリの使用量が通常より大きくなることがあります。 これは、標準ソケットのほか、管理対象ソケットや NIO ソケットでも確認されています。
メモリ オーバーヘッド問題を防ぐために、またはより関連性の高い情報を対象にするために、以下の設定作業のいずれかまたは両方を実行します。
メトリック コレクションを制限するためのエージェント プロファイルの編集
以下の手順に従います。
  1. IntroscopeAgent.profile
    ファイルをテキスト エディタで開きます。
  2. Agent I/O Socket Metrics セクションで以下のプロパティの値を編集し、メトリックが必要とするホストのまたはポートのリストを追加します。
    パラメータの値に無効なホストまたはポートが含まれていると、エージェント ログに警告メッセージが書き込まれ、その値は無視されます。 その結果としてリストにエントリがない場合、制限は適用されません。
    • introscope.agent.io.socket.client.hosts
      カンマ区切りのホストのリスト。指定されたホストの「クライアント」のソケット メトリックのみが生成されます。 ホストは、名前または IP アドレスのテキスト表現(IPv4 または IPv6 形式のいずれか)を使用して指定できます。
      注:
      重複したホスト名は無視されます。 複数のホスト名が 1 つの IP にマップされている場合、1 つの名前のみが保持されます。 ただし、プロパティは、同じ意味の名前のいずれかのセットとクライアント接続を照合します。
    • introscope.agent.io.socket.client.ports
      カンマ区切りのポート番号のリスト。指定されたポートの「クライアント」ソケット メトリックのみが生成されます。
      注:
      重複したポート名は無視されます。
    • introscope.agent.io.socket.server.ports
      カンマ区切りのポート番号のリスト。指定されたポートの「サーバ」ソケット メトリックのみが生成されます。
    上記のプロパティは動的です。変更を有効にするためにアプリケーションを再起動する必要はありません。
  3. IntroscopeAgent.profile
    を保存します。
アプリケーション問題切り分けマップのコンポーネント名の変更
アプリケーション問題切り分けマップに表示される場合、コンポーネント名には宛先ホストとポート ID が含まれます。クライアントのソケット メトリック名も同様に表示されます。 コンポーネント名のホスト ID には、ホスト名またはホストの IP アドレスのどちらかを使用するように設定できます。 デフォルトではホスト名を使用します。 表示されるコンポーネント名を変更できます。
以下の手順に従います。
  1. <Agent_Home>
    /core/config ディレクトリにある appmap.pbd を開きます。
  2. Trace Sockets および Trace NIO Sockets セクションで、変更するトレーサを選択します。
  3. 関連するトレーサで
    {Hostname}
    {hostip}
    に変更します。
    たとえば、以下のように、元のトレーサはデフォルトの
    {hostname}
    を使用しています。
    TraceOneMethodWithParametersIfFlagged: SocketTracing read AppMapSocketTracerBT "System 
    {hostname}
     on port {port}"
    TraceOneMethodWithParametersIfFlagged: SocketTracing write AppMapSocketTracerBT "System 
    {hostname}
     on port {port}"
    ホスト IP を表示するには、代わりに
    {hostip}
    を使用します。
    TraceOneMethodWithParametersIfFlagged: SocketTracing read AppMapSocketTracerBT "System 
    {hostip}
     on port {port}"
    TraceOneMethodWithParametersIfFlagged: SocketTracing write AppMapSocketTracerBT "System 
    {hostip}
     on port {port}"
  4. appmap.pbd ファイルを保存します。
下位互換性
対象: リリース 9.0 より前のトレーサ
Java エージェント ソケット トレーサは、9.0 より前のリリースのトレーサよりも多くの内容を設定できます。 ただし、以前のトレーサに戻す(およびソケット追跡機能と設定オプションを無効にする)ことができます。
9.0 より前のリリースのトレーサを使用している場合、Java エージェントを設定できます。
ソケット メトリックの収集
対象: リリース 9.0 より前のトレーサ
トレーサを使用して、ソケット メトリックを収集するには、Java エージェントを設定します。
以下の手順に従います。
  1. toggles-full.pbd または toggles-typical.pbd ファイルを開きます(デプロイ時に使用したファイルを開きます)。
  2. 以下のように、SocketTracing をコメント化します(シャープ記号またはハッシュ記号(#)を行頭に挿入します)。
    #TurnOn: SocketTracing
  3. ManagedSocketTracing のコメント化を解除します。
    TurnOn: ManagedSocketTracing
  4. ファイルを保存します。
入出力帯域幅メトリックを収集する方法
対象: リリース 9.0 より前のソケット トレーサ
ソケット トレーサを使用しており、入出力帯域幅メトリックが必要な場合は、Java エージェントを設定します。
以下の手順に従います。
  1. IntroscopeAgent.profile を開きます。
  2. Agent Socket Rate Metrics セクションを見つけて、以下のプロパティを true に変更します。
    introscope.agent.sockets.reportRateMetrics=true
    注:
    ManagedSocketTracing が有効で、SocketTracing が無効である場合にのみ、機能します。
  3. IntroscopeAgent.profile を保存します。
ログ記録オプションの設定
Java エージェントがアプリケーション サーバにインストールされている場合には、サーバの起動後に、ログ ディレクトリが
<Agent_Home>
/logs
に作成されます。
アプリケーション サーバ プロセスは、
<Agent_Home>
ディレクトリに対して完全な読み取り/書き込み/実行権限を持っている必要があります。 これを実現するには、アプリケーション サーバ プロセスを実行しているオペレーティング システム上の同じユーザで Java エージェントをインストールします。 または、Java エージェントを別のユーザとしてインストールし、
chmod
コマンドを使用して必要な権限を付与します。
Java エージェントには冗長モードで実行するオプションが用意されています。 冗長モードでは、アクションおよびご利用の環境とのエージェントのやり取りに関してより詳細なレベルで記録します。 この情報は、環境またはエージェントの機能についての問題を解決する場合に役立ちます。
Introscope では、これらに Log4J 機能が使用されます。 ほかの Log4J 機能を使用する場合は、Log4J のマニュアルを参照してください。
冗長モードでのエージェントの実行
エージェントを冗長モードで実行すると、エージェント ログにはより詳細なレベルの情報が記録されます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    ファイルをテキスト エディタで開きます。
  2. 既存の
    INFO
    VERBOSE#com.wily.util.feedback.Log4JSeverityLevel
    に置き換えて、このプロパティを変更します。
    log4j.logger.IntroscopeAgent
    =VERBOSE#com.wily.util.feedback.Log4JSeverityLevel, logfile
  3. IntroscopeAgent.profile
    を保存します。
    注:
    このプロパティへの変更は、1 分以内に有効となり、管理対象アプリケーションを再起動する必要はありません。
エージェント出力のファイルへのリダイレクト
冗長モードでエージェントのログ記録を制御するプロパティはまたエージェント ログが出力される場所およびこのログ ファイルの場所も制御します。
以下の手順に従います。
  1. IntroscopeAgent.profile
    ファイルをテキスト エディタで開きます。
  2. プロパティ
    log4j.logger.IntroscopeAgent
    を探します。
    このプロパティのオプションは以下のようになります。
    • console
      : ログファイルの情報はコンソールに送信されます。
    • logfile
      : ログファイルの情報はログファイルに送信されます。 これを選択した場合、ログ ファイルの場所は
      log4j.appender.logfile.File
      プロパティを使用して設定されます。
    たとえば、エージェントが冗長モードでログ ファイルのみにレポートするように設定する場合、プロパティは以下のように設定します。
    log4j.logger.IntroscopeAgent=VERB
    OSE#com.wily.util.feedback.Log4JSeverityLevel,logfile
    エージェントがログファイルとコンソールの両方にレポートするように設定する場合、プロパティには
    logfile
    console
    の両方を含めます。
    : デフォルトでは、エージェント ログ
    IntroscopeAgent.log
    /logs
    ディレクトリに書き込まれます。 エージェントの自動名前付けオプションを設定している場合、エージェントのログ ファイルも自動的に名前が付けられます(「エージェントのログ ファイルおよびエージェントの自動名前付け」を参照)。
  3. IntroscopeAgent.profile
    を保存します。
エージェントのログ ファイルの名前または場所の変更
プロパティを変更してログ ファイルの場所および名前を変更することもできます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    ファイルをテキスト エディタで開きます。
  2. log4j.appender.logfile.File
    プロパティを探します。
    logfile
    log4j.logger.IntroscopeAgent
    プロパティで指定されている場合、ログ ファイルの場所は
    log4j.appender.logfile.File
    プロパティを使用して設定されます。
    注:
    システム プロパティ(Java コマンド ライン -D オプション)は、ファイル名の一部に含まれます。 たとえば、Java コマンドが、
    -Dmy.property=Server1
    で起動されると
    、log4j.appender.logfile.File=../../logs/Introscope-${my.property}.log
    log4j.appender.logfile.File=../../logs/Introscope-Server1.log
    に拡張されます。
  3. 新しい場所とファイル名の完全修飾パスを使用して、ログ ファイルの場所と名前を設定します。 たとえば、以下の通りです。
    log4j.appender.logfile.File=C:/Logs/AgentLog1.log
  4. IntroscopeAgent.profile
    を保存します。
エージェントのログ ファイルおよびエージェントの自動名前付け
エージェント自動名前付け機能を使用している場合は、デフォルトで、そのエージェントに関連付けられているログファイルにも、エージェントの名前付けと同じ情報を使用して自動的に名前が付けられます。
エージェントの自動名前付けは、以下の方法でログ ファイルにも影響があります。
  • ログ ファイルの元の名前が
    .log
    で終わっていない場合は、末尾にピリオドおよび
    log
    が追加されます。
  • 英字または数字以外のすべての文字は下線で置き換えられます。
  • 高度な Log4J 機能が使用されている場合、エージェント ログ ファイルの自動名前付け機能は動作しません。
以下の例では、エージェントのログ ファイルの名前付けの方法を示しています。 この例では、エージェント名
DOM1//ACME42
DOM1
は WebLogic ドメイン、
ACME42
はインスタンス)を使用します。
エージェント ログ ファイル(デフォルト名は
AutoProbe.log
)が作成されるときに、まだエージェント名が利用できない場合は、次のようにファイル名にタイムスタンプが含まれます。
AutoProbe.20040416-175024.log
エージェント名を利用できるようになると、エージェントの自動名前付けを使用してログ ファイル名は以下のように変更されます。
AutoProbe.DOM1_ACME42.log
ログの自動名前付けを無効にするには、プロパティ
introscope.agent.disableLogFileAutoNaming
を true に設定します。
 
日付またはサイズによるログのロール アップ
サイズまたは日付に基づいてログをロール アップし、指定された日数の情報を保持して残りをパージすることができます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    を開き、Logging Configuration セクションを探します。
  2. 以下のプロパティを変更します。
    log4j.logger.IntroscopeAgent
    log4j.appender.logfile.File
    log4j.appender.console.layout
    log4j.appender.console.layout.ConversionPattern
    log4j.appender.logfile
    log4j.appender.logfile.MaxFileSize
    log4j.appender.logfile.MaxBackupIndex
    注:
    このプロパティの変更を有効にするには、管理対象アプリケーションを再起動する必要があります。
  3. IntroscopeAgent.profile
    を保存します。
    たとえば、以下の設定では、バックアップ ログまたはロールアップされたログを最大 3 つまで維持します。また、各ログのサイズは 2 キロバイト以内にします。
    log4j.logger.IntroscopeAgent=VERBOSE#com.wily.util.feedback.Log4JSeverityLevel, logfile
    log4j.appender.logfile.File=logs/IntroscopeAgent.log
    log4j.appender.console.layout=com.wily.org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=%d{M/dd/yy hh:mm:ss a z} [%-3p] [%c] %m%n
    log4j.appender.logfile=com.wily.introscope.agent.AutoNamingRollingFileAppender
    log4j.appender.logfile.MaxFileSize=2KB
    log4j.appender.logfile.MaxBackupIndex=3
ProbeBuilder ログの管理
ProbeBuilder は、参照するすべてのクラス、インスツルメントするすべてのクラス、さらにインスツルメンテーションを追加しないすべてのクラスをログ記録します。また、インスツルメンテーション プロセス中に追加したプローブ、および使用した PBD も記録します。 さらに、スキップしたためにインスツルメントされなかったクラスもログ記録します。
コマンド ライン ProbeBuilder および ProbeBuilder ウィザードのログの名前および場所
コマンドライン ProbeBuilder と ProbeBuilder ウィザードのログ ファイルの場所は、ProbeBuilder ウィザードまたはコマンド ライン ProbeBuilder で Java クラスを指定した場所によって決まります。 ディレクトリの場合、ログ ファイルは、出力先ディレクトリ内に置かれます。 ファイルの場合、ログ ファイルは、出力先ファイルの近くに置かれます。
ProbeBuilder ログ ファイルは以下のような名前になります。
<original-directory-or-original-file>.probebuilder.log
<original-directory>
または
<original-file>
は、ProbeBuilder ウィザードまたはコマンド ライン ProbeBuilder で指定した Java クラスの場所です。
最新のログのみが維持され、以前のログ ファイルはすべて上書きされます。
AutoProbe ログの名前および場所
AutoProbe は常に変更を記録しようとしています。 デフォルトの AutoProbe ログ ファイルの名前は
AutoProbe.log
です。
AutoProbe ログの名前または場所を変更できます。
以下の手順に従います。
  1. IntroscopeAgent.profile
    ファイルをテキスト エディタで開きます。
  2. introscope.autoprobe.logfile
    プロパティを探し、完全修飾されたファイル パスを使用して、ログの名前および場所を変更します。 絶対名以外で指定すると、
    IntroscopeAgent.profile
    ファイルを起点とする相対的な指定と見なされます。
    注:
    エージェント プロファイルをクラスパスのリソースからロードする場合、
    IntroscopeAgent.profile
    ファイルがリソース内に置かれているため、AutoProbe が自分のログ ファイルに書き込むことができなくなります。
    このプロパティの変更を有効にするには、管理対象アプリケーションを再起動する必要があります。
  3. IntroscopeAgent.profile
    を保存します。
    AutoProbe ログの名前および場所が変更されました。