IBM MQ トレース
IBM MQ トレースは、 IBM MQ ユーザー終了を使用して、 IBM MQ メッセージをトレースする。 IBM MQ Tracingユーザー出口は、 IBM MQ オンプレミスでデプロイされたものと、 IBM MQ Red Hat OpenShift クラスタ上のコンテナで実行されているものをサポートする。
- IBM MQ の場合、トレースデータは同じホスト上の Instana ホストエージェントに報告されます。
- Red Hat OpenShift クラスタ上のコンテナで実行されている IBM MQ の場合、トレースデータは、キューマネージャポッドと同じノードにデプロイされている Instana ホストエージェントにレポートされます。
また、リモートホストエージェントにトレースデータを報告するために、 IBM MQ トレースを設定することもできます。
IBM MQ トレースユーザーの終了によって収集されたトレースデータと、他のトレーサーによって収集されたトレースデータは、トレースコンテキストヘッダー(トレース相関情報)が IBM MQ メッセージに設定されている場合、相関させることができます。 Instana トレースコンテキストヘッダ (X_INSTANA_T, X_INSTANA_S, X_INSTANA_L) および W3C トレースコンテキストヘッダ (traceparent , tracestate) は、データの関連付けのためにサポートされています。 IBM MQ トレース ユーザー終了時にトレース相関情報の伝播が必要な場合、Instana トレース ヘッダーと W3C トレース コンテキスト ヘッダーを IBM MQ メッセージに伝播します。
IBM MQ メッセージのトレースに IBM MQ Tracing を使用するには、以下の手順でキュー・マネージャで IBM MQ Tracing を有効にしてください。
IBM MQ トレースの有効化
IBM MQ オンプレミスでデプロイされた IBM MQ および Red Hat OpenShift クラスタ上のコンテナで実行されている IBM MQ でトレースを有効にできます。
オンプレミスのトレースを有効にする IBM MQ
オンプレミス IBM MQ のトレースを有効にするには、以下のセクションを参照してください:
オンプレミス IBM 対応プラットフォーム MQ
IBM MQ Tracing ユーザー出口は、以下のプラットフォーム上のオンプレミス IBM MQ をサポートしています:
- Linux® x86_64
- Linux ppc64le
- Linux s390x
- ウィンドウズ x86_64
- AIX 7.2
- AIX 7.3
IBM MQ オンプレミスのトレース IBM を有効にするための前提条件 MQ
Windows x86_64 では、Microsoft Visual C++ Redistributable 2019 以降をインストールする必要があります。 最新のMicrosoft Visual C++ Redistributableパッケージは、 マイクロソフト社のウェブサイトからダウンロードできます。
AIX XL C/C++ Runtime for AIX 17.1.3.0 またはそれ以降のバージョン (ファイルセット libc++.rte, libc++abi.rte, and libunwind.rte を含む)がインストールされていること。 ファイルセットがインストールされているかどうかを確認するには、以下のコマンドを使用する:
grep -e libc++.rte -e libc++abi.rte -e libunwind.rte
IBM MQ IBM MQ Tracingをインストールおよび構成する前に、サーバーおよびキュー・マネージャー・インスタンスをインストールおよび構成する必要があります。
ダウンロード IBM MQ オンプレミスのユーザー終了のトレース IBM MQ
オンプレミスのトレースを有効にする前に IBM MQ IBM MQ Tracing user exit パッケージをダウンロードしてください。 IBM MQ Tracing ユーザー終了パッケージをダウンロードするには、以下の手順を実行します。
IBM MQ Tracing user exit
.tar.gzファイルを アーティファクトリーからダウンロードする。 ファイルをダウンロードするには、ユーザー名にアンダースコア(_)を、パスワードに有効なエージェントキーを使用します。ダウンロードした
.tar.gzファイルを一時的な場所に解凍します。 抽出後、ディレクトリの中に、異なるプラットフォーム用の5つのユーザー終了パッケージを見つける。IBM MQ サーバー上のプラットフォーム固有のユーザー終了パッケージを転送します。
以下のいずれかのステップを実行します。
- Linux または AIX IBM MQ サーバーで、ユーザー終了パッケージを
/var/mqm/exits64ディレクトリに展開します。 - Windows IBM MQ サーバー上で、ユーザー終了を
C:\ProgramData\IBM\MQ\exits64ディレクトリに展開する。
- Linux または AIX IBM MQ サーバーで、ユーザー終了パッケージを
以下のファイルを
exits64ディレクトリに置く:- IBM MQ ユーザー終了バイナリ。 IBM MQ APIコールをインターセプトし、スパンを作成するためにラップされた OpenTelemetry C++クライアント・ライブラリへのコールを開始する。
- Linux と AIX に、
mqtracingexit_rファイルを置く。 - Windowsの場合は、
mqtracingexit.dll。
- Linux と AIX に、
- OpenTelemetry スパンのライフサイクルを管理する関数を提供し、スパンを Instana ホストエージェントに送信します。
- Linux と AIX に、
tracelibrary.soファイルを置く。 - Windowsの場合は、
tracelibrary.dll。
- Linux と AIX に、
- IBM MQ トレース用の
mqtracingexit.conf設定ファイル。mqtracingexit.confファイルは、 MQ サーバ上のすべてのキュー・マネージャ・インスタンス用の設定ファイルです。 キュー・マネージャ専用の設定ファイルを作成するには、mqtracingexit.confをmqtracingexit_<QMNAME>.confにコピーします。
- IBM MQ ユーザー終了バイナリ。 IBM MQ APIコールをインターセプトし、スパンを作成するためにラップされた OpenTelemetry C++クライアント・ライブラリへのコールを開始する。
IBM MQ サーバの OS に応じて、以下の手順を実行することにより、トレーサが実行時に OpenTelemetry クライアント共有ライブラリを解決できることを確認する:
- Linux と AIX では、
libopentelemetry_*.aファイルを/usr/local/libディレクトリに置く。 - Linux で、
/usr/local/libをダイナミック・リンカーの検索パスecho "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usrlocal.confに追加し、次にsudo ldconfigコマンドを実行してキャッシュを再構築する。 - AIX で
export LIBPATH=/usr/local/lib:$LIBPATHコマンドを実行するか、/etc/environmentにその行を追加して恒久化する。 - Windowsの場合、
libopentelemetry_*.dllファイルをC:\ProgramData\IBM\MQ\exits64ディレクトリに置く。 - Windowsの場合、システム環境変数ダイアログから
C:\ProgramData\IBM\MQ\exits64ディレクトリを環境変数に追加します。PATHディレクトリを追加し、ターミナルを再起動する。
- Linux と AIX では、
IBM MQ オンプレミスのユーザー退出をトレースする IBM MQ
オンプレミス IBM MQ のユーザー終了を有効にするには、 mqs.ini または qm.ini ファイルを編集します。 mqs.ini ファイルには、ホスト上のすべてのキューマネージャインスタンスに関連する情報が含まれています。
- Linux と AIX では、
mqs.iniファイルは/var/mqmディレクトリにある。 - Windowsの場合、
mqs.iniファイルはC:\ProgramData\IBM\MQディレクトリにある。
qm.ini ファイルには、特定のキュー・マネージャーに関係のある情報が含まれています。
- Linux と AIX では、
qm.iniファイルは/var/mqm/qmgrs/<QMNAME>ディレクトリにある。 - Windows では、
qm.iniファイルはC:\ProgramData\IBM\MQ\qmgrs\<QMNAME>ディレクトリにある。<QMNAME>はキュー・マネージャの名前である。
IBM MQ すべてのキューマネージャインスタンスのトレースを有効にする
ホスト上のすべてのキューマネージャインスタンスのトレースを有効にするには、以下の手順を実行します:
mqs.iniファイルをバックアップします。- Linux、 AIX、
/var/mqm/mqs.iniファイルをバックアップする。 - Windowsの場合は、
C:\ProgramData\IBM\MQ\mqs.iniファイルをバックアップしてください。
- Linux、 AIX、
mqs.iniファイルを編集します。以下の内容を追加して、このノードのすべてのキュー・マネージャ・インスタンスのユーザ退出を有効にします。 キューマネージャが起動すると、このスタンザの属性が読み込まれ、その後、
qm.iniファイルで定義されているユーザ終了によって上書きされます。Linux と AIX に以下の行を追加する:
ApiExitCommon: Sequence=100 Function=EntryPoint Module=/var/mqm/exits64/mqtracingexit Name=TracingApiExitWindowsでは、以下の行を追加する:
ApiExitCommon: Sequence=100 Function=EntryPoint Module=C:\ProgramData\IBM\MQ\exits64\mqtracingexit Name=TracingApiExitmqs.iniファイルに変更を保存する。キュー・マネージャ・インスタンスを再起動して変更を適用します。
IBM MQ キューマネージャのトレースを有効にする
特定のキューマネージャのトレースを有効にするには、以下の手順を実行してください:
qm.iniファイルをバックアップします。- Linux、 AIX、
/var/mqm/qmgrs/<QMNAME>/qm.iniファイルをバックアップする。 - Windowsでは、
C:\ProgramData\IBM\MQ\qmgrs\<QMNAME>\qm.iniファイルをバックアップしてください。
- Linux、 AIX、
qm.iniファイルを編集します。Linux と AIX に以下の設定を追加する:
ApiExitLocal: Sequence=100 Function=EntryPoint Module=/var/mqm/exits64/mqtracingexit Name=TracingApiExitWindowsで以下の設定を追加する:
ApiExitLocal: Sequence=100 Function=EntryPoint Module=C:\ProgramData\IBM\MQ\exits64\mqtracingexit Name=TracingApiExitここで:
Sequenceは、他の出口との関係で、その出口の順序を識別します。 シーケンス番号が小さい出口は、大きいシーケンス番号の出口より先に呼び出されます。Functionは、ユーザー出口コードを含むモジュールへの関数エントリー・ポイントの名前を識別します。Moduleには、ユーザー出口コードが含まれています。 このフィールドにモジュールの絶対パス名が指定されていると、そのまま使用されます。 このフィールドにモジュール名だけが含まれている場合、モジュールはqm.iniファイルの ExitPath の ExitsDefaultPath 属性を使用して配置されます。Nameは、ユーザー出口の記述名です。
qm.iniファイルに変更を保存する。キュー・マネージャ・インスタンスを再起動して変更を適用します。
IBM MQ のユーザー終了を有効にする方法については、 IBM MQ ガイドを参照のこと。
Red Hat OpenShift クラスタで IBM MQ のトレースを有効にする
IBM MQ Operator 2.2.0 およびそれ以降のバージョンは、Instana IBM MQ Tracing をネイティブにサポートしています。 ネイティブ・サポートを得るには、 IBM MQ キュー・マネージャー・コンテナ・イメージ 9.3.1.0-r2 またはそれ以降のバージョンを使用する。 Instana IBM MQ IBM Cloud Pak for Integration クラスタまたは Red Hat OpenShift Container Platform クラスタ上で IBM MQ オペレータ 2.2.0 またはそれ以降のバージョンを使用してデプロイされているキューマネージャのトレースを有効にするには、 IBM MQ ガイドを参照してください。 IBM MQ トレースは、 x86_64、 ppc64le、 s390x Kubernetes ノードの Linux でサポートされています。
Instana AutoTrace webhook を使用して、 IBM Cloud Pak for Integration クラスタ上の IBM MQ に対して Instana IBM MQ Tracing を有効にすることもできます。 Instana AutoTrace webhook は、 9.3.3.0 および Linux/amd64 Kubernetes ノードより前のバージョンの IBM MQ キュー・マネージャー・コンテナ・イメージのみをサポートします。 IBM Cloud Pak for Integration クラスタ上で実行される IBM MQ コンテナのトレースを有効にする方法の詳細については、 IBM MQ および ACE の Webhook インストルメンテーションを有効にするを参照してください。
IBM MQ トレースの構成
IBM MQ トレースはデフォルトで設定されている。 ただし、 IBM MQ トレース設定を変更することは可能です。
IBM MQ オンプレミスのトレースの設定 IBM MQ
IBM MQ Tracing for on-premises IBM MQ を設定するには、以下の手順を実行します。
exits64:- Linux と AIX については、
/var/mqm/exits64ディレクトリにアクセスしてください。 - Windowsの場合は、
C:\ProgramData\IBM\MQ\exits64ディレクトリに移動します。
- Linux と AIX については、
すべてのキューマネージャインスタンス用の
mqtracingexit.confファイル、または特定のキューマネージャ用のmqtracingexit_<QMNAME>.confファイルを編集します。# configuration for IBM MQ Tracing user exit LOG_LEVEL="info" #Log level: info, warn, error, debug SPAN_FORMAT="instana" #Span Format: instana, otel MONITOR_LEVEL="normal" #MQ tracing level: normal, quiet, off, debug IBMMQ_DEST_MONITOR_LEVEL_OFF = "" Regex for message destinations with tracing level off, for example: "^TMPQ.*". An example for multiple conditions: "^SYSTEM\\.AUTH\\..*|^TEMP\\.QUEUE\\..*". IBMMQ_DEST_MONITOR_LEVEL_QUIET = "" #Regex for message destinations with tracing level quiet IBMMQ_DEST_MONITOR_LEVEL_NORMAL = "" #Regex for message destinations with tracing level normal IBMMQ_DEST_MONITOR_LEVEL_DEBUG = "" #Regex for message destinations with tracing level debug IBMMQ_PUBSUB_SUPPORT = "off" #The switch for the publish/subscribe support: on, off IBMMQ_RFH2_HEADERS_TO_EXPOSE = "" #A list of message headers that must be included in the `PUT` span payload, and each header is separated by commas. INSTANA_AGENT_HOST = "localhost" #(optional) Applies only when the SPAN_FORMAT is set to instana INSTANA_AGENT_PORT = 42699 #(optional) Applies only when the SPAN_FORMAT is set to instana INSTANA_AGENT_PROTO = "http" #(optional) Applies only when the SPAN_FORMAT is set to instana HOST_ALIAS="<YOUR-HOST-NAME>" #(optional) Applies only when the SPAN_FORMAT is set to instana LOCAL_SOURCE_ADDRESS = "" #(optional) The local source ip address for outgoing traffic OTLP_EXPORTER_GRPC_ENDPOINT = "" #(optional) Applies only when the SPAN_FORMAT is set to otel OTLP_EXPORTER_SSL_CACERT_PATH = "" #(optional) Applies only when the SPAN_FORMAT is set to otel OTLP_EXPORTER_HTTP_URL = "" #(optional) Applies only when the SPAN_FORMAT is set to otelここで、それぞれ以下のとおりです。
-
LOG_LEVELこのパラメータはログレベルを指定する。 ログレベルはinfo、warn、error、debugのいずれか。 Linux と AIX では、ログファイルは/tmp/ibmmqtraceディレクトリにあり、Windows では、ログファイルはC:\ProgramData\IBM\MQ\traceディレクトリにある。 ログファイルのデフォルト・ディレクトリを変更するには、 「 IBM MQ トレース用ログファイル 」セクションの手順を参照してください。 -
SPAN_FORMATこのパラメータは、スパンデータを送信するトレースシステムを指定する。 この変数をinstanaに設定してください。 デフォルトでは、 IBM MQ トレースユーザーの終了は、ホストエージェントエンドポイントhttp://localhost:42699にスパンデータを送信する。 HTTPS プロトコルを使用してスパンデータをリモートホストエージェントに送信するには、設定項目INSTANA_AGENT_HOSTとINSTANA_AGENT_PROTOを更新します。SPAN_FORMATの設定は、 IBM MQ のホストでも同じでなければなりません。 -
MONITOR_LEVELこのパラメータは、キューマネージャのデフォルトのトレースレベルを指定するもので、off、quiet、normal、debugのいずれかに設定することができる。MONITOR_LEVELがoffに設定されている場合、トレースデータは収集されない。quietに設定された場合、トレース相関情報はすべてのメッセー ジに追加されませんが、 IBM MQ サーバーでメッセージをトレースすることができます。 これがnormalに設定されている場合、トレース相関情報は、 RFH2 ヘッダーまたは名前付きプロパティを持つメッセージに追加されるが、テキストメッセージには追加されない。 これがdebugに設定されている場合、トレース相関情報はトレースされているすべてのメッセージに追加されます。 -
IBMMQ_DEST_MONITOR_LEVEL_OFFこのパラメータは、トレースレベルoffのメッセージ宛先を指定する。 このパラメータの値は、"^TMPQ.*"のような正規表現でなければなりません。 つまり、TMPQで始まる宛先に送られたメッセージはトレースされない。 トランザクションの完全性を保証するために、同じメッセージングチェーン内のメッセージ宛先のトレースレベルを同じにしておく必要があります。 メッセージの宛先が複数の正規表現にマッチする場合、有効な正規表現の優先順位は以下のようになる:IBMMQ_DEST_MONITOR_LEVEL_OFF,IBMMQ_DEST_MONITOR_LEVEL_QUIET,IBMMQ_DEST_MONITOR_LEVEL_NORMALそしてIBMMQ_DEST_MONITOR_LEVEL_DEBUG. -
IBMMQ_DEST_MONITOR_LEVEL_QUIETこのパラメータは、トレースレベルquietのメッセージ宛先を指定する。 このパラメータの値は正規表現でなければならない。 メッセージの宛先がこの正規表現にマッチする場合、トレース相関情報は、メッセージの宛先に送信されるすべてのメッセージに追加されません。 しかし、 IBM MQ サーバーでメッセージをトレースすることはできる。 -
IBMMQ_DEST_MONITOR_LEVEL_NORMALこのパラメータは、トレースレベルnormalのメッセージ宛先を指定する。 このパラメータの値は正規表現でなければならない。 メッセージの宛先がこの正規表現にマッチする場合、 RFH2 ヘッダーまたは名前付きプロパティを持つメッセージにトレース相関情報が追加されます。 しかし、トレース相関情報はテキストメッセージには追加されない。 -
IBMMQ_DEST_MONITOR_LEVEL_DEBUGこのパラメータは、トレースレベルdebugのメッセージ宛先を指定する。 このパラメータの値は正規表現でなければならない。 メッセージの宛先がこの正規表現にマッチする場合、トレース相関情報は、メッセージの宛先に送信されるすべてのメッセージに追加されます。 Windowsプラットフォームでは、 既知の問題のため、宛先キューのモニター・レベル(IBMMQ_DEST_MONITOR_LEVEL_*)とグローバル・モニター・レベル(MONITOR_LEVEL)を一緒に使用することはできません。 -
IBMMQ_PUBSUB_SUPPORTこのパラメータは、パブリッシュ・メッセージとサブスクライブ・メッセージのトレースを有効にするかどうかを制御します。 サポートを有効にするにはon、無効にするにはoff。 -
IBMMQ_RFH2_HEADERS_TO_EXPOSEこのパラメータは、スパンペイロードに含まれなければならないメッセージヘッダーの リストを指定する。各ヘッダーはカンマで区切られる。例えば、IBMMQ_RFH2_HEADERS_TO_EXPOSE="rfh2_folder1.header1, rfh2_folder2.header2, header3"。 256バイトより大きなサイズのメッセージ・ヘッダは、スパン・サイズが大きくなりすぎて全体のパ フォーマンスに影響を与えるのを避けるために、切り捨てられる。 また、1つのスパンで収集されるすべてのメッセージヘッダーの長さの合計は、3KBを超えてはならない。 したがって、最も重要なヘッダーのみをコレクションに設定する必要がある。 -
INSTANA_AGENT_HOSTこのパラメータは、Instana フォーマットのスパンデータが送信されるエージェントホストを指定します。 リモートエージェントホストを指定する場合、ホストエージェントはデフォルトでは他のホストから到達できないため、最初にリモートホストエージェント用の行*instanaAgentDir*/etc/instana/com.instana.agent.main.config.Agent.cfgをhttp.listen=*に追加する必要もあります。 -
INSTANA_AGENT_PORTこのパラメータは、Instana エージェントがリッスンしているポートを指定します。デフォルトでは42699が使用されます。 エージェントが別のポートでリッスンしている場合にのみ、ポートを変更する必要があります。 -
INSTANA_AGENT_PROTOこのパラメータは、 IBM MQ Tracing exit とホストエージェント間の接続タイプを指定します。 IBM MQ センサーは HTTP と HTTPS プロトコルの両方をサポートしています。 ただし、デフォルトでは HTTP。 プロトコルを HTTPS に変更するには、まずエージェントのエンドポイントを保護する必要があります。 エージェント・エンドポイントを保護する方法の詳細については、 エージェント・エンドポイントのTLS暗号化の設定を参照してください。 -
HOST_ALIASこのパラメータは、 IBM MQ Tracing ユーザー終了によって収集されるスパンデータのホストエイリアスを指定します。 IBM MQ センサがキュー・マネージャも監視している場合、 IBM MQ へのコールをインフラストラクチャ・エンティティにリンクすることができる。 デフォルトでは MQ ホストの FQDN が使用される。 ホストエイリアス値は、ホストエージェント設定yamlで指定されている IBM MQ ホストと一致する必要がある。 IBM MQ ホストの FQDN が IBM MQ センサー構成で使用されておらず、ホストエージェントがローカルの IBM MQ ホスト上にない場合は、ホストエイリアスを指定します。 IBM MQ センサーは、ローカルのキュー・マネージャー・インスタンスの FQDN を発見することができる。 -
LOCAL_SOURCE_ADDRESSこのパラメータは、 IBM MQ Tracing ユーザー出口からの発信トラフィックのローカルソースIPアドレスを指定します。 IBM MQ サーバーに複数のネットワーク・インターフェイスがあり、 IBM MQ トレース・ユーザー出口からのすべての発信トラフィックを特定のネットワーク・インターフェイスにバインドしたい場合にのみ、設定する必要があります。 -
OTLP_EXPORTER_GRPC_ENDPOINTSPAN_FORMATがotelに設定されているとき、 OpenTelemetry スパンデータが送信される OTLP gRPC エンドポイントを指定する。 デフォルトはlocalhost:4317です。 TLSが gRPC エンドポイントで有効になっている場合は、OTLP_EXPORTER_SSL_CACERT_PATHも設定する。 AIX プラットフォームでは、OTLP gRPC プロトコル(OTLP_EXPORTER_GRPC_ENDPOINTを設定すると有効になる)は使用できないため、デフォルトで HTTP が使用されます。
-
ファイルを保存します。
キュー・マネージャ・インスタンスを再起動する。
INSTANA_SERVICE_NAME 環境変数を設定する。Red Hat OpenShift クラスタ上の IBM MQ トレースの設定
Red Hat OpenShift クラスタ上で稼働しているキューマネージャの IBM MQ Tracing の設定を変更するには、キューマネージャポッドに新しい環境変数を追加します。 環境変数名は、 Configuring IBM MQ Tracing for on-premises IBM MQ セクションに記載されている設定項目名と一致する必要があります。 キュー・マネージャ・ポッドの環境変数を追加するには、以下の手順を実行します:
Red Hat OpenShift クラスター Web コンソールにログインします。
ナビゲーション・パネルで、[ Operators ] > [ Installed Operators] をクリックします。 指定したプロジェクトにインストールされているすべてのオペレーターが表示されます。
IBM MQ Operatorを選択。 IBM MQ Operator ウィンドウが表示されます。
キュー・マネージャー・タブに行く。 キューマネージャの詳細ウィンドウが表示されます。
トレース設定を変更したいキューマネージャを選択します。
「YAML」タブに移動します。
spec > template > pod > containers > env セクションに環境変数を追加する。 例えば、 IBM MQ Tracingのログレベルをdebugに変更するには、以下のスニペットを使用します:
template: pod: containers: - env: - name: LOG_LEVEL value: debug更新されたキューマネージャの YAML ファイルを保存します。
アップグレード IBM MQ トレース
IBM MQ Tracingの新しいバージョンがリリースされたら、 IBM MQ Tracingをアップグレードすることができます。
アップグレード IBM MQ オンプレミスのトレース IBM MQ Linux または AIX
- Instana エージェントが IBM MQ サーバで実行されている場合は、キューマネージャーインスタンスと Instana エージェントを停止します。
- IBM MQ Tracing ユーザー終了の設定ファイルを IBM MQ サーバーの
/var/mqm/exits64ディレクトリにバックアップする。 - ダウンロードした IBM MQ Tracing user exit ファイルを解凍し、
/var/mqm/exits64ディレクトリの対応するファイルを置き換える。 - ステップ 1 で Instana エージェントが停止していた場合は、キューマネージャーインスタンスと Instana エージェントを起動します。
アップグレード IBM MQ Windows上のオンプレミス IBM MQ のトレース
- Instana エージェントが IBM MQ サーバで実行されている場合は、キューマネージャインスタンス、 MQ エクスプローラ、および Instana エージェントを停止します。
- IBM MQ Tracing ユーザー終了の設定ファイルを IBM MQ サーバーの
C:\ProgramData\IBM\MQ\exits64ディレクトリにバックアップする。 - ダウンロードした IBM MQ Tracing user exit ファイルを解凍し、
C:\ProgramData\IBM\MQ\exits64ディレクトリの対応するファイルを置き換える。 - ステップ 1 で Instana エージェントが停止していた場合は、キュー・マネージャ・インスタンス、 MQ エクスプローラ、および Instana エージェントを起動します。
アップグレード IBM MQ Red Hat OpenShift クラスタ上のトレース
Red Hat OpenShift クラスタ上で IBM MQ Tracing をアップグレードするには、次のいずれかの手順を実行します:
- IBM MQ IBM MQ オペレータ 2.2.0 またはそれ以降のバージョンを使用してトレースが有効になっている場合は、 IBM MQ キュー・マネージャをアップグレードしてください。
- Instana AutoTrace webhook を使用して IBM MQ Tracing が有効になっている場合は、Instana AutoTrace webhook を再度デプロイし、キューマネージャーポッドを再起動します。
IBM MQ トレースを無効にする
IBM MQ Tracingを無効にするには、設定を変更するか、 IBM MQ Tracingユーザーを終了します。
IBM MQ オンプレミスのトレースを無効にする IBM MQ
IBM MQ でトレースデータの収集を無効にするには、 mqtracingexit.con ファイルで MONITOR_LEVEL を off に設定する。
IBM MQ ユーザー終了のトレースを無効にするには、 IBM MQ ホストで以下の手順を実行します:
/var/mqm/mqs.iniまたはC:\ProgramData\IBM\MQ\mqs.iniファイルで設定したApiExitCommonとApiExitLocalスタンザを削除し、 IBM MQ トレースが有効になっている IBM MQ ホストから/var/mqm/qmgrs/<QMNAME>/qm.iniまたはC:\ProgramData\IBM\MQ\qmgrs\<QMNAME>\qm.iniファイルを削除する。- Instana エージェントが IBM MQ サーバで実行されている場合は、キューマネージャーインスタンス、 MQ Explorer、および Instana エージェントを再起動します。
Red Hat OpenShift クラスタで IBM MQ トレースを無効にする
Red Hat OpenShift クラスタで IBM MQ Tracing を無効にするには、次のいずれかの手順を実行します:
IBM MQ IBM MQ オペレータバージョン 2.2.0 以降を使用してトレースが有効になっている場合は、 IBM Cloud Pak for Integration Platform UI または OpenShift ウェブコンソールで
Enable Instana tracingトグルをfalseに設定します。 IBM MQ ガイドを参照。IBM MQ トレースが Instana AutoTrace Webhook を使用して有効になっている場合は、次のいずれかの手順を実行します:
- Instana AutoTrace Webhook をアンインストールし、キューマネージャーポッドを再起動します。
- Instana AutoTrace webhook をアンインストールし、
autotrace.ibmmq.enabledをfalseに設定してから、Instana AutoTrace webhook を再度デプロイします。 変更を有効にするには、キュー・マネージャ・ポッドを再起動します。 AutoTrace webhookのインストールを参照してください。
IBM MQ トレース用ログファイル
IBM MQ トレースログは mqExit*.log ファイルに保存される。 IBM MQ Tracingのログレベルを設定するには、 IBM MQ Tracingユーザー終了の LOG_LEVEL 構成パラメータの値を変更します。
- Linux と AIX では、ログファイルはデフォルトで
/tmp/ibmmqtraceディレクトリにある。 - Windowsでは、ログファイルはデフォルトで
C:\ProgramData\IBM\MQ\traceディレクトリにあります。
IBM MQ トレースログファイルのデフォルトディレクトリを変更するには、以下の手順を実行します:
- IBM MQ ホスト上で INSTANA_IBMMQ_TRACE_DIR 環境変数を設定する。 IBM MQ プロセスを起動できるすべてのユーザーに、この環境変数を設定する。 そうでない場合、この環境変数を設定せず、 IBM MQ プロセスを開始すると、ログファイルはデフォルトのディレクトリに置かれる。
- キュー・マネージャ・インスタンスを再起動する。
デフォルトでは、 IBM MQ トレースログファイルの先頭に mqExit が付きます。 IBM MQ Tracing ログファイルのこのデフォルト接頭辞を変更するには、以下の手順を実行します:
- IBM MQ ホスト上で INSTANA_IBMMQ_TRACE_PREFIX 環境変数を設定する。 IBM MQ プロセスを起動できるすべてのユーザーに、この環境変数を設定する。 そうでない場合、この環境変数を設定せず、 IBM MQ プロセスを起動すると、ログファイルの先頭に
mqExitが付く。 - キュー・マネージャ・インスタンスを再起動する。
OpenTelemetry のスパンデータをOTLP受信機に送信する
IBM MQ Linux と Windows の両方でのトレースは、 OpenTelemetry フォーマットのスパンデータを生成することができます。 データは、 OpenTelemetry CollectorやJaeger Collectorのような OpenTelemetry プロトコル(OTLP)レシーバーに送ることができる。 その後、OTLPレシーバーは、さらなる処理のために観測可能性バックエンドにデータをエクスポートします。
OpenTelemetry のスパン・データを生成し、OTLP受信機に送信するには、以下の手順を実行する:
- IBM MQ サーバーにアクセスし、 IBM MQ ユーザー終了をトレースするための
mqtracingexit.conf設定ファイルを開く。 - SPAN_FORMAT フィールドを
otelに設定する。 - スパン・データを OTLP gRPC レシーバーに送信するには、 OTLP_EXPORTER_GRPC_ENDPOINT フィールドで gRPC エンドポイントを指定します。 デフォルト値は
localhost:4317です。 gRPC エンドポイントで TLS が有効になっている場合、 OTLP_EXPORTER_SSL_CACERT_PATH フィールドに CA 証明書ファイルのパスを指定します。 この証明書ファイルは、ターゲットOTLP gRPC エンドポイントの証明書を検証する。 - OTLP HTTP 受信機を使いたい場合は、OTLP _EXPORTER_HTTP_URL フィールドに、OTLP HTTP エンドポイントの URL を指定します。 例えば、
http://localhost:4318/v1/tracesです。 - キュー・マネージャ・インスタンスを再起動する。
Red Hat OpenShift クラスタ上の IBM MQ に対してこの機能を設定するには、キューマネージャポッドに同等の環境変数を設定します。 キュー・マネージャのポッドに環境変数を設定する方法の詳細については、 Red Hat OpenShift クラスタでの IBM MQ トレースの設定 を参照してください。
トラブルシューティング
IBM MQ トレースで以下の問題が発生する可能性があります:
MQRFH2 ヘッダーの追加によるメッセージ処理エラー
トレース相関情報を伝播するために、 IBM MQ トレースユーザー終了は、メッセージにすでに MQRFH2 ヘッダーが含まれている場合、またはメッセージ送信先のモニターレベルが debug に設定されている場合、トレース対象のメッセージに追加の MQRFH2 ヘッダー (X_INSTANA_T, X_INSTANA_S, X_INSTANA_L, traceparent, tracestate) を追加します。 しかし、メッセージに追加ヘッダーデータが存在すると、 IBM MQ コンシューマーアプリケーションによっては、メッセージ処理エラーやメッセージ拒否の原因になることがある。 追加の MQRFH2 ヘッダーが、 IBM MQ クライアント・アプリケーションでエラーを引き起こす場合は、以下のいずれかの対処を行ってください:
- IBM MQ クライアント アプリケーションを変更して、Instana が追加したトレース相関情報を持つ追加の MQRFH2 ヘッダーを無視するようにします。
- IBM MQ Tracing ユーザー終了設定パラメータにメッセージングチェーン内のキューを追加することで、トレース相関伝搬を無効にします。
IBMMQ_DEST_MONITOR_LEVEL_QUIET. - IBM MQ クライアント・アプリケーションによって接続されたキューについて、
PROPCTLプロパティの値をNONEに変更する。
トレース相関情報は、 IBM MQ メッセージには追加されません
デフォルトでは、トレース相関情報は、 MQRFH2 ヘッダーまたはメッセージ・プロパティを含む IBM MQ メッセージに自動的に追加されます。 IBM MQ クライアント・アプリケーションを壊さないように、 IBM MQ ユーザー終了のトレースでは、プレーン・テキスト・メッセージにトレース相関情報を追加しません。 それでもなお、メッセージにトレース相関情報を追加したい場合は、 IBM MQ Tracing ユーザー終了設定パラメータにメッセージ送信先を追加することができます。 IBMMQ_DEST_MONITOR_LEVEL_DEBUG . しかし、 IBM MQ クライアント・アプリケーションが、追加の MQRFH2 ヘッダーを持つメッセージを解析できるようにする必要があります。
通話の詳細にインフラリンクが表示されない
IBM MQ Tracing ユーザー出口によって生成されるコールを、 IBM MQ キューマネージャの監視対象インフラストラクチャ エンティティにリンクできます。このエンティティは、Instana UI の Instana IBM MQ センサーによって収集されます。 Instana IBM MQ センサーが収集するキュー・マネージャーのエンティティIDには、アクティブ・ノードとスタンバイ・ノード IBM MQ の両方のホストが含まれているため、 IBM MQ の高可用性シナリオではインフラリンクが利用できない場合があります。 これは、 IBM MQ Tracingユーザー終了によって生成されるエンティティIDとは対照的で、アクティブな IBM MQ ノードのホストのみを含む。 不一致は、呼の詳細とキュー・エンティティ間のリンクを破壊する。 この問題を解決するには、次のような対処が可能です:
- Instana UI のインフラストラクチャビュー内の高可用性キューマネージャダッシュボードに移動します。
- キュー・マネージャ・ダッシュボードのサイドバーにある Name 属性を見つけて、キュー・マネージャのホスト情報を抽出してください。 高可用性キューマネージャのホストは、
Name文字列のうち、@シンボルの後に来る部分である。 例えば、キューマネージャ名がhaqm1@ibmmqnode1.ibm.com-ibmmqnode2.ibm.com-ibmmqnode3.ibm.comと表示される場合、キューマネージャホストはibmmqnode1.ibm.com-ibmmqnode2.ibm.com-ibmmqnode3.ibm.comとなります。 - IBM MQ サーバーにアクセスし、 IBM MQ ユーザー終了をトレースするための
mqtracingexit.conf設定ファイルを開く。 - HOST_ALIAS フィールドに、手順2で取得したキュー・マネージャ・ホスト名を設定します。
- 構成ファイルを保存します。
- 変更を適用するために高可用性キューマネージャを再起動します。