Sun Java System Message Queue 3.7 UR1 管理ガイド

第 10 章 ブローカの監視

この章では、ブローカの監視に使用できるツール、およびメトリックスデータの取得方法について説明します。この章では、次の節について説明します。

特定メトリックスの詳細については、第 18 章「メトリックスのリファレンス」を参照してください。

監視ツールの概要

Message QueueTM 情報の監視インタフェースには、ログファイル、対話型コマンド、メトリックスを取得できるクライアント API の 3 つがあります。それぞれのツールには、次のような長所と短所があります。

表 10–1 は、さまざまなツールの比較です。

表 10–1 メトリックス監視ツールの長所と短所

メトリックス監視ツール 

長所 

短所 

imqcmd metrics

リモート監視 

スポット検査に適しています 

報告間隔はコマンドのオプションで設定されるため、即座に変更可能です 

対象となる特定のデータを容易に選択できます 

わかりやすい表形式でデータを表示します 

シングルコマンドではすべてのデータを取得できません 

データ分析のプログラム化が困難です 

履歴レコードを作成しません 

履歴的な傾向を確認するのが困難です 

ログファイル 

定期的なサンプリング 

履歴レコードの作成 

ブローカプロパティーの設定が必要です。有効にするにはブローカをシャットダウンし再起動する必要があります 

ローカル監視のみ 

読み取りや解析が非常に困難なデータ形式です。解析ツールはありません 

報告間隔を即座に変更できません。すべてのメトリックスデータについて同じです 

柔軟にデータを選択できません 

ブローカメトリックスのみ。送信先と接続サービスのメトリックスは含まれていません 

間隔が短過ぎるとパフォーマンスに影響する可能性があります 

クライアント API 

リモート監視 

対象となる特定のデータを容易に選択できます 

データをプログラムで分析し、任意の形式で提示できます 

ブローカプロパティーの設定が必要です。有効にするにはブローカをシャットダウンし再起動する必要があります 

専用のメトリックス監視クライアントをプログラミングする必要があります 

報告間隔を即座に変更できません。すべてのメトリックスデータについて同じです 

この表に掲載されている違いに加えて、それぞれのツールでは、ブローカによって生成されたメトリックス情報の、多少異なるサブセットが収集されます。どの監視ツールがどのメトリックスデータを収集するかについては、第 18 章「メトリックスのリファレンス」を参照してください。

ブローカロギングの設定と使用

Message Queue ロガーでは、ブローカコード、デバッガ、メトリックスジェネレータによって生成された情報が取得され、その情報が、標準出力 (コンソール)、ログファイル、Solaris™ オペレーティングシステムの syslog デーモンプロセスなど、多くの出力チャネルに書き込まれます。

ロガーが収集する情報のタイプと、各出力チャネルに書き込む情報のタイプを指定できます。特に、メトリックス情報のログファイルへの書き込みを指定できます。

この節では、ブローカのデフォルトロギング設定、代替出力チャネルにログ情報をリダイレクトする方法、ログファイルロールオーバー基準の変更方法、メトリックスデータをログファイルに送信する方法について説明します。

デフォルトのロギングの設定

