JRun メトリックの使用

JRun には、メトリック サービスが用意されています。メトリック サービスを使用すると、JWS または JCP サービス、メモリの使用状況、スレッド、セッション、およびその他のデータに関する情報を効率よく柔軟に収集できます。メトリック サービスを使用して収集できる情報の種類を把握したら、メトリック サービスをログ サービスに組み込むことによって、独自のレポートを生成できます。

このセクションでは、メトリック サービスの概要を述べ、一部のサンプルの使用例を記載します。詳細は、『JRun によるアプリケーションの開発』を参照してください。

メトリックの設定

メトリック情報のログ機能を有効にするには

  1. JMC の左側のペインで、[マシン名] > [ JRun サーバ] > [ログ ファイルの設定] を選択します。

    [ログ ファイルの設定] パネルが表示されます。

  2. 右側のペインで [編集] をクリックします。

    [ログ ファイルの設定] 編集ウィンドウが表示されます。

  3. [Logging Level] フィールドで、[Metrics] チェックボックスをオンにします。

    これにより、この JRun サーバの local.properties ファイル内の logging.loglevel
    プロパティにメトリックが追加されます。

    logging.loglevel=info,warning,error,metrics
    

    メトリック サービスをすべてのサーバが使用できるように、メトリックを global.properties ファイルに手作業で追加できます。

  4. JRun サーバを再起動します。
  5. JRun サーバのログ ファイル (JRun のルート ディレクトリ/logs 内) を調べます。次のようなエントリがあります。
    10/02 12:48:04 metrics (JRun) (jcp+web) Heap=4263KB Listen=2
        Idle=0 Queued=0 Busy=0 Total=2
        Requests (count/total ms)=3/594 Delayed=0
        TotalDelay=0 BytesIn=778 BytesOut=539
        Sessions (active/in memory)=0/0
    

    既定では、メトリック ログ エントリは、JRun サーバの <server>-event.log ファイル 内に表示されます。すべての情報は同じ行に表示されます。独自のログ ファイルの 作成方法については、『JRun によるアプリケーションの開発』を参照してください。

既定のメトリック ログ メッセージには、JRun Web サーバ (web サービス) とサードパーティ Web サーバへの接続 (jcp サービス) の両方のメトリックが含まれています。ほかの JRun ログ メッセージと同様に、使用可能なメトリック変数を追加または削除することによって、メトリックの形式を制御できます。使用可能なメトリック変数についての説明は、"ログ形式について"に記載されています。

ログ形式について

メトリック サービスは複数のメトリック変数を使用します。メトリック変数には、JVM および JRun サーバ専用のものと、JRun Web サーバ (JWS) または外部 Web サーバ接続専用のものがあります。次のセクションでは、これらの変数について説明します。

既定のメトリック形式

monitor.format プロパティは、メトリック サービスのログ メッセージの形式を指定します。このプロパティは、あらかじめ定義された形式に指定するか、または独自の形式を作成できます。次に例を示します。

monitor.format={monitor.jcp-format}

JRun には次のあらかじめ定義された形式が含まれています。

monitor.web-format
monitor.jcp-format
monitor.combined-format

これらの形式の構成を調べるには、global.properties ファイルを参照してください。たとえば、既定の jcp-format は、このプロパティ ファイルでは、次のメッセージから構成されています。

monitor.jcp-format=(jcp) Heap={totalMemory}KB Listen={jcp.listenTh} 
Idle={jcp.idleTh} Queued={jcp.delayTh} Busy={jcp.busyTh} 
Total={jcp.totalTh} Requests (count/total ms)={jcp.handledRq}/
{jcp.handledMs} Delayed={jcp.delayRq} TotalDelay={jcp.delayMs} 
BytesIn={jcp.bytesIn} BytesOut={jcp.bytesOut} Sessions (active/
in memory)={sessions}/{sessionsInMem}

形式フィールドはすべて同じ行にある必要があります。

カスタム メトリック形式

JRun は、ログ メッセージを生成するときにすべての変数値をリセットします。したがって、ログ内の各ログ メッセージ内には、直前の時間間隔において発生したイベントを蓄積できます。

