Consumer Lag は「各パーティションで最新の末尾オフセットとコンシューマの位置(またはコミット済み位置)の差」です。定義の取り違えが監視の誤検知や取りこぼしにつながります。
本稿では、ラグの算出式と主要メトリクス、実運用のアラート設計、ツール比較、遅延の主因と対策、そして CCDAK/CCAAK の出題で問われやすい要点を一気に押さえます。
Consumer Lag は、パーティションの End Offset(最新の書き込み位置)とコンシューマの位置の差です。実務では「コミット済みオフセットとの差」を採用するツール(kafka-consumer-groups.sh や多くのエクスポーター)と、「フェッチ済みの現在位置との差」を採用するクライアントメトリクス(records-lag 系)があります。どちらも正しいが、アラートの意味合いが異なるため、基準を統一して監視設計することが重要です。
Kafka のコンシューマグループは、各パーティションに対して最後に処理した位置を __consumer_offsets という内部トピックにコミットします。ラグはパーティション単位で計算され、グループ全体のラグは単純合算(サム)で評価するのが基本です。
Consumer Lag の概念図(1トピック2パーティション例)
kafka-consumer-groups.sh の LAG 列は、通常 EndOffset − CommittedOffset の差です。これは「どこまで処理を確定させたか」を示すため、運用アラートの基準にしやすい値です。一方、クライアント JMX の records-lag 系はフェッチ・処理中の“現在位置”基準で、短期の詰まり検知に有効です。
代表的メトリクスは以下です。JMX 名称は安定的に利用されますが、監視基盤側のエクスポート名はツールごとに差異があるため、拾い先のドキュメントで最終確認してください。
現場で使う確認コマンドと Prometheus アラート例
# 1) グループごとのラグ確認(Committed 基準)
$ kafka-consumer-groups.sh \
--bootstrap-server broker1:9092 \
--group orders-app \
--describe
# 2) 特定グループのラグが5分間1万件超で通知(Prometheus 例)
# ※ メトリクス名はエクスポーター実装により異なります(例: Kafka Lag Exporter)。
ALERT KafkaConsumerLagHigh
expr: max_over_time(kafka_consumergroup_group_lag{group="orders-app"}[5m]) > 10000
for: 5m
labels:
severity: warning
annotations:
summary: "Kafka consumer lag high (orders-app)"
description: "Lag > 10k for 5m. Investigate consumer throughput, rebalancing, or downstream slowness."固定しきい値だけでは、ピーク時の一時的増加と本質的な詰まりを区別しづらいので、“量”と“持続時間”を組み合わせます。さらに Backlog Seconds を併用すると、ビジネス影響(どれだけ遅れているか)に直結するアラートが作れます。
また、コンシューマの取り込みレートがゼロ近傍で records-lag-max が増え続ける組み合わせは、処理ループ停止やリバランス多発の典型パターンです。アラートは単一指標の絶対値だけでなく、レートや傾きの組で設計します。
ツールによりラグの“基準”(Committed vs 現在位置)と評価ロジックが異なります。運用要件(SLA 準拠か、傾向監視か、ダッシュボード重視か)で選択してください。
Confluent Control Center はプラットフォーム統合で可視化・アラートが容易。Burrow はコミットの傾きで状態(OK/WARN/ERROR)を判定し、偽陽性を抑制します。軽量に始めるなら CLI とエクスポーターによる Prometheus/Alertmanager 連携が扱いやすいです。
| ツール | ラグの算出基準 | アラート機能 | 可視化/特徴 |
|---|---|---|---|
| kafka-consumer-groups.sh | Committed 基準(EndOffset−CommittedOffset) | 手動確認向け。スクリプト化で簡易監視可 | 軽量・標準同梱・ワンショット |
| Confluent Control Center | Committed とクライアントメトリクス双方 | しきい値/異常検知、通知連携 | GUI ダッシュボード、トレンド、トピック/グループ横断 |
| Burrow | 主に Committed 基準+傾き評価 | OK/WARN/ERROR をエバリュエータで判定 | UI なし(外部連携前提)、偽陽性が少ない |
| Kafka Lag Exporter + Prometheus | Committed 基準(パーティション/グループ合算) | PromQL で柔軟に定義、Alertmanager 連携 | ダッシュボード(Grafana)容易、低コスト |
ラグは「生産>消費」の時間帯が続くと累積します。処理スループット不足、リバランス多発、エラー再試行地獄、外部依存(DB/HTTP)の待ちが主因です。設定調整だけでなく、処理設計(バッチ化・非同期化・DLQ)まで含めて対策します。
スケールアウトは万能ではありません。コンシューマ数はパーティション数を超えても並列度は増えません。スループットのボトルネックが下流 I/O の場合、単純な並列化は効果が薄く、キューイングやキャッシュ、バルク API 化が有効です。
試験では、ラグの定義、コミットと現在位置の違い、スケールの限界(パーティション数制約)、オフセット管理、リバランス関連設定が頻出です。CLI の出力解釈問題や、実装に応じた設定の優先度判断も問われます。
エンドツーエンド遅延(生成から処理完了までの時間)はラグと同義ではありません。ラグが小さくても、処理内部の待ちや外部 I/O で実時間遅延が大きいケースがあります。
CCDAK / CCAAK
問題 1
Kafka 環境で Consumer Lag のアラートを設計しています。kafka-consumer-groups.sh の LAG を基準にしつつ偽陽性を減らしたい場合、最も適切な組み合わせはどれか。
正解: A
kafka-consumer-groups.sh の LAG は Committed 基準で確定処理の遅れを示すため、量×時間(for 付き)で持続性を見つつ、records-consumed-rate の低下と組み合わせると偽陽性を抑えられる。records-lag-max 単体の即時通知(B)はスパイクに弱い。プロデューサレートのみ(C)や E2E 遅延のみ(D)では、消費側の詰まりに直接対応できない。
Consumer Lag は 0 でないといけませんか?
常時 0 を目指す必要はありません。通常は流量の山谷に応じて一時的に蓄積し、消費レートが上回る時間帯に解消します。重要なのは「許容遅延内に解消する」ことで、Backlog Seconds や持続時間を考慮した SLO を設定します.
コンシューマを増やしてもラグが減りません。なぜですか?
並列度はパーティション数が上限です。既にコンシューマ数 ≥ パーティション数なら、追加しても並列処理は増えません。また、下流 I/O がボトルネックなら、コンシューマ増設よりもバッチ化や接続先のスケールが効果的です。
オートコミットを無効にしたら LAG が大きく見えます。問題ですか?
enable.auto.commit=false ではアプリ側のコミット頻度に依存します。コミットを遅らせる設計だと、実際には処理できていても LAG(Committed 基準)は大きく見えます。アラートは records-lag-max(現在位置)も併用し、コミット設計と整合する基準を選んでください。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Kafka Topic と Partition の基礎: 分散とスケーラビリティの要
CCDAK 対策と実務の両立を意識し、Topic/Partition/Replica/Consumer Group の役...
CCDAK 試験ガイド:出題範囲・配点・申込み・対策
Confluent Certified Developer for Apache Kafka (CCDAK) の出題範囲...
Confluent Certified Administrator (CCAAK) 対策: 出題範囲・配点の考え方・運用観点の要点
CCAAKに向けて、試験領域の押さえどころを運用目線で整理。プロダクションで通用する設定・監視・セキュリティの実践知を、...
Kafka の Replica と In-Sync Replicas を正しく設計する: 耐障害性と一貫性
レプリカとISRの仕組みを起点に、acks と min.insync.replicas、クリーン/アンクリーンリーダー選...
Kafka の Offset とコミット: ポジション管理と at-least-once の基礎
CCDAK 対策と実務の両立を意識して、Kafka コンシューマのオフセット管理とコミット戦略を整理。at-least-...