ブローカは、ローリングログファイルのセットにログ出力を保存するように自動的に設定されます。ログファイルは、関連付けられたブローカのインスタンス名によって識別されるディレクトリに配置されます (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。

…/instances/instanceName/log

注 –

ライフサイクルがアプリケーションサーバーによって制御されるブローカでは、ログファイルはブローカが起動されたドメインのドメインディレクトリのサブディレクトリに配置されます。

…/appServer_domainName_dir/imq/instances/imqbroker/log

ログファイルは、簡単なテキストファイルです。ログファイルは、次のように順番に名前が付けられています。

log.txt
log_1.txt
log_2.txt
…log_9.txt

デフォルトでは、ログファイルは週に 1 回ロールオーバーされ、システムは 9 つのバックアップファイルを保持します。

ブローカでは、ERRORWARNING INFO という、3 つのログレベルがサポートされます。表 10–2 では、それぞれのレベルについて説明します。

表 10–2 ロギングレベル

レベル 

説明 

ERROR

システム障害が生じる可能性のある問題点を示すメッセージです。 

WARNING

システム障害が生じる可能性はないが、留意すべき警告です。 

INFO

メトリックスおよびその他の情報メッセージの報告です。 

ロギングレベルを設定すると、そのレベル以上のメッセージが収集されます。デフォルトのログレベルは INFO なので、ERROR メッセージ、WARNING メッセージ、INFO メッセージはすべてデフォルトで記録されます。

ログメッセージの書式設定

ログメッセージは、タイムスタンプ、メッセージコード、メッセージ自体から構成されます。情報量は、設定したログレベルにより異なります。INFO メッセージの例を次に示します。


[13/Sep/2000:16:13:36 PDT] [B1004]: Starting the broker service using tcp 
[25374,100] with min threads 50 and max threads of 500

タイムスタンプのタイムゾーンを変更するには、表 14–8 に示す imq.log.timezone プロパティーに関する情報を参照してください。

ロガー設定の変更

ログ関連のプロパティーについては、表 14–8 を参照してください。

Procedureブローカのロガー設定を変更する

  1. ログレベルを設定します。

  2. 1 つまたはそれ以上のロギングカテゴリの出力チャネル (ファイル、コンソール、またはその両方) を設定します。

  3. 出力をファイルに記録する場合、ファイルのロールオーバー基準を設定します。

    ロガープロパティーを設定すると、手順は完了します。ロガープロパティーの設定は、次のどちらかの方法で行います。

    • ブローカを起動する前に、ブローカの config.properties ファイルでロガープロパティーを変更または追加します。

    • ブローカを起動する imqbrokerd コマンドでロガーコマンド行オプションを指定します。また、オプション -D を使用して、ロガープロパティーまたは 任意のブローカプロパティーを変更できます。

    コマンド行で渡されたオプションは、ブローカインスタンス設定ファイルで指定されたプロパティーを上書きします。次の imqbrokerd オプションは、ロギングに影響します。

    -metrics interval

    ブローカメトリックスのロギング間隔 (秒単位)

    -loglevel level

    ロギングレベル (ERRORWARNING INFO、または NONE)

    -silent

    サイレントモード (ロギングはコンソールに表示されない)

    -tty

    コンソールにすべてのメッセージをログ出力します

    続いて、デフォルトの設定を変更して、次のことを実行する方法を説明します。

    • ログメッセージの送信先である、出力チャネルの変更

    • ロールオーバー基準の変更

出力チャネルの変更

デフォルトでは、エラーメッセージと警告メッセージは、ログファイルに記録されると同時に、端末に表示されます。Solaris では、エラーメッセージはシステムの syslog デーモンにも書き込まれます。

次の方法で、ログメッセージの出力チャネルを変更できます。


注 –

ロガー出力チャネルを変更する前に、出力チャネルにマッピングされた情報をサポートするレベルにロギングが設定されていることを確認する必要があります。たとえば、ログレベルを ERROR に設定し、imq.log.console.output プロパティーを WARNING に設定すると、WARNING メッセージのロギングが有効になっていないため、どのメッセージも記録されません。


ログファイルのロールオーバー基準の変更

ログファイルのロールオーバーには、時間とサイズの 2 つの基準があります。デフォルトでは時間の基準が使用され、7 日ごとにファイルがロールオーバーされます。

時間に関連するロールオーバープロパティーとサイズに関連するロールオーバープロパティーの両方が設定されている場合は、どちらかの制限に最初に達したときにロールオーバーが実行されます。前の節でも説明したように、ブローカでは 9 つのロールオーバーファイルが保持されます。

ログファイルのロールオーバープロパティーの設定や変更は、ブローカの動作時に実行できます。このプロパティーを設定するには、imqcmd update bkr コマンドを使用します。

ログファイルへのメトリックスデータの送信

この節では、ブローカログファイルを使用してメトリックス情報を報告するための手順を説明します。ロガーの設定方法については、「ブローカロギングの設定と使用」を参照してください。

Procedureログファイルを使用してメトリックス情報を報告する

  1. ブローカのメトリックス生成機能を設定します。

    1. imq.metrics.enabled=true に設定されていることを確認します。

      デフォルトでは、ロギング用のメトリックスの生成は有効になっています。

    2. メトリックスの生成間隔を適切な秒数に設定します。

      imq.metrics.interval=interval

      この値は、config.properties ファイル内で設定するか、またはブローカの起動時に -metrics interval コマンド行オプションを使用して設定できます。

  2. ロガーがメトリックス情報を収集していることを確認します。


    imq.log.level=INFO

    これはデフォルト値です。この値は、config.properties ファイル内で設定するか、またはブローカの起動時に -loglevel level コマンド行オプションを使用して設定できます。

  3. ロガーが、メトリックス情報をログファイルへ書き込むように設定されていることを確認します。


    imq.log.file.output=INFO

    これはデフォルト値です。config.properties ファイル内で設定できます。

  4. ブローカを起動します。

    ログファイルに出力されたブローカメトリックスの例を次に示します。


    [21/Jul/2004:11:21:18 PDT]
    Connections: 0    JVM Heap: 8323072 bytes (7226576 free) Threads: 0 (14-1010)
          In: 0 msgs (0bytes) 0 pkts (0 bytes)
         Out: 0 msgs (0bytes) 0 pkts (0 bytes)
     Rate In: 0 msgs/sec (0 bytes/sec) 0 pkts/sec (0 bytes/sec)
    Rate Out: 0 msgs/sec (0 bytes/sec) 0 pkts/sec (0 bytes/sec)

    メトリックスデータの詳細については、第 18 章「メトリックスのリファレンス」を参照してください。

デッドメッセージのロギング

ブローカのデッドメッセージロギングを有効にすると、物理的送信先を監視できます。デッドメッセージキューを使用しているかどうかに関係なく、デッドメッセージを記録できます。

デッドメッセージロギングを有効にすると、次のタイプのイベントが、ブローカによって記録されます。

デッドメッセージキューを使用している場合、ロギングには次のタイプのイベントも含まれます。

デッドメッセージのログ形式の例を次に示します。


[29/Mar/2006:15:35:39 PST] [B1147]: Message 8-129.145.180.87(e7:6b:dd:5d:98:aa)-
35251-1143675279400 from destination Q:q0 has been placed on the DMQ because 
[B0053]: Message on destination Q:q0 Expired: expiration time 1143675279402, 
arrival time 1143675279401, JMSTimestamp 1143675279400

デッドメッセージのロギングは、デフォルトでは無効になっています。有効にするには、ブローカ属性 imq.destination.logDeadMsgs を設定します。

メトリックスの対話型表示

Message Queue ブローカでは、次のタイプのメトリックスが報告されます。

imqcmd コマンドでは、ブローカ全体、それぞれの接続サービス、それぞれの物理的送信先のメトリックス情報を取得できます。メトリックスデータを取得するには、一般に、imqcmdmetrics サブコマンドを使用します。メトリックスデータは、指定した間隔で、または指定した回数だけ、コンソール画面に表示されます。

query サブコマンドを使用し、設定情報も含む、同様のデータを表示することもできます。詳細については、「imqcmd query」を参照してください。

imqcmd metrics

imqcmd metrics の構文とオプションを、それぞれ表 10–3表 10–4 に示します。

表 10–3 imqcmd metrics サブコマンドの構文

サブコマンドの構文 

提供されるメトリックスデータ 

metrics bkr
   [-b hostName:portNumber]
   [-m metricType]
   [-int interval]
   [-msp numSamples]

デフォルトのブローカ、または指定したホストとポートのブローカに関して、ブローカのメトリックスを表示します。 

metrics svc -n serviceName
   [-b hostName:portNumber]
   [-m metricType]
   [-int interval]
   [-msp numSamples]

デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスのメトリックスを表示します。 

metrics dst -t destType
   -n destName
   [-b hostName:portNumber]
   [-m metricType]
   [-int interval]
   [-msp numSamples]

特定のタイプと名前の物理的送信先に関するメトリックス情報を表示します。

表 10–4 imqcmd metrics サブコマンドのオプション

サブコマンドのオプション 

説明 

-b hostName: portNumber

メトリックスデータを報告するホスト名とブローカのポートを指定します。デフォルトは localhost:7676 です。

-int interval

メトリックスが表示される間隔を秒単位で指定します。デフォルトは 5 秒です。 

-m metricType

表示するメトリックスのタイプを指定します。 

ttl ブローカ、サービス、または送信先で入出力されているメッセージとパケットのフローに関するメトリックスを表示します (デフォルトのメトリックスタイプ)。

rts ブローカ、接続サービス、または送信先で入出力されているメッセージとパケットのフローレートに関するメトリックスを表示します (秒単位)。

cxn 接続、仮想メモリーヒープ、およびスレッドを表示します (ブローカと接続サービスのみ)。

con コンシューマ関連のメトリックスを表示します (送信先のみ)。

dsk ディスク使用量のメトリックスを表示します (送信先のみ)。

-msp numSamples

出力に表示するサンプルの数を指定します。デフォルトは無制限です (無限)。 

-n destName

必要に応じて、メトリックスデータを報告する物理的送信先の名前を指定します。デフォルトはありません。 

-n serviceName

必要に応じて、メトリックスデータを報告する接続サービスを指定します。デフォルトはありません。 

-t destType

必要に応じて、メトリックスデータを報告する物理的送信先のタイプ (キューまたはトピック) を指定します。デフォルトはありません。 

metrics サブコマンドを使用したメトリックスデータの表示

この節では、metrics サブコマンドを使用してメトリックス情報を報告するための手順を説明します。

Proceduremetrics サブコマンドを使用する

  1. メトリックス情報が必要なブローカを起動します。

    「ブローカの起動」を参照してください。

  2. 表 10–3表 10–4 に示すオプションを指定して、適切な imqcmd metrics サブコマンドを実行します。

メトリックスの出力: imqcmd metrics

この節には、imqcmd metrics サブコマンドの出力例が含まれています。この例では、ブローカ全体のメトリックス、接続サービスのメトリックス、物理的送信先のメトリックスが示されています。

ブローカ全体のメトリックス

ブローカとの間のメッセージとパケットのフローレートを 10 秒間隔で取得するには、metrics bkr サブコマンドを使用します。

imqcmd metrics bkr -m rts -int 10 -u admin

このコマンドは、次のような出力を生成します (表 18–2 のデータの説明を参照)。


--------------------------------------------------------
 Msgs/sec   Msg Bytes/sec   Pkts/sec    Pkt Bytes/sec   
 In   Out     In      Out     In   Out     In      Out  
--------------------------------------------------------
 0     0      27      56      0     0      38      66   
 10    0     7365     56      10    10    7457    1132  
 0     0      27      56      0     0      38      73   
 0     10     27     7402     10    20    1400    8459  
 0     0      27      56      0     0      38      73   

接続サービスのメトリックス

jms 接続サービスが処理したメッセージとパケットの累計を取得するには、metrics svc サブコマンドを使用します。

imqcmd metrics svc -n jms -m ttl -u admin

このコマンドは、次のような出力を生成します (表 18–3) のデータの説明を参照)。


