이름이 "Observability"지만 브로커 운영 모니터링(CCAAK 영역)이 아니라
내가 만든 클라이언트 애플리케이션을 어떻게 들여다보는가가 초점입니다.
어떤 메트릭 이름을 봐야 하는지, lag을 어떻게 재는지,
실패한 태스크의 로그를 어디서 찾는지 — 이 세 가지가 출제의 중심입니다.
이 도메인의 학습 목표
프로듀서·컨슈머의 핵심 메트릭 이름과 의미를 말할 수 있습니다.
consumer lag을 재는 세 가지 방법과 각각의 함정을 설명할 수 있습니다.
리밸런스와 poll 지연을 메트릭으로 사전에 감지하는 방법을 알 수 있습니다.
Connect 워커·태스크가 실패했을 때 로그를 어디서 찾아야 하는지 판단할 수 있습니다.
JMX → 수집기 → 대시보드 파이프라인의 큰 그림을 설명할 수 있습니다.
이 도메인이 묻는 것
출제 형태는 대체로 "이 증상일 때 무엇을 먼저 보는가"입니다.
메트릭 이름을 정확히 아는지 묻는 matching 문항도 흔합니다.
브로커 쪽 메트릭도 일부 나오지만, 개발자가 자기 애플리케이션을 진단하기 위해 보는 범위에 한정됩니다.
참고 챕터는 11장 운영 기초의 모니터링 절과
5장 Consumer 심화입니다.
핵심 개념 (1) 클라이언트 메트릭
Kafka 클라이언트는 JMX로 메트릭을 노출합니다.
MBean 이름은 kafka.producer:type=producer-metrics,client-id={id} 형태이고,
같은 값을 KafkaProducer.metrics() / KafkaConsumer.metrics()로 코드에서도 읽을 수 있습니다.
client.id를 지정하지 않으면 자동 생성된 이름이 붙어 대시보드에서 구분이 안 됩니다.
서비스명 기반으로 반드시 지정하세요.
프로듀서 핵심 메트릭 (kafka.producer:type=producer-metrics)
메트릭
의미
이상 신호
record-send-rate
초당 전송 레코드 수
갑자기 0 → 프로듀서 정지 또는 버퍼 고갈
record-error-rate
초당 전송 실패 레코드 수
0이 아니면 즉시 조사. 알림 1순위
record-retry-rate
초당 재시도 수
상승 → 리더 이동, ISR 부족, 네트워크 불안정
record-queue-time-avg
배치가 accumulator에서 대기한 평균 시간
linger.ms보다 크게 상승 → 전송 병목
request-latency-avg
브로커 응답 평균 지연
상승 → 브로커 부하 또는 acks=all + 느린 팔로워
batch-size-avg
평균 배치 크기
batch.size에 한참 못 미치면 linger.ms 조정 여지
records-per-request-avg
요청당 평균 레코드 수
1에 가까우면 배치가 전혀 안 되는 상태
compression-rate-avg
평균 압축률
압축 효과 확인용
컨슈머 핵심 메트릭 — MBean type이 셋으로 나뉩니다
MBean type
메트릭
의미
consumer-fetch-manager-metrics
records-lag-max
할당된 파티션 중 최대 lag. lag 알림의 기본 지표
records-lag-avg
평균 lag
records-consumed-rate
초당 소비 레코드 수
bytes-consumed-rate
초당 소비 바이트
fetch-latency-avg
fetch 요청 평균 지연
consumer-metrics
time-between-poll-avg · time-between-poll-max
poll 간격.max.poll.interval.ms에 가까워지면 위험
last-poll-seconds-ago
마지막 poll 이후 경과 초. 멈춘 컨슈머 감지
poll-idle-ratio-avg
poll에서 대기한 시간 비율. 낮으면 처리에 시간을 다 쓰고 있음
consumer-coordinator-metrics
assigned-partitions
현재 할당된 파티션 수. 0이면 아무것도 안 읽고 있음
rebalance-rate-per-hour
시간당 리밸런스 횟수
failed-rebalance-rate-per-hour
실패한 리밸런스. 0이 아니면 조사
rebalance-latency-avg
리밸런스 평균 소요 시간
last-rebalance-seconds-ago
마지막 리밸런스 이후 경과 초
commit-rate · commit-latency-avg
커밋 빈도와 지연
핵심 개념 (2) consumer lag 측정 3가지 방법
lag = high watermark − committed offset입니다.
LEO에서 빼는 것이 아닙니다(LEO와 high watermark 사이는 아직 복제가 끝나지 않아 컨슈머가 읽을 수 없는 구간입니다).
재는 방법이 세 가지이고, 각각 다른 것을 보여 줍니다.
Streams는 내부적으로 컨슈머·프로듀서를 쓰므로
위의 클라이언트 메트릭도 함께 노출됩니다.
Streams의 lag은 결국 내부 컨슈머의 records-lag-max이며,
kafka-consumer-groups --group {application.id}로도 볼 수 있습니다.
14:02 컨슈머 파드 3개 중 3개가 OOMKilled
14:03 대시보드의 records-lag-max 패널이 "No data"
14:03 lag 알림 규칙: records-lag-max > 100000 → 발동 안 함
15:40 하위 DB에 데이터가 없다는 제보로 인지