Web サーバー接続の監視

JRun では、JRun サーバーと Web サーバーの接続に関するステータス情報が、JRun ログ ファイルに書き込まれます。このステータス情報は JRun サーバーとサードパーティ製 Web サーバーまたは JRun Web サーバー (JWS) の接続から取得できます。

次の図は、サードパーティ製 Web サーバーと JWS の両方に接続されている default JRun サーバーを表しています。

接続ステータス情報が収集されるように JRun を設定するには、JRun サーバーの local.properties ファイルにあるプロパティ logging.loglevel に指定されたロギング レベルの一覧にキーワード metrics を入れます。JRun のロギング メカニズムの詳細については、第 38 章を参照してください。

たとえば、接続ステータス情報を有効にするには、次のプロパティを使用します。

logging.loglevel=info,warning,error,metrics 

次のいずれか、またはすべての接続情報をログ ファイルに書き出すことができます。

次に示すのは、接続ステータス情報が記録されたログ メッセージの例です。

03/20 02:57:53 metrics (jcp+web) Heap=3151KB Listen=1 Idle=0 Queued=0
  Busy=0 Total=0 Requests (count/total ms)=0/0 Delayed=0 TotalDelay=0
  BytesIn=0 BytesOut=0 Sessions (active/in memory)=0/0

監視メカニズムの設定

監視メカニズムの設定には、プロパティ ファイルを使用します。JRun 管理コンソール (JMC)では制御できません。

監視メカニズムの既定の設定は JRun のインストールに対応するすべての JRun サーバーに対するもので、global.properties ファイルに保存されています。個々の JRun サーバーの設定を変更する場合は、local.properties ファイルのそのサーバーの設定を変更します。

global.properties ファイルでの既定のプロパティ設定は次のとおりです。

monitor.class=allaire.jrun.metrics.MetricsLogger
monitor.interval=60
monitor.format={monitor.combined-format}
monitor.max.history=10

これらの設定により、監視メカニズム、監視間隔 (単位は秒)、監視情報の出力形式、監視履歴バッファのサイズを定義するクラスが指定されます。これらの設定では、監視メカニズムにより、60 秒ごとに統計が行われ、最新のものからさかのぼって 10 個の監視サンプルが記録されるように指定されています。

これらのプロパティの詳細については、"プロパティの監視"を参照してください。

監視出力形式の設定

global.properties ファイルには、監視メッセージの形式を表すプロパティ monitor.format が含まれています。既定では、monitor.format は次のように設定されています。

monitor.format={monitor.combined-format}

monitor.combined-format 形式プロパティは、global.properties ファイルで次のように定義されます。

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

この形式により、メッセージが次のように生成されます。

03/20 02:57:53 metrics (jcp+web) Heap=3151KB Listen=1 Idle=0 Queued=0
  Busy=0 Total=0 Requests (count/total ms)=0/0 Delayed=0 TotalDelay=0
  BytesIn=0 BytesOut=0 Sessions (active/in memory)=0/0

この設定の構文は次のとおりです。

monitor.<label>=(web | jcp | web+jcp)
  String1={[web.| jcp.]statistic1} 
  String2={[web.| jcp.]statistic2} 
  ...

monitor.format プロパティに monitor.label を指定して、ログ ファイルに書き込まれる監視情報の形式を制御します。

monitor.<Label>=(web|jcp|web+jcp)

形式定義に対してラベルを指定するとともに、この形式指定が JWS (web)、サード パーティ製 Web サーバー (jcp)、またはこの両方 (web+jcp) のいずれかから得られ た管理情報に対する形式を定義しているのかどうかを指定します。

String={[web.|jcp.]statistic}

ログ ファイルに書き込まれた監視情報出力に入っている文字列の形式を指定し ます。メッセージの String= 部分は、変更されることなくそのままログ ファイル に書き込まれます。JRun により、メッセージの [web.|jcp.]statistic 部分が 統計値で置き換えられます。この統計情報は、JWS (web) への JRun 接続、または サードパーティ製 Web サーバー (jcp) からの接続から得られたものです。

