# Kafka Burrow

Kafka Burrow: Consumer Lag Monitoring Application

lag๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ ์‹ถ๋‹ค๋ฉด
๋ฐ์ดํ„ฐ๋ฅผ Elasticsearch(๋“ค์–ด๋ดค๋Š”๋ฐ ๋ชจ๋ฅด๋Š”๊ฑฐ)๋‚˜ influxDB(์•ˆ๋“ค์–ด๋ดค๊ณ  ๋ชจ๋ฅด๋Š”๊ฑฐ)์™€ ๊ฐ™์€ ์ €์žฅ์†Œ์— ๋„ฃ์€ ๋’ค
Grafana ๋Œ€์‹œ๋ณด๋“œ(์•ˆ๋“ค์–ด๋ดค๊ณ  ๋ชจ๋ฅด๋А๊ฑฐ)๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Œ.

consumer ๋‹จ์œ„์—์„œ lag์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š” ๊ฒƒ ์•„์ฃผ ์œ„ํ—˜ํ•˜๊ณ  ์šด์˜์š”์†Œ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๊ฐ.

  • ์ปจ์ˆ˜๋จธ ๋กœ์ง๋‹จ์—์„œ lag์„ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ ์ปจ์ˆ˜๋จธ ์ƒํƒœ์— ๋”›ํŽœ๋˜์‹œ๊ฐ€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ.
  • ์ถ”๊ฐ€์ ์œผ๋กœ ์ปจ์ˆ˜๋จธ๊ฐ€ ๊ฐœ๋ฐœ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ปจ์ˆ˜๋จธ์— lag์ •๋ณด๋ฅผ ํŠน์ • ์ €์žฅ์†Œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ง์„ ๊ฐœ๋ฐœํ•ด์•ผํ•จ.
  • ๋งŒ์•ฝ ์ปจ์ˆ˜๋จธ lag์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†๋Š” ์ปจ์ˆ˜๋จธ๋ผ๋ฉด lag์„ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์šด์˜์ด ๋งค์šฐ ๊นŒ๋‹ค๋กœ์›Œ์ง.
  • ๊ทธ๋ž˜์„œ linkedin์—์„œ๋Š” apache kafka์™€ ํ•จ๊ป˜ ์นดํ”„์นด์˜ ์ปจ์ˆ˜๋จธ lag์„ ํšจ๊ณผ์ €์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก Borrow๋ฅผ ์ œ๊ณต

# Burrow

์˜คํ”ˆ์†Œ์Šค๋กœ์„œ Golang์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ๊ณ  ํ˜„์žฌ ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์Œ.
[Burrow github repo] (opens new window)

Burrow๋Š” ์ปจ์ˆ˜๋จธ lag ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋„์™€์ฃผ๋Š” ๋…๋ฆฝ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

# ํŠน์ง•

  1. ๋ฉ€ํ‹ฐ ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ ์ง€์›
    • kafka๋ฅผ ์šด์˜ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—…์€ 2๊ฐœ ์ด์ƒ์˜ kafka cluster๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์Œ.
    • kafka cluster๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด๋”๋ผ๋„ Burrow Application 1๊ฐœ๋งŒ ์‹คํ–‰ํ•ด์„œ ์—ฐ๋™ํ•œ๋‹ค๋ฉด ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋“ค์— ๋ถ™์€ ์ปจ์Šˆ๋จธ์˜ lag์„ ๋ชจ๋‘ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Œ.
      Burrow Application
  2. Sliding window๋ฅผ ํ†ตํ•œ consumer์˜ status ํ™•์ธ.
    • Sliding window๋ฅผ ํ†ตํ•ด์„œ consumer์˜ status๋ฅผ 'ERROR', 'WARNING', 'OK'๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ.
    • ๋งŒ์•ฝ, ๋ฐ์ดํ„ฐ ์–‘์ด ์ผ์‹œ์ ์œผ๋กœ ๋งŽ์•„์ง€๋ฉด์„œ consumer offer์ด ์ฆ๊ฐ€๋˜๊ณ  ์žˆ์œผ๋ฉด 'WARNING'์œผ๋กœ ์ •์˜ ๋จ.
    • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ์•„์ง€๊ณ  ์žˆ๋Š”๋ฐ consumer๊ฐ€ ๊ฐ€์ ธ๊ฐ€์ง€ ์•Š์œผ๋ฉด 'ERROR'๋กœ ์ •์˜ํ•˜์—ฌ ์‹ค์ œ๋กœ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Œ
    • ์ด๋ ‡๊ฒŒ status๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํšจ๊ณผ์ ์œผ๋กœ ์šด์˜์— ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Œ.
  3. HTTP api ์ œ๊ณต.
    • ์ด์™€ ๊ฐ™์€ ์ •๋ณด๋“ค์„ HTTP api๋ฅผ ํ†ตํ•ด ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Œ.
    • HTTP api๋ฅผ ์ด์šฉํ•˜์—ฌ response ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ณ„์—ดDB์™€ ๊ฐ™์€ ๊ณณ์— ์ €์žฅํ•˜๋Š” application์„ ๋งŒ๋“ค์–ด์„œ ํ™œ์šฉํ•  ์ˆ˜ ๋„ ์žˆ์Œ.