-------------------------------------------------
  Msgs      Msg Bytes      Pkts      Pkt Bytes     
In   Out    In     Out   In   Out    In     Out  
-------------------------------------------------
164  100  120704  73600  282  383  135967  102127
657  100  483552  73600  775  876  498815  149948

物理的送信先のメトリックス

物理的送信先に関するメトリックス情報を表示するには、metrics dst サブコマンドを使用します。

imqcmd metrics dst -t q -n XQueue -m ttl -u admin

このコマンドは、次のような出力を生成します (表 18–4 のデータの説明を参照)。


-----------------------------------------------------------------------------
  Msgs      Msg Bytes         Msg Count         Total Msg Bytes (k)     Largest
In   Out    In     Out    Current  Peak  Avg  Current  Peak     Avg    Msg (k)
-----------------------------------------------------------------------------
200  200  147200  147200     0     200    0      0      143      71        0  
300  200  220800  147200    100    200   10     71      143      64        0  
300  300  220800  220800     0     200    0      0      143      59        0  

物理的送信先のコンシューマに関する情報を取得するには、次の metrics dst サブコマンドを使用します。

imqcmd metrics dst -t q -n SimpleQueue -m con -u admin

このコマンドは、次のような出力を生成します (表 18–4 のデータの説明を参照)。


