Kafka consumer lagkafka-consumer-groupsconsumer group rebalanceCURRENT-OFFSET LOG-END-OFFSEToffset reset dry runKafka partition lag
환경Apache Kafka 4.3 CLI · 인증 설정 파일 0600 · Java 또는 기타 consumer client
분류서비스
검토일2026-09-04
진행5단계 · 조회 우선
SAFE OPERATING BOUNDARY
중단·복구 기준부터 확인하세요
STOP CONDITIONS
여기서는 멈추세요
bootstrap cluster·consumer group·topic·command config와 현재 운영 소유자를 확정하지 못했다면 변경하지 않습니다.
consumer group이 active이거나 current offset export·dry-run·중복·유실 승인 중 하나라도 없으면 offset reset을 실행하지 않습니다.
message payload·SASL secret·개인정보가 로그·명령·export에 포함되면 수집을 중단하고 최소 범위·0600·마스킹을 적용합니다.
ROLLBACK
복구 기준
consumer code·설정·instance 변경은 이전 정상 release로 되돌립니다. offset 변경은 0600으로 보관한 current-offsets.csv를 대상으로 group을 완전히 멈추고 dry-run 결과와 중복 처리 범위를 다시 승인한 뒤에만 복원합니다. 이미 처리한 외부 side effect와 건너뛴 message는 offset만 되돌려 복원되지 않으므로 idempotency key·재처리·업무 보정 절차가 필요합니다.
ESCALATION PACK
담당자에게 전달할 자료
partition별 CURRENT-OFFSET·LOG-END-OFFSET·LAG 시계열과 group state·member assignment
topic partition·leader·ISR, consumer version·config diff와 제한된 rebalance·commit 오류
처리율·poll latency·GC·downstream latency, offset dry-run/export checksum과 변경 전후 업무 건수
2026년 9월 4일 기준 공식 upstream 문서와 현재 지원 명령을 대조했습니다. 먼저 최소 범위 읽기 전용 조회로 사실을 확인하고, 변경은 영향·백업·복구 경로와 담당자 승인을 확보한 대상에만 적용합니다. <...> 자리표시자는 승인된 리터럴 값으로 직접 치환하며 외부 입력으로 shell 명령을 조립하거나 eval하지 않습니다.
BEFORE YOU START
이런 증상에서 시작합니다
consumer group의 LAG가 지속 증가하고 처리 지연이 커짐
consumer member가 반복적으로 바뀌고 rebalance 로그가 증가함
일부 partition만 lag가 크고 나머지는 0에 가까움
offset out of range 또는 committed offset 없음 오류가 발생함
CHECK THE BRANCH
놓치기 쉬운 원인 분기
01
LOG-END-OFFSET 증가가 소비 처리율보다 빠른 경우
producer 유입 급증과 consumer의 정상 처리 용량 차이입니다. partition 수·member 수·처리 비용·downstream 한계를 함께 계산하고 무조건 instance만 늘리지 않습니다.
02
member·assignment가 반복해서 바뀌는 경우
처리 시간이 max.poll.interval.ms를 넘거나 heartbeat·network·GC pause·배포 불안정으로 rebalance가 반복될 수 있습니다. timeout만 늘려 처리 정지를 숨기지 않습니다.
03
특정 partition만 lag가 큰 경우
hot key·partition skew, 해당 leader broker·disk·network 문제 또는 poison message를 확인합니다. consumer 수가 partition 수를 넘으면 추가 instance는 처리량을 늘리지 못합니다.
04
offset reset을 검토하는 경우
group을 완전히 비활성화하고 현재 offset을 export한 뒤 dry-run 결과와 업무 중복·유실 범위를 승인해야 합니다. latest 이동은 미처리 메시지를 건너뛸 수 있습니다.
FOLLOW THE FLOW
순서대로 확인하기
1
조회시스템을 변경하지 않는 확인 단계
group lag·partition·active member 확인
인증정보는 0600 command config 파일로 전달하고 명령행에 password를 넣지 않습니다. 장애 시각의 offset과 active member를 같은 시점에 기록합니다.
poll loop 정지·GC pause·처리 시간 증가·commit 실패·downstream 포화를 lag 증가 시각과 비교합니다. rebalance 횟수만으로 원인을 단정하지 않습니다.
다음 판단
consumer 설정과 partition·instance·업무 idempotency 경계를 검토합니다.
4
주의서버 부하나 권한을 고려할 단계
설정·배포·offset 변경 전 안전성 검토
group.id, subscription, assignor, poll·session timeout, auto commit, instance 수를 source control에서 검토합니다. offset reset은 group 비활성·export·dry-run·업무 승인 없이는 금지합니다.
systemctl show <CONSUMER_SERVICE>.service -p NRestarts -p ExecMainStatus
curl -fsS <APPROVED_CONSUMER_HEALTH_URL>
결과 읽기
lag 증가율이 음수로 전환되고 rebalance·commit error가 안정화되며 downstream과 업무 처리 정확성이 유지돼야 합니다. 단순 lag 0만으로 성공을 판단하지 않습니다.
다음 판단
코드·설정은 이전 release로 되돌립니다. offset은 0600 current-offsets.csv를 from-file로 dry-run하고 group inactive·업무 승인 뒤에만 복원하며, 이미 처리·건너뛴 message는 자동으로 원복되지 않으므로 idempotency와 보정 작업을 적용합니다.