現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください。 情報
内容
Qpidd サーバーが分析メッセージを PostgreSQL に転送しないため、分析データが Edge UI に表示されない。Edge では、edge-qpid-server
コンポーネントは Qpidd サーバーに対応します。
Qpidd は、分析グループごとに 2 つのキューを保持します。
ax-q-axgroup001-consumer-group-001
このキューは、Message Processor と Router から push された分析メッセージを保持します。メッセージは、
edge-qpid-server
によってここから pull され、メッセージが解析されて PostgreSQL に挿入されます。メッセージが正常に処理されると、キューから削除されます。ax-q-axgroup001-consumer-group-001-dl
このキューはデッドレター キューです。これは、
edge-qpid-server
が処理に失敗したため受信する必要がなくなったメッセージの宛先として機能します。通常、最大配信数を超えた場合、または PostgreSQL がランタイム エラーにより新しいデータの挿入を拒否した場合に、入力されます。
エラー メッセージ
根本的な原因は、edge-qpid-server
コンポーネントで発生するさまざまなランタイム エラーである可能性があります。通常、edge-qpid-server
が PostgreSQL からランタイム エラーを受け取ると、デッドレター キューがまだ存在しない場合に作成され、次のメッセージを送信します。
yyyy-MM-dd HH:mm:ss,SSS ax-q-axgroup001-consumer-group-001-persistpool-thread-6 WARN c.a.a.m.MessageConsumer - MessageConsumer.process() : Sending message batch to the DLQ.
考えられる原因
原因 | 説明 | トラブルシューティング手順の適用対象 |
---|---|---|
メッセージが qpidd のデッドレター キューでスタックする | edge-qpid-server が、Qpidd ブローカーから読み取ったメッセージを認識できなかったか、PostgreSQL にメッセージを保持できませんでした。 |
Edge Private Cloud ユーザー |
一般的な診断手順
次のコマンドを実行して、Qpidd キューの統計情報を表示します。
qpid-stat -q
出力では、ブローカーに登録されているキューのセットが返されます。名前が "-dl" で終わるキューにメッセージが取り込まれている場合、デッドレター キューで停滞しているメッセージがあります。
Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ======================================================================================================================== ax-q-axgroup-001-consumer-group-001 Y 0 185 185 0 13.8m 13.8m 6 2 ax-q-axgroup-001-consumer-group-001-dl Y 0 70 70 0 3.9m 3.9m 0 2
原因: メッセージが qpidd のデッドレター キューでスタックする
診断
この状況は、次のシナリオで発生する可能性があります。
- 過去にアップグレードが行われていて、その間に PostgreSQL が停止していました。
- ネットワークの問題による PostgreSQL の一時的な停止。
edge-qpid-server
が PostgreSQL にメッセージを送信しようとしましたが、PostgreSQL がランタイム エラーを返しました。
解像度
一般的な診断手順にあるキューの名前をメモします。例:
ax-q-axgroup-001-consumer-group-001
ax-q-axgroup-001-consumer-group-001-dl
qpid-tool
コマンドを実行して、インタラクティブなqpid
プロンプトを入力します。qpid-tool
このコマンドでは、次のものが返されます。
Management Tool for QPID qpid:
list broker
を実行して、アクティブなブローカーのリストを取得します。list broker
このコマンドでは、次のものが返されます。
Object Summary: ID Created Destroyed Index ======================================= 125 21:00:00 - amqp-broker
ここで、
ID
列にはブローカーの ID を指定します。ブローカーの ID をメモします。この例では 125 です。
次のコマンドを実行して、メッセージをデッドレター キューから実際のキューに戻します。
call 125 queueMoveMessages ax-q-axgroup-001-consumer-group-001-dl ax-q-axgroup-001-consumer-group-001 100000 {}
このコマンドでは、次のものが返されます。
OK (0) - {}
出力がない場合は、何もする必要はありません。つまり、移動するメッセージがないことを意味します。
OK(0)
が表示されない場合は、Apigee Edge サポートにお問い合わせください。qpid-tool ターミナルを終了します。
quit
5 分待ってから、一般的な診断手順の診断手順を再度実行します。実際のキューにあるメッセージが処理されていることを確認し、デッドレター メッセージ数が 0 のままであることを確認します。
問題が解決しない場合は、次のセクションに進みます。
診断情報の収集が必要な場合
上記の手順でも問題が解決しない場合は、次の診断情報を収集してください。Apigee Edge サポートに連絡し、共有してください。
- Qpidd のログ:
/opt/apigee/var/log/apigee-qpidd/apigee-qpidd.log
- PostgreSQL ログ:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
- Edge-qpid-server ログ:
/opt/apigee/var/log/edge-qpid-server/logs/system.log
- Edge-postgres-server ログ:
/opt/apigee/var/log/edge-postgres-server/logs/system.log
Qpidd キューの統計情報:
qpid-stat -q
次の curl コマンドで返される分析グループ。
curl -u sysadminEmail:password http://mgmt:8080/v1/analytics/groups/ax