Instana で IBM MQを監視した際、知らないキューが いくつかできていることに気づきました。これが、なぜ 作成されているかについて、調べてみました
Instana で IBM MQ を監視します
昨年の記事 でも記載したように、非常にシンプルに監視することが可能です。
たとえば、Instana Agentの稼働ユーザーを mqmグループに追加するだけで、QMGRを自動的に検知し、監視が行われます(ローカル・バインディング・モード)。
収集されたメトリックを見てみると、アプリケーションのキューに AMQ.654DC38C2406D803
など見慣れないキューが存在します。これは プロジェクトのなかで定義したキューではありません。このキューがなにものか、調べました。
IBM MQ PCF と テンポラリ・キュー
IBM MQ PCF (Programable Command Format)
Instanaは、IBM MQのメトリック・データを IBM MQが提供する PCF機能を呼び出すことによって、取得しています。
IBM MQ の PCF に関しては、以下をご参照ください。
IBM MQ プログラマブル・コマンド・フォーマットの概要
テンポラリ・キュー
任意のアプリケーション(今回の環境では Instana Agent)が、MQOPENコマンドを発行して、PCFを呼び出すと IBM MQは テンポラリー・キューを動的に作成します(これは IBM MQの挙動です)。
これが先ほど見えていた AMQ.654DC38C2406D803
といったキューの正体です。
この挙動は、今回のような Local Binding モードで接続していようが、ネットワーク越しに クライアント接続モードで接続していようが同じ振る舞いです。
PCFが呼び出されると、テンポラリ・キューが動的に作成されること自体は MQの仕様であり、PCFを呼び出すためには queue の create 権限は必要ありません。
テンポラリ・キューのライフサイクルについて
動的テンポラリ・キューは、QMGRが起動したタイミングで、まず削除されます(クリアされる)。
アプリケーションが(今回は Instana Agent)が PCFを呼び出したタイミングで作成されます。
その後、アプリケーション(今回は Instana Agent)がキューをclose したタイミングまたは アプリケーションが終了したタイミングで削除されます。
これらの 動的テンポラリ・キューで扱われるのは、永続化されないメッセージのみであり、メンテナンスなど気にすることは必要ないとのことです。
動的キューについてはこちらをご参照ください。
動的キューとモデル・キュー
Instana 監視時に 作成されている テンポラリ・キューの数
Instana Agent では、QMGRごとに10個の接続を張ってパフォーマンス・メトリックを取得するため、各QMGRに10個のテンポラリ・キューが動的に作成されます。
まとめ
Instanaで IBM MQを監視した際に、知らないキューがたくさん作成されているように見えますが、これは Instanaがキューを作成しているのではなく、パフォーマンス情報を取得するために利用している IBM MQ PCFの内部仕様として作成されるテンポラリー・キューでした。
PCFについて 理解していないと慌ててしまいますが、特に心配する必要のないものです。