すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for Kafka:アラートで報告される累積メッセージ数がコンソールに表示される数と異なるのはなぜですか?

最終更新日:Apr 19, 2025

このトピックでは、アラートで報告される累積メッセージ数が ApsaraMQ for Kafka コンソールに表示される数と異なる理由について説明します。

説明

アラートで報告される累積メッセージ数が ApsaraMQ for Kafka コンソールに表示される数と異なります。

image

考えられる原因

原因 1

この問題は、パーティションの累積メッセージ数(パーティションの最大オフセット - パーティションのコンシューマオフセット)と累積メッセージの総数(すべてのパーティションの累積メッセージの合計)を計算するために使用されるメソッドが原因である可能性があります。

たとえば、ApsaraMQ for Kafka インスタンスに m 個のコンシューマグループと n 個のトピックが存在し、各コンシューマグループがすべてのトピックをサブスクライブしているとします。コンシューマグループの累積メッセージ数を計算する場合、次のメソッドを使用できます。

  • 一般的なリクエスト

    このメソッドでは、リモートプロシージャコール( RPC )リクエストを開始してコンシューマグループのコンシューマオフセットを取得し、次に別の RPC リクエストを開始してサブスクライブ済みトピックのパーティションの最大オフセットを取得します。このメソッドは、少なくとも m × n × ブローカー数 の RPC リクエストを生成し、監視システムの計算効率に大きく影響します。

  • バッチリクエスト

    このメソッドでは、 RPC リクエストを開始してすべてのコンシューマグループのコンシューマオフセットを取得し、次に別の RPC リクエストを開始してすべてのサブスクライブ済みトピックのパーティションの最大オフセットを一括で取得します。このメソッドは、 RPC リクエストの数を m × n × ブローカー数 からブローカー数だけに減らします。バッチリクエストの特性により、コンシューマグループのコンシューマオフセットが取得された時刻とパーティションの最大オフセットが取得された時刻の間に遅延が発生します。遅延期間中、メッセージが送信されると、パーティションの最大オフセットは増加し続ける可能性があります。その結果、コンシューマグループのコンシューマオフセットが取得された時刻とパーティションの最大オフセットが取得された時刻の間に差が生じ、累積メッセージ数の計算時にエラーが発生します。

ApsaraMQ for Kafka コンソールの [グループの詳細] ページに表示される累積メッセージの総数は、現在のコンシューマグループのコンシューマオフセットとサブスクライブ済みトピックのパーティションの最大オフセットを個別にリクエストすることで取得されます。 2 つの RPC リクエスト間の時間差は小さいため、表示される累積メッセージ数と実際の累積メッセージ数の間の誤差も小さくなります。アラートに表示される累積メッセージ数は、バッチリクエストメソッドを使用して取得されます。コンシューマグループのコンシューマオフセットが取得された時刻とパーティションの最大オフセットが取得された時刻の差により、累積メッセージ数の計算時にエラーが発生します。その結果、アラートで報告される累積メッセージ数は ApsaraMQ for Kafka コンソールに表示される数と異なります。

原因 2

インスタンスのメッセージ消費率が非常に低く、ディスク使用率が非常に高い場合、インスタンス内のメッセージは消費される前に削除される可能性があります。その結果、一部のパーティションのコンシューマオフセットが最小オフセットよりも小さくなる可能性があります。オープンソースの Apache Kafka と ApsaraMQ for Kafka は、この問題の処理に異なる方法を使用します。

  • オープンソース Apache Kafka

    累積メッセージ数を計算する場合、システムはこの状況で生成された累積メッセージを自動的に無視します。

  • ApsaraMQ for Kafka

    システムは、監視およびアラートポリシーに基づいて、メッセージ累積アラートを送信して問題を通知します。ビジネス要件に基づいて問題を処理できます。

異常なパーティションと正常なパーティションを区別できるように、ApsaraMQ for Kafka コンソールの [グループの詳細] ページに表示される累積メッセージの総数には、異常なトピックの累積メッセージは含まれていません。したがって、アラートの累積メッセージ数はコンソールに表示される数よりも多くなります。

説明
  • コンシューマグループによってサブスクライブされたトピックのメッセージ累積アラートを無視する場合は、ApsaraMQ for Kafka コンソールでコンシューマグループのコンシューマオフセットを 0 にリセットできます。こうすることで、ApsaraMQ for Kafka はトピックのメッセージ累積に関するアラートを生成しなくなります。コンシューマオフセットのリセット方法については、「コンシューマオフセットのリセット」をご参照ください。

  • メッセージ累積アラート機能を一時的に無効にする場合は、 チケットを送信 します。

以下の項目はこの原因の現象を示しています。

  • コンソールに表示される累積メッセージの総数は、アラートで報告される数と異なります。

    image

  • コンソールに表示される累積メッセージの総数には、異常なトピックの累積メッセージは含まれていません。

    image

  • コンソールに表示される累積メッセージの総数には、パーティションのコンシューマオフセットが最小オフセットよりも小さい場合に生成された累積メッセージは含まれていません。

    image