# 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 ๋ชจ๋ํฐ๋ง์ ๋์์ฃผ๋ ๋ ๋ฆฝ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
# ํน์ง
- ๋ฉํฐ ์นดํ์นด ํด๋ฌ์คํฐ ์ง์
- kafka๋ฅผ ์ด์ํ๋ ๋๋ถ๋ถ์ ๊ธฐ์ ์ 2๊ฐ ์ด์์ kafka cluster๋ฅผ ์ด์ํ๊ณ ์์.
- kafka cluster๊ฐ ์ฌ๋ฌ๊ฐ์ด๋๋ผ๋ Burrow Application 1๊ฐ๋ง ์คํํด์ ์ฐ๋ํ๋ค๋ฉด ์นดํ์นด ํด๋ฌ์คํฐ๋ค์ ๋ถ์ ์ปจ์๋จธ์ lag์ ๋ชจ๋ ๋ชจ๋ํฐ๋ง ํ ์ ์์.
Burrow Application
- Sliding window๋ฅผ ํตํ consumer์ status ํ์ธ.
- Sliding window๋ฅผ ํตํด์ consumer์ status๋ฅผ 'ERROR', 'WARNING', 'OK'๋ก ํํํ ์ ์๋๋ก ํจ.
- ๋ง์ฝ, ๋ฐ์ดํฐ ์์ด ์ผ์์ ์ผ๋ก ๋ง์์ง๋ฉด์ consumer offer์ด ์ฆ๊ฐ๋๊ณ ์์ผ๋ฉด 'WARNING'์ผ๋ก ์ ์ ๋จ.
- ๋ฐ์ดํฐ์ ์์ด ๋ง์์ง๊ณ ์๋๋ฐ consumer๊ฐ ๊ฐ์ ธ๊ฐ์ง ์์ผ๋ฉด 'ERROR'๋ก ์ ์ํ์ฌ ์ค์ ๋ก ์ปจ์๋จธ๊ฐ ๋ฌธ์ ๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ ์์
- ์ด๋ ๊ฒ status๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ๊ณผ์ ์ผ๋ก ์ด์์ ์ฐธ๊ณ ํ ์ ์์.
- HTTP api ์ ๊ณต.
- ์ด์ ๊ฐ์ ์ ๋ณด๋ค์ HTTP api๋ฅผ ํตํด ์กฐํํ ์ ์์.
- HTTP api๋ฅผ ์ด์ฉํ์ฌ response ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๊ณ์ดDB์ ๊ฐ์ ๊ณณ์ ์ ์ฅํ๋ application์ ๋ง๋ค์ด์ ํ์ฉํ ์ ๋ ์์.