본문 바로가기

빅데이터/Kafka

Burrow - kafka consumer의 지연(lag)을 모니터링할 수 있는 효과적인 opensource tool

Burrow

github : https://github.com/linkedin/Burrow

 

Burrow는 Kafka를 개발한 Linkedin에서 만든 consumer lag monitoring tool이며, opensource로 운영되고 있다. 각 consumer는 특정 topic에 대해 고유의 groupId를 가지고 consuming을 하는데, consume이 잘 되고 있는지 모니터링이 필요하다.

Burrow가 나오게된 배경

기존 Kafka client의 consumer의 metrics() method를 사용하여 lag metric(records-lag-max)을 기록할수 있지만, 이는 가장 뒤처진 파티션의 현재 지연을 보여주므로 다른 파티션에서의 정상작동을 잘 감지하기가 어렵다. 또한, consumer자체가 정상작동함을 가정해야한다.(컨슈머가 멈추면 lag감지 불가) 그러므로 외부 지연 모니터링을 사용해야하는데 그 중 하나가 Linkedin의 Burrow이다.

 

https://engineering.linkedin.com/apache-kafka/burrow-kafka-consumer-monitoring-reinvented

위 4개의 consumer는 개별의 topic에 대해 따로 consume하고 있는 정상적인 consumer에 대한 그래프이다.

 

각 consumer에 대해 분석해보자.

- Consumer A : lag이 지속적으로 떨어지고 있음으로 보아 consume이 잘되고 있음

- Consumer B : lag이 일시적으로 500까지 튀긴 했으나 금방 복구되었음

- Consumer C : lag이 일정함. 

- Consumer D : 문제가 있어보이지만 2번의 lag하강(복구)가 됨을 보아 엄청난 양의 트래픽이 들어오지만 consumer가 잘 consume하고 있음.

 

상기 그래프에서 lag threshold value가 250이라면 실제로 consume을 잘 하고 있는데도 불구하고 B와 D가 이상이 있다고 감지될 것이다. 사실 모두 정상적인 consumer 동작인데도 불구하고 말이다!!

Kafka consumer의 MaxLag 숫자 그 자체로서 장애/비장애를 구별할 수는 없다.

Burrow의 Architecture

Burrow를 통해 consumer status를 모니터링하기 위한 가장 최적의 방법을 제공한다. 

 

Kafka consumer모니터링을 위한 burrow architecture

Burrow는 아래와 같은 모듈로 이루어져 있다.

  • Clusters : 모든 파티션에 대해 주기적으로 항목목록, offset을 가져오는 kafka client를 실행
  • Consumers : Kafka(혹은 zookeeper)로 부터 consumer group의 정보를 가져온다.
  • Storage : Burrow의 모든 information을 저장
  • Notifier : 일정기준이 넘어설때 email, http 등을 통해 notify가능.
  • HTTP server : cluster과 consumer정보를 http request를 통해 제공.
  • Evaluator : Consumer group의 status에 대해 평가한다. 평가기준은 consumer lag evaluation rules를 따른다.

관련 포스팅

Consumer lag evaluation rule이란? : https://blog.voidmainvoid.net/244

 

Burrow(Kafka consumer monitoring)에서 consumer의 lag을 정의하는(평가하는) 방법

이전 포스팅(https://blog.voidmainvoid.net/243)에서 Burrow가 나오게된 배경에 대해 알아보았다. 이 포스팅에서는 burrow가 lag이라고 판단하는 근거와 규칙에 대해 예제와 함께 확인해본다. Burrow - kafka con..

blog.voidmainvoid.net

Burrow의 http endpoint list : https://blog.voidmainvoid.net/245

 

Kafka burrow http endpoint 정리

이전 포스팅에서 Kafka burrow의 정보와 lag을 평가하는 방법에 대해 알아보았다. Burrow 개요 및 설명 : https://blog.voidmainvoid.net/243 Burrow에서 lag을 정의(평가)하는 방법 : https://blog.voidmainvoid...

blog.voidmainvoid.net