데이터 엔지니어( 실습 정리 )/kafka

(4) - kafka consumer Lag, Burrow

세용용용용 2024. 7. 16. 22:41

1. kafka consumer Lag : producer offset 과 consumer offset의 차이

  • 즉, 컨슈머가 주어진 파티션에서 처리해야할 데이터가 얼마나 남았는지 나타내는 지표, 이를 통해 컨슈머 성능 모니터링 지표로 사용가능!!
  • 프로듀서와 컨슈머 오프셋은 파티션을 기준으로 한 값으로 여기서 파티션이 여러개 있으면 lag도 여러개 존재!!!
  • 이처럼 컨슈머 그룹에서 lag가 여러개 존재시 가장 높은 숫자를 갖는 lag를 records-lag-max

 

 

2. kafka lag 모니터링

- 카프카 운영에 중요한 모니터링 지표

- 토픽을 통해 연결되있는 프로듀서와 컨슈머 상태를 유추할수 있다

 

lag이 증가하는 이유
  • 컨슈머 처리 속도 저하
  • 데이터 폭주 ( 프로듀서가 갑자기 많은 양의 데이터 보내는 경우 )
  • 네트워크 지연
  • 브로커 성능 문제
  • 파티션 리벨런싱 : 리벨런싱 할떄 컨슈머가 데이터를 소비하지 못하는 경우가 있음

이외에 다양한 이유로 lag가 증가 할수있다!!!

 

하지만 컨슈머 단위에서 lag을 모니터링 하는 것은 매우 위험...
  • lag 정보 수집을 컨슈머에 의존하게 되고
  • 컨슈머 마다 lag 수집 로직을 넣어야됨
  • 어떠한 이유로 lag 수집하기 힘든 컨슈머는 운영이 까다로움..

즉, 카프카 lag를 모니터링 위해 외부 애플리케이션 이용해야함!!!

 

 

3. Burrow : Kafka 컨슈머 클러스터의 상태와 Lag을 모니터링하기 위한 도구

- Burrow는 Kafka 클러스터와 관련된 다양한 메트릭을 수집하여 컨슈머 그룹의 상태를 평가하고, 이를 통해 컨슈머 Lag과 성능 문제를 감지할 수 있다!!!!

 

burrow 주요 기능
  • 컨슈머 그룹 모니터링 : 각 컨슈머 그룹에 대한 lag를 모니터링, 각 컨슈머 그룹 파티션 별로 (현재,끝) 오프셋, lag를 수집해 상태 평가
  • 알림 기능 : 특정 임계값 초과하는 lag나 컨슈머 그룹 비정상 상태 감지시 알림 설정
  • 상태 평가 : 슬라이딩 윈도우를 통해 컨슈머 상태 확인 및 평가
    1. OK - 정상~ good!!!
    2. WARNING - 데이터 양이 급격히 많이지면
    3. Error - 데이터양이 많이지는데 컨슈머가 데이터 소비를 안하면.. 뭐지 주것나...
  • 확장성 : 멀티 카프카 클러스터 지원
  • http api 제공