Sun Java System Message Queue 3 2005Q1 管理ガイド |
第 10 章
メッセージサーバーの監視この章では、メッセージサーバーの監視に使用できるツール、およびメトリックスデータの取得方法について説明します。この章では、次の節について説明します。
特定メトリックスの詳細については、第 18 章「メトリックスのリファレンス」を参照してください。
監視ツールの概要Message Queue 情報には、 ログファイル、対話型コマンド、メトリックスを取得できるクライアント API という、3 つの監視インタフェースがあります。それぞれのツールには、次のような長所と短所があります。
表 10-1 は、さまざまなツールの比較です。
この表に掲載されている違いに加えて、それぞれのツールでは、ブローカによって生成されたメトリックス情報の、多少異なるサブセットが収集されます。どの監視ツールがどのメトリックスデータを収集するかについては、第 18 章「メトリックスのリファレンス」を参照してください。
ブローカロギングの設定と使用Message Queue ロガーでは、ブローカコード、デバッガ、メトリックスジェネレータによって生成された情報が取得され、その情報が 標準出力 (コンソール)、ログファイル、SolarisTM オペレーティングシステムの syslog デーモンプロセスなど、多くの出力チャネルに書き込まれます。
ロガーが収集する情報のタイプと、各出力チャネルに書き込む情報のタイプを指定できます。特に、メトリックス情報のログファイルへの書き込みを指定できます。
この節では、ブローカのデフォルトロギング設定、代替出力チャネルにログ情報をリダイレクトする方法、ログファイルロールオーバー基準の変更方法、メトリックスデータをログファイルに送信する方法について説明します。
デフォルトのロギングの設定
ブローカは、ローリングログファイルのセットにログ出力を保存するように自動的に設定されます。ログファイルは、関連ブローカのインスタンス名によって識別される、次のディレクトリに配置されます。付録 A 「オペレーティングシステムごとの Message Queue データの場所」を参照してください。
ログファイルは、簡単なテキストファイルです。ログファイルは、次のように順番に名前が付けられています。
デフォルトでは、ログファイルは週に 1 回ロールオーバーされ、システムは 9 つのバックアップファイルを保持します。
ブローカでは、 ERROR、WARNING、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
タイムスタンプのタイムゾーンを変更するには、imq.log.timezone プロパティに関する情報を参照してください。これについては表 14-10 で説明します。
ロガー設定の変更
ログ関連のプロパティについては、表 14-10 で説明します。
ブローカのロガー設定を変更する
ロガープロパティを設定すると、手順は完了します。ロガープロパティの設定は、次のどちらかの方法で行います。
コマンド行で渡されたオプションは、ブローカインスタンス設定ファイルで指定されたプロパティをオーバーライドします。表 10-3 に、ロギングに影響する imqbrokerd オプションを一覧表示します。
続いて、デフォルトの設定を変更して、次のことを実行する方法を説明します。
出力チャネルの変更
デフォルトでは、エラーメッセージと警告メッセージは、ログファイルに記録されると同時に、端末に表示されます。Solaris では、エラーメッセージはシステムの syslog デーモンにも書き込まれます。
次の方法で、ログメッセージの出力チャネルを変更できます。
- 指定したレベルのすべてのログカテゴリを画面に表示するには、imqbrokerd コマンドの -tty オプションを使用します。
- ログ出力を画面に表示しないようにするには、imqbrokerd コマンドの -silent オプションを使用します。
- imq.log.file.output プロパティを使用して、ログファイルに書き込むロギング情報のカテゴリを指定します。たとえば、次のように指定します。
imq.log.file.output=ERROR
- imq.log.console.output プロパティを使用して、コンソールに書き込むロギング情報のカテゴリを指定します。たとえば、次のように指定します。
imq.log.console.output=INFO
- Solaris の場合、imq.log.syslog.output プロパティを使用して、Solaris syslog に書き込むロギング情報のカテゴリを指定します。たとえば、次のように指定します。
imq.log.syslog.output=NONE
ログファイルのロールオーバー基準の変更
ログファイルのロールオーバーには、 時間とサイズの 2 つの基準があります。デフォルトでは時間の基準が使用され、7 日ごとにファイルがロールオーバーされます。
- 時間の間隔を変更するには、imq.log.file.rolloversecs プロパティを変更する必要があります。たとえば、次のようにプロパティを定義すると、間隔が 10 日に変更されます。
imq.log.file.rolloversecs=864000
- ファイルサイズに従ってロールオーバーするように基準を変更するには、imq.log.file.rolloverbytes プロパティを設定する必要があります。たとえば、次のように定義すると、500,000 バイトの制限に達したあと、ブローカはファイルをロールオーバーするように指示されます。
imq.log.file.rolloverbytes=500000
時間に関連するロールオーバープロパティとサイズに関連するロールオーバープロパティの両方が設定されている場合は、どちらかの制限に最初に達したときにロールオーバーが実行されます。前の節でも説明したように、ブローカでは 9 つのロールオーバーファイルが保持されます。
ログファイルのロールオーバープロパティの設定や変更は、ブローカの動作時に実行できます。このプロパティを設定するには、imqcmd update bkr コマンドを使用します。
ログファイルへのメトリックスデータの送信
この節では、ブローカログファイルを使用してメトリックス情報を報告するための手順を説明します。ロガーの設定方法については、「ブローカロギングの設定と使用」を参照してください。
ログファイルを使用してメトリックス情報を報告する
以下は、ログファイルに出力されたブローカメトリックスの例です。
メトリックスデータの詳細については、第 18 章「メトリックスのリファレンス」を参照してください。
デッドメッセージのロギング
ブローカのデッドメッセージロギングを有効にすると、物理的送信先を監視できます。デッドメッセージキューを使用しているかどうかに関係なく、デッドメッセージを記録できます。
デッドメッセージロギングを有効にすると、次のタイプのイベントが、ブローカによって記録されます。
デッドメッセージキューを使用している場合、ロギングには次のタイプのイベントも含まれます。
デッドメッセージのロギングは、デフォルトでは無効になっています。有効にするには、ブローカ属性 imq.destination.logDeadMsgs を設定します。
メトリックスの対話型表示Message Queue ブローカでは、次のタイプのメトリックスが報告されます。
imqcmd コマンドでは、ブローカ全体、それぞれのコネクションサービス、それぞれの物理的送信先のメトリックス情報を取得できます。メトリックスデータを取得するには、一般に、imqcmd の metrics サブコマンドを使用します。メトリックスデータは、指定した間隔で、または指定した回数だけ、コンソール画面に表示されます。
query サブコマンドを使用し、設定情報も含む、同様のデータを表示することもできます。詳細については、「imqcmd query」を参照してください。
imqcmd metrics
imqcmd metrics の構文とオプションを、それぞれ表 10-4 と表 10-5 に示します。
表 10-4 imqcmd metrics サブコマンドの構文
サブコマンドの構文
提供されるメトリックスデータ
metrics bkr
[-b hostName:port]
[-m metricType]
[-int interval]
[-msp numSamples]デフォルトのブローカ、または指定したホストとポートのブローカに対して、ブローカのメトリックスを表示します。
または
metrics svc -n serviceName
[-b hostName:port]
[-m metricType]
[-int interval]
[-msp numSamples]デフォルトのブローカ、または指定したホストとポートのブローカで実行している特定のサービスのメトリックスを表示します。
または
metrics dst -t destType
-n destName
[-b hostName:port]
[-m metricType]
[-int interval]
[-msp numSamples]特定のタイプと名前の物理的送信先に関するメトリックス情報を表示します。
表 10-5 imqcmd metrics サブコマンドのオプション
サブコマンドのオプション
説明
-b hostName:port
メトリックスデータを報告するホスト名とブローカのポートを指定します。デフォルトは localhost:7676 です。
-int interval
メトリックスが表示される間隔を秒単位で指定します。デフォルトは 5 秒です。
-m metricType
表示するメトリックスのタイプを指定します。
ttl: ブローカ、サービス、送信先との間のメッセージとパケットのフローに関するメトリックスを表示します (デフォルトのメトリックスタイプ)。
rts: ブローカ、コネクションサービス、送信先との間のメッセージとパケットのフローレートに関するメトリックスを表示します (秒単位)。
cxn: コネクション、仮想メモリーヒープ、およびスレッドを表示します (ブローカとコネクションサービスのみ)。
con: コンシューマ関連のメトリックスを表示します (送信先のみ)。
dsk: ディスク使用量のメトリックスを表示します (送信先のみ)。
-msp numSamples
出力に表示するサンプルの数を指定します。デフォルトは無制限です (無限)。
-n destName
必要に応じて、メトリックスデータを報告する物理的送信先の名を指定します。デフォルトはありません。
-n serviceName
必要に応じて、メトリックスデータを報告するコネクションサービスを指定します。デフォルトはありません。
-t destTyp
必要に応じて、メトリックスデータを報告する物理的送信先のタイプ (キューまたはトピック) を指定します。デフォルトはありません。
metrics サブコマンドを使用したメトリックスデータの表示
この節では、metrics サブコマンドを使用してメトリックス情報を報告するための手順を説明します。
metrics サブコマンドを使用する
- メトリックス情報が必要なブローカを起動します。
「ブローカのインタラクティブな起動」を参照してください。
メトリックスの出力: imqcmd metrics
この節には、imqcmd metrics サブコマンドの出力例が含まれています。この例では、ブローカ全体のメトリックス、コネクションサービスのメトリックス、物理的送信先のメトリックスが示されています。
ブローカ全体のメトリックス
ブローカとの間のメッセージとパケットのフローレートを 10 秒間隔で取得するには、metrics bkr サブコマンドを使用します。
このコマンドは、次のような出力を生成します (表 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 サブコマンドを使用します。
このコマンドは、次のような出力を生成します (表 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 サブコマンドを使用します。
このコマンドは、次のような出力を生成します (表 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 サブコマンドを使用します。
このコマンドは、次のような出力を生成します (表 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-6 に示します。
表 10-6 imqcmd query サブコマンドの構文
サブコマンドの構文
提供されるメトリックスデータ
query bkr
[-b hostName:port]ブローカのメモリーと持続ストアに格納されている現在のメッセージ数とメッセージバイト数に関する情報 (「ブローカ情報の表示」を参照)。
または
query svc -n serviceName
[-b hostName:port]指定したコネクションサービスに現在割り当てられているスレッドの数とそのサービスのコネクション数に関する情報 (「コネクションサービス情報の表示」を参照)。
または
query dst -t destType
-n destName
[-b hostName:port]指定した送信先のメモリーと持続ストアに格納されている現在のプロデューサ数、アクティブコンシューマとバックアップコンシューマの数、メッセージ数とメッセージバイト数に関する情報 (「物理的送信先の情報の表示」を参照)。
注
imqcmd query は限定されたメトリックスデータを提供するため、このツールは、第 18 章「メトリックスのリファレンス」の表には記載されていません。
ブローカを監視するアプリケーションの作成Message Queue には、ブローカがメトリックスデータを JMS メッセージへ書き込み、そのメッセージに含まれるメトリックス情報のタイプに応じて、そのメッセージを多数のメトリックストピック送信先のどれかに送信する際に使用できるメトリックス監視機能が用意されています。
メトリックストピックを送信先へサブスクライブし、これらの送信先のメッセージを消費し、メッセージに含まれるメトリックス情報を処理するクライアントアプリケーションをプログラミングすることで、このメトリックス情報にアクセスできます。
5 つのメトリックストピック送信先があります。それらの名前と、各送信先へ配信されるメトリックスメッセージのタイプを表 10-7 に示します。
表 10-7 メトリックスのトピック送信先
トピック名
メトリックスメッセージのタイプ
mq.metrics.broker
ブローカのメトリックス
mq.metrics.jvm
Java 仮想マシンのメトリックス
mq.metrics.destination_list
送信先とそれらのタイプのリスト
mq.metrics.destination.queue.
monitoredDestinationName指定した名前のキューの送信先メトリックス
mq.metrics.destination.topic.
monitoredDestinationName指定した名前のトピックの送信先メトリックス
メッセージベースの監視の設定
この節では、メッセージベースの監視機能を使用してメトリックス情報を収集するための手順を説明します。手順には、クライアント開発タスクと管理タスクの両方が含まれます。
メッセージベースの監視を設定する
- メトリックス監視クライアントを作成します。
メトリックストピック送信先へサブスクライブし、メトリックスメッセージを消費し、これらのメッセージからメトリックスデータを抽出するクライアントをプログラミングする手順については、『Message Queue Developer's Guide for Java Clients』を参照してください。
- config.properties ファイルにブローカプロパティ値を設定して、ブローカのメトリックスメッセージプロデューサを設定します。
- メトリックスメッセージの生成を有効にします。
imq.metrics.topic.enabled=true と設定する
デフォルト値は true です。
- メトリックスメッセージを生成する間隔を、秒単位で指定します。
imq.metrics.topic.interval=interval と設定する
デフォルトは 60 秒です。
- メトリックスメッセージを持続的にするかどうか、つまり、ブローカ障害時にもそのまま保持するかどうかを指定します。
imq.metrics.topic.persist を設定する
デフォルト値は false です。
- 各送信先で、メトリックスメッセージを削除するまでに保持しておく期間を指定します。
imq.metrics.topic.timetolive を設定する
デフォルト値は 300 秒です。
- メトリックストピック送信先に必要なアクセス制御を設定します。
設定方法は次の、「セキュリティとアクセスで考慮すること」を参照してください。
- メトリックス監視クライアントを起動します。
コンシューマがメトリックストピックをサブスクライブすると、メトリックストピック送信先が自動的に作成されます。メトリックストピックが作成されると、ブローカのメトリックスメッセージプロデューサがメトリックスメッセージをメトリックストピックへ送信し始めます。
セキュリティとアクセスで考慮すること
メトリックストピック送信先へのアクセスを制限する理由は 2 つあります。
これらの点を考慮して、メトリックストピック送信先へのアクセスは制御することをお勧めします。
監視クライアントは、そのほかのクライアントと同じ認証制御と権限を前提にしています。ブローカへの接続が許可されるのは、Message Queue ユーザーリポジトリに登録されているユーザーだけです。
「ユーザーの承認: アクセス制御プロパティファイル」に説明されているとおり、アクセス制御プロパティファイルを使用して特定のメトリックストピック送信先へのアクセスを制限することで、さらに保護を強化できます。
たとえば、accesscontrol.properties ファイル内の次のエントリは、user1 と user2 を除き、すべてのユーザーについて mq.metrics.broker メトリックストピックへのアクセスを拒否します。
次のエントリは、ユーザー user3 だけにトピック t1 の監視を許可します。
topic.mq.metrics.destination.topic.t1.consume.deny.user=*
topic.mq.metrics.destination.topic.t1.consume.allow.user=user3
メトリックスデータの機密性に応じて、暗号化されたコネクションを使用してメトリックス監視クライアントをブローカへ接続することもできます。暗号化されたコネクションの使用方法については、「SSL ベースのサービスの操作」を参照してください。
メトリックスの出力: メトリックスメッセージ
メッセージベースの監視 API を使用して取得したメトリックスデータ出力は、プログラミングしたメトリックス監視クライアントによって異なります。出力されるデータは、ブローカ内のメトリックスジェネレータによって提供されるデータだけに限定されます。このデータの完全なリストは、「メトリックスのリファレンス」を参照してください。