Kafka の Topic でメッセージが蓄積したり、ディスク使用率が急増したりした場合、影響を受けているパーティションを特定し、コンシューマーが処理に追いついているかどうかを判断するためには、パーティション単位での可視性が必要です。パーティションのステータスでは、Topic 内の各パーティションについてメッセージ数およびオフセット範囲が公開されるため、負荷の不均衡、非アクティブなパーティション、および増加傾向にあるコンシューマーラグを迅速に特定できます。
基本概念
| 概念 | 説明 |
|---|---|
| パーティション | Topic 内の順序付き・追記専用ログです。各パーティションはメッセージを独立して保存し、並列的な消費をサポートします。 |
| オフセット | パーティション内の各メッセージに割り当てられる一意の増分値で、そのメッセージの位置を示します。 |
| 最小オフセット | パーティション内で利用可能な最も古いオフセットです。このオフセットより前のメッセージは、保持ポリシーにより削除済みです。 |
| 最大オフセット | パーティション内の最新のオフセットであり、最も最近書き込まれたメッセージを表します。 |
| コンシューマーラグ | 最大オフセットとコンシューマーグループの最終コミット済みオフセットとの差分です。ラグが大きく、かつ増加傾向にある場合は、コンシューマーが受信メッセージの処理速度に追いついていないことを意味します。 |
前提条件
開始する前に、以下の条件を満たしていることをご確認ください。
ApsaraMQ for Kafka インスタンス内に Topic が作成済みである必要があります。詳細については、「手順 3:リソースの作成」をご参照ください。
コンソールでパーティションのステータスを表示
ApsaraMQ for Kafka コンソールにログインします。
「概要」ページの「リソースの分布」セクションで、リージョンを選択します。
インスタンスリスト ページで、ターゲットインスタンスの名前をクリックします。
左側のナビゲーションウィンドウで、トピック管理 をクリックします。
「トピック管理」ページで、対象トピックの名前をクリックして「トピックの詳細」ページを開き、その後「パーテーションステータス」タブをクリックします。
表 1. パーティションのステータス情報
パラメーター
説明
パーティション ID
Topic のパーティション識別子です。
最早のオフセット
現在のパーティションにおける Topic の最も古いコンシューマーオフセットです。
最新のオフセット
現在のパーティションにおける Topic の最新のコンシューマーオフセットです。
パーティションメッセージ
現在のパーティションに格納されている Topic のメッセージ総数です。
最終更新日時
このパーティションに最後に書き込まれたメッセージの保存時刻です。

[トピック詳細] ページで、[パーティションステータス] タブをクリックします。
このタブでは、各パーティションについて以下のパラメーターが表示されます。
パラメーター 説明 パーティション ID Topic 内におけるパーティションの固有識別子です。 最小オフセット パーティション内で利用可能な最も古いオフセットです。 最大オフセット パーティション内の最新のオフセットです。 メッセージ パーティションに現在格納されているメッセージ数です。計算式は「最大オフセット - 最小オフセット」です。 最終更新日時 パーティションに書き込まれた最新メッセージのタイムスタンプです。 
一般的な問題の診断
パーティションのステータスメトリックを活用して、メッセージの蓄積、負荷の不均衡、非アクティブな Topic の根本原因を特定します。
メッセージの不均等な分散
各パーティション間の[メッセージ]数を比較します。一部のパーティションが他のパーティションよりも大幅に多くのメッセージを保持している場合、プロデューサーは偏ったディストリビューションを引き起こすパーティションキーを使用している可能性があります。確認するには、プロデューサーコードでキーが指定されているかどうか、およびキー値が適切に分散されているかどうかを確認してください。
詳細については、「なぜメッセージがパーティション間で不均等に分散されるのですか?」をご参照ください。
コンシューマーラグ
コンシューマーラグとは、コンシューマーグループのコミット済みオフセットとパーティションの [最大オフセット] との間のギャップです。ラグの計算方法:
コンシューマーラグ = 最大オフセット - コンシューマーのコミット済みオフセットラグが大きく、かつ増加傾向にある場合、コンシューマーがプロデューサーによるメッセージ送信速度に追いついていないことを意味します。主な原因には以下のようなものがあります。
停止中のコンシューマー:グループ内の 1 台以上のコンシューマーが停止しており、残りのコンシューマーに負荷が集中しています。
スループット不足:コンシューマーの処理ロジックが遅い、またはパーティション数に対してコンシューマーグループのメンバー数が不足しています。
各コンシューマーグループのコミット済みオフセットを表示するには、コンソールの[コンシューマーグループ] ページを確認してください。
ディスク使用率の高騰
メッセージ数が多い[Messages] パーティションを探します。複数のパーティションにわたる大規模なボリュームにより、ブローカーのディスクへの負荷が高まります。使用量を削減するには、次の操作を行います。
Topic のメッセージ保持期間を短縮します。
ストレージ容量を増やすために、インスタンスのスケールアップを行います。
古いパーティション
「[最終更新日時]」のタイムスタンプが予想よりも大幅に古い場合、そのパーティションはメッセージを受信しなくなっています。プロデューサーがアクティブであり、正しい Topic をターゲットとしていることを確認してください。
「最終更新日時」列に 1970 または -- が表示された場合は、トピックのパーティションの「最終更新日時」列に「1970」または「--」が表示されるのはなぜですか?をご参照ください。
関連操作
クラウドストレージを利用する Topic 間で、不均等に割り当てられたパーティションを再分散するには、「パーティションのバランス調整とトラフィックの自動転送」をご参照ください。