この章では、ブローカの監視に使用できるツール、およびメトリックスデータの取得方法について説明します。この章では、次の節について説明します。
特定メトリックスの詳細については、第 18 章「メトリックスのリファレンス」を参照してください。
Message QueueTM 情報の監視インタフェースには、ログファイル、対話型コマンド、メトリックスを取得できるクライアント API の 3 つがあります。それぞれのツールには、次のような長所と短所があります。
ログファイルでは、メトリックスデータの長期間の記録が提供されますが、簡単には解析できません。
コマンドでは、ニーズに合った情報を迅速にサンプル抽出できますが、履歴情報を調べたり、プログラムでデータを操作したりすることはできません。
クライアント API では、情報の抽出、処理、データの操作、グラフ表示、警告の送信を行うことができます。ただし、クライアント API を使用するには、カスタムアプリケーションを作成して、データの取得と分析を行う必要があります。
表 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 つのバックアップファイルを保持します。
ログファイルが保管されるディレクトリを変更するには、imq.log.file.dirpath プロパティーを希望するパスに設定します。
ログファイルのルート名を log から別の名前に変更するには、imq.log.file.filename プロパティーを設定します。
ブローカでは、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 |
タイムスタンプのタイムゾーンを変更するには、表 14–8 に示す imq.log.timezone プロパティーに関する情報を参照してください。
ログ関連のプロパティーについては、表 14–8 を参照してください。
ログレベルを設定します。
1 つまたはそれ以上のロギングカテゴリの出力チャネル (ファイル、コンソール、またはその両方) を設定します。
出力をファイルに記録する場合、ファイルのロールオーバー基準を設定します。
ロガープロパティーを設定すると、手順は完了します。ロガープロパティーの設定は、次のどちらかの方法で行います。
ブローカを起動する前に、ブローカの config.properties ファイルでロガープロパティーを変更または追加します。
ブローカを起動する imqbrokerd コマンドでロガーコマンド行オプションを指定します。また、オプション -D を使用して、ロガープロパティーまたは 任意のブローカプロパティーを変更できます。
コマンド行で渡されたオプションは、ブローカインスタンス設定ファイルで指定されたプロパティーを上書きします。次の imqbrokerd オプションは、ロギングに影響します。
ブローカメトリックスのロギング間隔 (秒単位)
ロギングレベル (ERROR、WARNING、 INFO、または NONE)
サイレントモード (ロギングはコンソールに表示されない)
コンソールにすべてのメッセージをログ出力します
続いて、デフォルトの設定を変更して、次のことを実行する方法を説明します。
ログメッセージの送信先である、出力チャネルの変更
ロールオーバー基準の変更
デフォルトでは、エラーメッセージと警告メッセージは、ログファイルに記録されると同時に、端末に表示されます。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
ロガー出力チャネルを変更する前に、出力チャネルにマッピングされた情報をサポートするレベルにロギングが設定されていることを確認する必要があります。たとえば、ログレベルを ERROR に設定し、imq.log.console.output プロパティーを WARNING に設定すると、WARNING メッセージのロギングが有効になっていないため、どのメッセージも記録されません。
ログファイルのロールオーバーには、時間とサイズの 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 コマンドを使用します。
この節では、ブローカログファイルを使用してメトリックス情報を報告するための手順を説明します。ロガーの設定方法については、「ブローカロギングの設定と使用」を参照してください。
ブローカのメトリックス生成機能を設定します。
ロガーがメトリックス情報を収集していることを確認します。
imq.log.level=INFO |
これはデフォルト値です。この値は、config.properties ファイル内で設定するか、またはブローカの起動時に -loglevel level コマンド行オプションを使用して設定できます。
ロガーが、メトリックス情報をログファイルへ書き込むように設定されていることを確認します。
imq.log.file.output=INFO |
これはデフォルト値です。config.properties ファイル内で設定できます。
ブローカを起動します。
ログファイルに出力されたブローカメトリックスの例を次に示します。
[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 ブローカでは、次のタイプのメトリックスが報告されます。
Java 仮想マシン (JVM) メトリックス: JVM ヒープサイズに関する情報です。
ブローカ全体のメトリックス: ブローカに保存されているメッセージ、ブローカで入出力されるメッセージ、メモリー使用に関する情報です。メッセージは、メッセージ数とバイト数の点で追跡されます。
接続サービスのメトリックス: 接続と接続スレッドのリソースに関する情報、および特定の接続サービスのメッセージフローに関する情報です。
送信先メトリックス: 特定の物理的送信先との間のメッセージフロー、物理的送信先のコンシューマ、メモリーとディスクスペースの使用率に関する情報です。
imqcmd コマンドでは、ブローカ全体、それぞれの接続サービス、それぞれの物理的送信先のメトリックス情報を取得できます。メトリックスデータを取得するには、一般に、imqcmd の metrics サブコマンドを使用します。メトリックスデータは、指定した間隔で、または指定した回数だけ、コンソール画面に表示されます。
query サブコマンドを使用し、設定情報も含む、同様のデータを表示することもできます。詳細については、「imqcmd query」を参照してください。
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 サブコマンドのオプション
この節では、metrics サブコマンドを使用してメトリックス情報を報告するための手順を説明します。
メトリックス情報が必要なブローカを起動します。
「ブローカの起動」を参照してください。
表 10–3 と表 10–4 に示すオプションを指定して、適切な 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 の構文とオプションを、コマンドによって提供されるメトリックスデータの説明とともに表 10–5 に示します。
表 10–5 imqcmd query サブコマンドの構文
サブコマンドの構文 |
提供されるメトリックスデータ |
|
---|---|---|
|
ブローカのメモリーと持続ストアに格納されている現在のメッセージ数とメッセージバイト数に関する情報 (「ブローカ情報の表示」を参照)。 |
|
または | ||
|
指定した接続サービスに現在割り当てられているスレッドの数とそのサービスの接続数に関する情報 (「接続サービス情報の表示」を参照)。 |
|
または | ||
|
指定した送信先のメモリーと持続ストアに格納されている現在のプロデューサ数、アクティブコンシューマとバックアップコンシューマの数、メッセージ数とメッセージバイト数に関する情報 (「物理的送信先の情報の表示」を参照)。 |
imqcmd query は限定されたメトリックスデータを提供するため、このツールは、第 18 章「メトリックスのリファレンス」の表には記載されていません。
Message Queue には、ブローカがメトリックスデータを JMS メッセージへ書き込み、そのメッセージに含まれるメトリックス情報のタイプに応じて、そのメッセージを多数のメトリックストピック送信先のどれかに送信する際に使用できるメトリックス監視機能が用意されています。
メトリックストピックを送信先へサブスクライブし、これらの送信先のメッセージを消費し、メッセージに含まれるメトリックス情報を処理するクライアントアプリケーションをプログラミングすることで、このメトリックス情報にアクセスできます。
5 つのメトリックストピック送信先があります。それらの名前と、各送信先へ配信されるメトリックスメッセージのタイプを表 10–6 に示します。
表 10–6 メトリックスのトピック送信先
トピック名 | |
---|---|
mq.metrics.broker | |
mq.metrics.jvm | |
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 メトリックストピックへのアクセスを拒否します。
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 章「メトリックスのリファレンス」を参照してください。