Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMQTT 用 Anypoint Connector (MQTT Connector) のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。
コネクタの冗長ログを有効化するには、コネクタと Eclipse Paho ドライバーのログをアクティブ化する必要があります。
設定ファイルで冗長ログを有効にする手順は、次のとおりです。
Anypoint Studio にアクセスし、[Package Explorer] ビューに移動します。
アプリケーションのプロジェクト名を開きます。
src/main/resources
パスフォルダーを開きます。
フォルダー内の log4j2.xml
ファイルを開きます。
<Loggers>
タグ内に <AsyncLogger>
タグを追加します。
<Loggers>
...
<AsyncLogger name="com.mulesoft.connectors.mqtt3" level="TRACE"/>
...
</Loggers>
xml
アプリケーションの変更を保存します。
Package Explorer でプロジェクト名をクリックし、[Run (実行)] > [Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
MQTT Connector の基盤となるドライバーである Eclipse Paho では、Java Util Logging が使用されます。アプリケーションのログファイルでドライバーのログメッセージを確認する必要がある場合は、次の手順に従ってアプリケーションに最新の log4j-jul-2.xx.x.jar
バージョンを提供します。
{MULE_HOME}/lib/boot
にある log4j-core-2.xx.x.jar
のファイル名内のバージョンサフィックスを確認して、log4j
コアモジュールバージョンを識別します。
埋め込み Mule Runtime Engine (Mule) の場合は、{AnypointStudio Folder}/Contents/Eclipse/plugins/org.mule.tooling.server.4.3.0.ee_7.3.5.202005112043/mule/lib/boot
に似たフォルダーを見つけます。
公開 Maven リポジトリから同じバージョンの log4j-jul-2.xx.x.jar
をダウンロードします。たとえば、Mule 4.3.0 の場合は log4j-jul-2.13.1.jar
になります。
log4j-jul-2.xx.x.jar
を {MULE_HOME}/lib/boot
に配置します。
Apache Logging Services サイトで文書化されているロギングレベルのマッピングに従って、Mule アプリケーションで、対応する
java.util.logging
カテゴリを追加します。次に例を示します。
`<AsyncLogger name="org.eclipse.paho.client.mqttv3.logging.JSR47Logger" level="ALL"/>`
xml
level
属性では、Java Util Logging レベルを指定する必要があります。詳細は、 Apache Logging Services で Java Util Logging レベルの変換テーブルを参照し、その同等の Log4j レベルを確認してください。
ロギングを設定するためのメカニズムはブローカーごとに異なります。Mosquitto ブローカーとロギングレベルを設定する手順は、次のとおりです。
公式 Docker イメージを使用して、Mosquitto ブローカーをセットアップします。これを行うには、次のコマンドを実行します。
docker run -it -p 1883:1883 \
-v /your/local/path/mosquitto.log:/mosquitto/mosquitto.log \
-v /your/local/path/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto
このコマンドを使用して、ログファイル mosquitto.log
と設定ファイル mosquitto.conf
を指定します。
mosquitto.log
は、ブローカーがログメッセージを書き込むファイルです。
mosquitto.conf
は、ブローカーの設定ファイルです。
mosquitto.conf
設定ファイルで目的のログレベルを設定します。次に例を示します。
# Unencrypted MQTT over TCP # for listener at port 1883 listener 1883 allow_anonymous true # ================================================================= # Logging # ================================================================= # Route log messages to log file log_dest file /mosquitto/mosquitto.log # Types of messages to log. Use multiple log_type lines for logging # multiple types of messages. log_type debug log_type error log_type warning log_type notice log_type information
text
前述のファイルの最初の 2 行でポート 1883 のリスナーをセットアップします。認証ログイン情報は必須ではありません。
ロギングセクションで、マウントした mosquitto.log
ファイルにログを書き込む必要があることと、ブローカーですべてのレベルのメッセージを記録する必要があることを指定します。
テストで何が必要かに応じて、異なる設定を持つさまざまなリスナーを追加できます。次に例を示します。
per_listener_settings true # Unencrypted MQTT over TCP listener 1883 allow_anonymous true # Unencrypted MQTT over TCP listener 1884 password_file /mosquitto/config/mosquitto.passwd listener 8080 protocol websockets allow_anonymous true
text
前述のファイルでは、3 個の個別のリスナーを設定しました。
ポート 1883 では、MQTT 経由の匿名接続を許可するエンドポイントを指定しました。
ポート 1884 では、パスワードファイルを指定しました。ブローカーはここで認証用のユーザー名とパスワードが見つかることを期待します。
ポート 8080 では、WebSockets 接続を許可することを指定しました。
個別の設定を使用して個々の各リスナーを設定するには、まず per_listener_settings true
を設定する必要があります。
ここでは、一般的なスローメッセージとその解決方法を示します。
MQTT3:CONNECTIVITY
メッセージのパブリッシュ中にクライアントがブローカーから切断されました。
MQTT3:INVALID_TOPIC
トピックが無効です。たとえば、名前が短すぎるか、名前が長すぎるか、名前に無効な文字が含まれます。
MQTT3:PERSISTENCE
メッセージのパブリッシュ時に、信頼性の高いメッセージング用の永続的なデータの読み取りまたは書き込み中にエラーが発生しました。
MQTT3:PUBLISH
メッセージのパブリッシュ中にエラーが発生しました。
MQTT3:RETRY_EXHAUSTED
すべての再接続の試行に失敗しました。
MQTT3:WRITE_TIMEOUT
サーバーへのメッセージの書き込みを待機している間にクライアントがタイムアウトしてエラーが発生しました。