------------------------------------------------------------------
  Active Consumers         Backup Consumers         Msg Count
Current  Peak  Avg      Current  Peak    Avg    Current  Peak  Avg
------------------------------------------------------------------
   1       1      0        0       0      0       944    1000  525

imqcmd query

imqcmd query の構文とオプションを、コマンドによって提供されるメトリックスデータの説明とともに表 10–5 に示します。

表 10–5 imqcmd query サブコマンドの構文

サブコマンドの構文 

提供されるメトリックスデータ 


query bkr
   [-b hostName: portNumber]

ブローカのメモリーと持続ストアに格納されている現在のメッセージ数とメッセージバイト数に関する情報 (「ブローカ情報の表示」を参照)。

または 

 

query svc -n serviceName
  [-b  hostName:portNumber]

指定した接続サービスに現在割り当てられているスレッドの数とそのサービスの接続数に関する情報 (「接続サービス情報の表示」を参照)。

または 

 

query dst -t destType
  -n destName
  [-b hostName:portNumber]

指定した送信先のメモリーと持続ストアに格納されている現在のプロデューサ数、アクティブコンシューマとバックアップコンシューマの数、メッセージ数とメッセージバイト数に関する情報 (「物理的送信先の情報の表示」を参照)。


注 –

imqcmd query は限定されたメトリックスデータを提供するため、このツールは、第 18 章「メトリックスのリファレンス」の表には記載されていません。


ブローカを監視するアプリケーションの作成

Message Queue には、ブローカがメトリックスデータを JMS メッセージへ書き込み、そのメッセージに含まれるメトリックス情報のタイプに応じて、そのメッセージを多数のメトリックストピック送信先のどれかに送信する際に使用できるメトリックス監視機能が用意されています。