カスタム レポートでは、monitor.interval プロパティが非常に重要です。このプロパティを秒単位で設定することによって、分、時、日、またはどのような間隔でも統計を追跡できます。これは、課金モデルのサポートに役立ちます。このセクションで取り上げられているサンプル データは 10 秒間隔で追跡されています。

たとえば、JVM 空きメモリ容量、処理する要求の数、JRun Web サーバのクライアントに書き戻される総バイト数のみを追跡する場合は、monitor.format プロパティは次のように設定してください。

monitor.format=Free={freeMemory}KB Requests={web.handledRq} 
  Out={web.bytesOut}

ログ ファイル内のメトリック ログ メッセージは次のように表示されます。

10/02 13:16:11 metrics (JRun) Free=4271KB Requests=9 Out=1613

ログ ファイルの作成時は次の点に注意してください。

次の 2 つのセクションでは、メトリック サービスが利用できる変数について説明します。

JVM 別および JRun サーバ別メトリック

JRun には、JVM および JRun サーバ固有のメトリック変数がいくつか用意されています。これらの変数をモニタ形式に追加すると、JVM または JRun サーバに関する特殊情報を記録できます。次の表でこれらのメトリックを説明します。
変数
説明
freeMemory
JVM ヒープ内の空きメモリのキロバイト数
totalMemory
JVM ヒープの総キロバイト数 (空きメモリおよび使用メモリ)
sessions
アクティブ セッションの現在の数
sessionsInMem
メモリ内のアクティブ セッションの現在の数。セッションの永続性は、JRun の構成により、セッション レポジトリまで維持できます。

JRun Web サーバまたはサードパーティ Web サーバのメトリック

また JRun には、JRun Web サーバ (JWS) および外部 Web サーバに関する特殊情報を反映するメトリックも用意されています。これらの変数をモニタ形式に追加すると、JWS または JRun サーバの外部 Web サーバへの接続に関する特殊情報を記録できます。

これらの変数の前には jcp. (外部 Web ブラウザの場合) または web. (JWS の場合)を付ける必要があります。次に例を示します。

{web.bytesIn}
{jcp.bytesIn}

次の表でこれらのメトリックを説明します。
変数
説明
[jcp|web].busyTh
現在動作中のスレッドの数
[jcp|web].delayTh
実行を待っているスレッドの数
[jcp|web].idleTh
新しい要求を待っているスレッドの数
[jcp|web].listenTh
新しい接続に応答するスレッドの数
[jcp|web].totalTh
ワーカ スレッドの総数
[jcp|web].delayRq
高並列処理による、遅延した要求の数
[jcp|web].droppedRq
破棄された要求の数
[jcp|web].handledRq
処理された要求の数
[jcp|web].handledMs
要求の処理に要したミリ秒数
[jcp|web].delayMs
遅延ステートで要したミリ秒数
[jcp|web].bytesIn
すべての要求から読み出されたバイトの数
[jcp|web].bytesOut
すべての応答のために書き込まれたバイトの数

メトリック データを使用したレポートの生成

JRun のメトリック ログ メカニズムを使用すると、データを出力して、パフォーマンス解析またはトラフィック レポートなどのさまざまな種類のデータを生成できます。

このセクションでは、JRun ログ情報を使用して生成できる、簡単なカスタム レポートについて説明します。

CSV ファイルの作成

メトリック データの一般的な用途は、スプレッドシート アプリケーションに直接インポートできる CSV (Comma Separated Value) ファイルの出力です。CSV 出力を生成するには、メトリック変数および定数間にカンマが挿入されるようにモニタ形式を変更します。次の例のように、必ずカンマで開始して日付/時刻を区切ります。

monitor.jcp-format= ,{jcp.bytesIn},{jcp.bytesOut},{totalMemory},
{freeMemory},{{totalMemory}-{freeMemory}}

この例では、次のような JRun サーバのログ ファイルが作成されます。

11/01 13:34:51 metrics (JRun) ,0,0,3191,944,2247
11/01 13:35:01 metrics (JRun) ,0,0,3191,1239,1952
11/01 13:35:11 metrics (JRun) ,0,0,3191,1180,2011

