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이다.
위 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를 모니터링하기 위한 가장 최적의 방법을 제공한다.
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의 http endpoint list : https://blog.voidmainvoid.net/245
'빅데이터 > Kafka' 카테고리의 다른 글
[confluent]Kafka에 대한 상식 퀴즈 14개 (0) | 2019.08.30 |
---|---|
Kafka burrow http endpoint 정리 (276) | 2019.08.02 |
Kafka Burrow에서 consumer의 lag을 정의하는(평가하는) 방법 - Consumer Lag Evaluation Rules (268) | 2019.08.02 |
KSQL - Streaming SQL for Apache Kafka 개요 - readme 설명 번역 (271) | 2019.07.07 |
Kafka broker와 java client의 버젼 하위호환성 정리 (399) | 2019.02.14 |
Apache Kafka에서 topic의 partition 개수 줄이는 방법? (274) | 2018.12.26 |