ログ ファイルに書き出される接続情報に、次のいずれか、またはすべての統計を 入れることができます。これらの統計の多くには、先頭に jcp または web が付き ます。これは、この統計がサードパーティ製 Web サーバーから得られたか (jcp)、 または JWS から得られたか (web) を表しています。ただし、一部の統計は JRun サーバーと関連付けられた JVM に対するもので、接頭辞は付けられません。

たとえば、監視メッセージ用に、次の形式を定義したとします。

monitor.combined-format=(jcp+web)
  Heap={totalMemory}KB
  Total={{jcp.totalTh}+{web.totalTh}}

この定義は、このメッセージ形式が、JWS とサードパーティ製 Web サーバーの両方から得られた情報に適用されることを表しています。この監視メッセージには、ヒープ メモリの量、および JWS とサードパーティ製 Web サーバーの両方で使用されているワーカー スレッドの数を合計したものが含まれます。

JWS とサードパーティ製 Web サーバーの両方で使用されているワーカー スレッド数の合計を表示するには、次の形式で指定します。

Total={{jcp.totalTh}+{web.totalTh}}

上記のとおり、表示される値は JWS から得られた値と、サードパーティ製 Web サーバーから得られた値の合計です。数式を中かっこ {} で囲むことにより、統計値に対する計算ができることが、この例からわかります。

既定の監視形式

JRun の global.properties ファイルには、次のような定義済み形式が用意されています。このような定義済み形式の 1 つを monitor.format プロパティに指定できます。また、ユーザが形式を作成することもできます。

# JWS とサードパーティ製 Web サーバーの両方から得られた監視情報で
# 使用されるメッセージ形式を定義します。 
# これは既定の監視形式です。
monitor.combined-format=(jcp+web)
  Heap={totalMemory}KB 
  Listen={{jcp.listenTh}+{web.listenTh}} 
  Idle={{jcp.idleTh}+{web.idleTh}} 
  Queued={{jcp.delayTh}+{web.delayTh}} 
  Busy={{jcp.busyTh}+{web.busyTh}} 
  Total={{jcp.totalTh}+{web.totalTh}} 
  Requests (count/total ms)={{jcp.handledRq}+{web.handledRq}}/
{{jcp.handledMs}+{web.handledMs}} 
  Delayed={{jcp.delayRq}+{web.delayRq}} 
  TotalDelay={{jcp.delayMs}+{web.delayMs}} 
  BytesIn={{jcp.bytesIn}+{web.bytesIn}} 
  BytesOut={{jcp.bytesOut}+{web.bytesOut}} 
  Sessions (active/in memory)={sessions}/{sessionsInMem}

# JWS だけから得られる監視情報のメッセージ形式を定義します。
monitor.web-format=(web) 
  Heap={totalMemory}KB 
  Listen={web.listenTh}
  Idle={web.idleTh} 
  Queued={web.delayTh} 
  Busy={web.busyTh} 
  Total={web.totalTh} 
  Requests (count/total ms)={web.handledRq}/{web.handledMs} 
  Delayed={web.delayRq} 
  TotalDelay={web.delayMs} 
  BytesIn={web.bytesIn} 
  BytesOut={web.bytesOut} 
  Sessions (active/in memory)={sessions}/{sessionsInMem} 

# JWS だけから得られる情報のショート メッセージ形式を定義します。
monitor.web-short-format=(web) 
  Busy={web.busyTh} 
  Total={web.totalTh} 
  Requests={web.handledRq} 
  TotalDelay={web.delayMs}

# サードパーティ製 Web サーバーだけから得られた監視情報で使用される
# メッセージ形式を定義します。
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}

# サードパーティ製 Web サーバーだけから得られた監視情報で使用されるショート
# メッセージ形式を定義します。
monitor.jcp-short-format=(jcp) 
  Busy={jcp.busyTh} 
  Total={jcp.totalTh} 
  Requests={jcp.handledRq} 
  TotalDelay={jcp.delayMs}