モニタ形式変更後に JRun サーバを再起動して変更を有効にする必要があります。

次のセクションでは一般的なモニタ形式について説明します。また、データを例示するサンプル グラフも記載します。

メモリの使用状況の追跡

JRun サーバの JVM ヒープ統計は、totalMemory および freeMemory メトリックを使用することによって記録できます。仮に monitor.format プロパティ が jcp-format を参照する場合は、次の行を JRun サーバの local.properties ファイルに追加します。

monitor.jcp-format=,{totalMemory},{{totalMemory}-{freeMemory}}

このサンプルには、日付/時刻の列のほかに次の 2 つの列があります。

ログ エントリのサンプル

10/27 15:29:55 metrics (JRun) ,3191,2518
10/27 15:30:05 metrics (JRun) ,3267,2811
10/27 15:30:15 metrics (JRun) ,4291,2866
10/27 15:30:25 metrics (JRun) ,4291,2912

サンプル グラフ

次のサンプル グラフは、使用メモリが一定の場合に、ヒープ サイズが増加していることを示します。

転送量の追跡

転送量の追跡は、非常に重要なレポート要素です。トラフィック量の周囲に収益モデルを設計したり、JRun サーバの使用量のレポートをベースにトラフィックを制限できます。仮に monitor.format プロパティが jcp-format を参照する場合は、次の行を JRun サーバの local.properties ファイルに追加します。

monitor.jcp-format=,{jcp.bytesIn},{jcp.bytesOut}

このサンプルには、日付/時刻の列のほかに次の 2 つの列があります。

ログ エントリのサンプル

10/27 16:41:46 metrics (JRun) ,1925,12596
10/27 16:41:56 metrics (JRun) ,5320,25503
10/27 16:42:06 metrics (JRun) ,0,0
10/27 16:42:16 metrics (JRun) ,20841,179626
10/27 16:42:26 metrics (JRun) ,1491,4017
10/27 16:42:36 metrics (JRun) ,14580,23002
10/27 16:42:46 metrics (JRun) ,13113,74097
10/27 16:42:56 metrics (JRun) ,26674,29309
10/27 16:43:06 metrics (JRun) ,115106,107670
10/27 16:43:16 metrics (JRun) ,14529,64132

サンプル グラフ

次のサンプル グラフは、一般的にトラフィックが増大傾向にある場合の負荷量の急激な増加をバイト単位で示します。

要求の追跡

もう 1 つのトラフィック解析方法は要求を利用したものです。この場合、JCP 要求を追跡する際に、Web サーバと JRun サーバ間の通信をチェックします。仮に monitor.format プロパティが jcp-format を参照する場合は、次の行を JRun サーバの local.properties ファイルに追加します。

monitor.jcp-format=,{jcp.handledRq},{jcp.handledMs},{jcp.bytesOut}

このサンプルには、日付/時刻の列のほかに次の 3 つの列があります。

ログ エントリのサンプル

10/27 16:38:08 metrics (JRun) ,4,110,13440
10/27 16:38:18 metrics (JRun) ,14,241,52907
10/27 16:38:28 metrics (JRun) ,6,190,23828
10/27 16:38:38 metrics (JRun) ,31,401,143053
10/27 16:38:48 metrics (JRun) ,58,560,302296

サンプル グラフ

次のサンプル グラフは、この要求について、各要求の平均キロバイト数が一定であることを示します。要求を処理する MS の平均数は実際には、要求数が増えるにつれて小さくなります。

NOC との統合

このセクションで説明してきたレポートのほかに、次の JRun メトリック変数にも留意してください。これらの変数を使用すると、カスタム レポートを生成したり、Netcool や BMC Software の PATROL などの NOC に対して、カスタム データを提供できます。

たとえば、droppedRq (破棄された要求) をログに含め、monitor.interval を 60 に設定します。PATROL ナレッジ モジュール エージェントにカスタム ログ ファイルを解析させ、droppedRq をチェックさせます。エージェントのルールの一環として、1 分間に破棄された要求の数が 5 を超えたかどうかをチェックします (エラーに備えて少し余裕を残しておきます)。JRun サーバが要求の破棄を開始すると、NOC によってユーザに通知されます。