メトリックストピックを送信先へサブスクライブし、これらの送信先のメッセージを消費し、メッセージに含まれるメトリックス情報を処理するクライアントアプリケーションをプログラミングすることで、このメトリックス情報にアクセスできます。

5 つのメトリックストピック送信先があります。それらの名前と、各送信先へ配信されるメトリックスメッセージのタイプを表 10–6 に示します。

表 10–6 メトリックスのトピック送信先

トピック名 

メトリックスメッセージのタイプ

mq.metrics.broker 

ブローカのメトリックス

mq.metrics.jvm 

Java 仮想マシンのメトリックス

mq.metrics.destination_list 

送信先とそれらのタイプのリスト

mq.metrics.destination.queue.monitoredDestinationName

指定した名前のキューの送信先メトリックス 

mq.metrics.destination.topic.monitoredDestinationName

指定した名前のトピックの送信先メトリックス 

メッセージベースの監視の設定

この節では、メッセージベースの監視機能を使用してメトリックス情報を収集するための手順を説明します。手順には、クライアント開発タスクと管理タスクの両方が含まれます。

Procedureメッセージベースの監視を設定する

  1. メトリックス監視クライアントを作成します。

    メトリックストピック送信先へサブスクライブし、メトリックスメッセージを消費し、これらのメッセージからメトリックスデータを抽出するクライアントをプログラミングする手順については、『Message Queue Developer's Guide for Java Clients 』を参照してください。

  2. config.properties ファイルにブローカプロパティー値を設定して、ブローカのメトリックスメッセージプロデューサを設定します。

    1. メトリックスメッセージの生成を有効にします。

      imq.metrics.topic.enabled=true と設定します。

      デフォルト値は true です。

    2. メトリックスメッセージを生成する間隔を、秒単位で指定します。

      imq.metrics.topic.interval=interval と設定します。

      デフォルトは 60 秒です。

    3. メトリックスメッセージを持続的にするかどうか、つまり、ブローカ障害時にもそのまま保持するかどうかを指定します。

      imq.metrics.topic.persist を設定します。

      デフォルト値は false です。

    4. 各送信先で、メトリックスメッセージを削除するまでに保持しておく期間を指定します。

      imq.metrics.topic.timetolive を設定します。

      デフォルト値は 300 秒です。

  3. メトリックストピック送信先に必要なアクセス制御を設定します。

    設定については次の 「セキュリティーとアクセスで考慮すること」を参照してください。

  4. メトリックス監視クライアントを起動します。

    コンシューマがメトリックストピックをサブスクライブすると、メトリックストピック送信先が自動的に作成されます。メトリックストピックが作成されると、ブローカのメトリックスメッセージプロデューサがメトリックスメッセージをメトリックストピックへ送信し始めます。

セキュリティーとアクセスで考慮すること

メトリックストピック送信先へのアクセスを制限する理由は 2 つあります。

これらの点を考慮して、メトリックストピック送信先へのアクセスは制御することをお勧めします。

監視クライアントは、そのほかのクライアントと同じ認証制御と権限を前提にしています。ブローカへの接続が許可されるのは、Message Queue ユーザーリポジトリに登録されているユーザーだけです。

「ユーザー承認: アクセス制御プロパティーファイル」に説明されているとおり、アクセス制御プロパティーファイルを使用して特定のメトリックストピック送信先へのアクセスを制限することで、さらに保護を強化できます。

たとえば、accesscontrol.properties ファイル内の次のエントリは、user1 と user2 を除き、すべてのユーザーについて mq.metrics.broker メトリックストピックへのアクセスを拒否します。


topic.mq.metrics.broker.consume.deny.user=*
topic.mq.metrics.broker.consume.allow.user=user1,user2

次のエントリは、ユーザー user3 だけにトピック t1 の監視を許可します。


topic.mq.metrics.destination.topic.t1.consume.deny.user=*
topic.mq.metrics.destination.topic.t1.consume.allow.user=user3

メトリックスデータの機密性に応じて、暗号化された接続を使用してメトリックス監視クライアントをブローカへ接続することもできます。暗号化された接続の使用方法については、「メッセージの暗号化」を参照してください。

メトリックスの出力: メトリックスメッセージ

メッセージベースの監視 API を使用して取得したメトリックスデータ出力は、プログラミングしたメトリックス監視クライアントによって異なります。出力されるデータは、ブローカ内のメトリックスジェネレータによって提供されるデータだけに限定されます。このデータの完全なリストは、第 18 章「メトリックスのリファレンス」を参照してください。