Modified Burrow by SPITHA

Victor Park
SPITHA Blog
Published in
5 min readFeb 19, 2024

SPITHA는 Apache Kafka의 관리, 운영, 모니터링 솔루션인 Felice를 개발하고 있어요. Felice는 Kafka의 Consumer Lag를 모니터링할 때 Burrow를 활용합니다. 이번 포스팅에서는 Burrow가 무엇이며 왜 필요한지, 그리고 왜 SPITHA에서 Modify하여 활용하는지에 대한 정보를 알려드릴게요.

General

Kafka를 운영환경에서 활용하려면 다양한 메트릭들을 모니터링할 필요가 있어요. 다양한 메트릭들이 서로 각자의 중요성을 가지고 있지만, Kafka에서 메시지를 가져가는 Consumer가 잘 일하고 있는 지를 확인하는 Consumer Lag의 모니터링은 특히 그 중요도가 높아요.

만약 Consumer Lag이 지속적으로 증가하는 상황이라면, Consumer의 데이터 처리량이 낮은 상태라는 것을 의미하기 때문이에요. 사용자가 지속적으로 Consumer Lag를 모니터링 하는 것은 Consumer의 이슈를 파악하고, 이를 해결할 수 있는 실마리를 얻어 조치하는 근간이 되어요.

Burrow?

https://github.com/linkedin/Burrow
linkedin/Burrow: Kafka Consumer Lag Checking (github.com)

Burrow는 링크드인에서 개발한 오픈소스 소프트웨어에요. Kafka ecosystem 안에 있으며 Consumer Lag의 실시간 모니터링을 위해 사용됩니다.

Consumer Lag를 별도의 방법으로 모니터링할 수도 있지만, Burrow가 널리 쓰이는 이유는 아래와 같아요.(Burrow Github)

  • NO THRESHOLDS! Groups are evaluated over a sliding window.
  • Multiple Kafka Cluster support
  • Automatically monitors all consumers using Kafka-committed offsets
  • Configurable support for Zookeeper-committed offsets
  • Configurable support for Storm-committed offsets
  • HTTP endpoint for consumer group status, as well as broker and consumer information
  • Configurable emailer for sending alerts for specific groups
  • Configurable HTTP client for sending alerts to another system for all groups

크게 세 가지의 이유로 정리할 수 있어요.

Sliding window 기반 그룹 평가: Sliding window 방식을 통해서 Consumer의 상태를 평가합니다. Threshold가 없다는 장점이 있어요.

Multicluster 지원: 여러 개의 Kafka 클러스터를 활용 중이더라도 하나의 Burrow를 연동하여 모든 Consumer Lag를 모니터링 할 수 있어요.

HTTP API: Burrow가 수집한 정보들을 HTTP API를 통해 활용할 수 있어요.

Burrow, modified by SPITHA

Felice는 Burrow를 통해 Consumer Lag의 정보를 수집해서 사용자가 모니터링할 수 있게 해요. Felice는 기업용 Kafka 도구이기 때문에 엔터프라이즈 운영 환경에서 Burrow가 활용되려면 Burrow가 가지고 있었던 몇 가지 불편한 점이 수정되어야 했어요.

Modification

  1. Remove ZooKeeper: Burrow는 ZooKeeper에 의존성이 있어요. Burrow를 활용하기 위해서는 ZooKeeper 또한 활용해야 한다는 의미에요. SPITHA에서는 편의성을 올리고 복잡성을 줄이기 위해 ZooKeeper가 없이 동작하는 Burrow가 필요했어요. 따라서 ZooKeeper 의존성이 더 이상 필요치 않도록 Modification을 했어요.
    SPITHA에서 Modification한 Burrow는 ZooKeeper가 필요치 않기 때문에 Kafka의 KRaft mode에서도 활용이 가능하다는 추가적인 장점도 가지고 있어요.
  2. 인증 메커니즘 추가: Burrow가 기본적으로 지원하는 인증 메커니즘 이외에도 엔터프라이즈 환경에 대응되는 다양한 인증 메커니즘이 필요했어요. 따라서 SPITHA에서 아래 SASL메커니즘을 추가하였어요.
  • 지원 인증 메커니즘
    -
    PLAIN
    - SCRAM
    - OAUTHBEARER
    - GSSAPI

SPITHA에서 Modification한 Burrow는 오픈소스입니다. SPITHA Github에서 자유로이 활용할 수 있어요. 아래 SPITHA의 Github링크에서 더 많은 정보를 확인해보세요.

https://github.com/spithainc/Burrow-modified
https://github.com/spithainc/Burrow-modified

--

--