728x90
이번에는 컨슈머 Lag을 모니터링 할 수 있는 환경을 셋팅 해보려고 한다.
Lag이란?
현재 컨슈머 그룹이 읽은 오프셋과 토픽의 마지막 오프셋간의 차이
그 중 첫번째로는 Kafka의 토픽에 대한 정보를 가져오는 burrow를 설치해야 한다.
Burrow 란?
카프카 버로우는 링크드인에서 공개한 오픈소스 컨슈머 랙 체크 툴이다. 버로우를 카프카 클러스터와 연동하면 REST API를 통해 컨슈머 그룹별 컨슈머 랙을 조회할 수 있다.
컨슈머 랙 모니터링
- burrow
→ Linkedin에서 오픈소스로 제공하는 컨슈머 랙 체크 툴
→ 버로우 실행 시 Kafka, Zookeeper정보를 통해 랙 정보 자체 수집
→ Kafka Consumer V0.9 이상부터는 offset 정보를 __consumer_offsets 토픽에 produce 한다고 한다. 즉, burrow는__consumer_offsets을 컨슈밍한다.https://dol9.tistory.com/272https://blog.voidmainvoid.net/243 - telegraf
→ 데이터의 수집 및 전달에 특화된 agent. configuration설정을 통해 burrow의 데이터를 ES에 넣는 역할 - elasticsearch
→ telegraf에서 burrow로 수집 된 데이터를 elasticsearch에 저장(색인) - grafana
→ 로그 시각화 도구로서 키바나와 비슷하다. 다양한 db source를 지원하며 설정이 간단하다.
위의 4가지 스펙이 컨슈머 랙 모니터링을 하기위한 기본 세트이며 한번 셋팅해 놓으면 모니터링만 하면 될 것으로 보인다.
셋팅 순서는
burrow → elasticsearch → telegraf → grafana 순서로 셋팅을 하면 된다.
설치 방법
burrow의 경우 Go언어로 만들어져서 Go가 설치가 되어있어야 한다.
[root@hostname burrow]# wget -c https://golang.org/dl/go1.14.4.linux-amd64.tar.gz
--2021-06-07 16:03:33-- https://golang.org/dl/go1.14.4.linux-amd64.tar.gz
Resolving golang.org (golang.org)... 34.64.4.49, 2404:f340:10:1801::2011
Connecting to golang.org (golang.org)|34.64.4.49|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz [following]
--2021-06-07 16:03:33-- https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
Resolving dl.google.com (dl.google.com)... 142.250.196.142, 2404:6800:4004:822::200e
Connecting to dl.google.com (dl.google.com)|142.250.196.142|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 123711003 (118M) [application/octet-stream]
Saving to: ‘go1.14.4.linux-amd64.tar.gz’
100%[===========================================================================>] 123,711,003 29.9MB/s in 4.1s
2021-06-07 16:03:38 (28.5 MB/s) - ‘go1.14.4.linux-amd64.tar.gz’ saved [123711003/123711003]
[root@hostname burrow]# ls
Burrow go1.14.4.linux-amd64.tar.gz
[root@hostname burrow]# mv go1.14.4.linux-amd64.tar.gz /usr/local/
[root@hostname burrow]# cd /usr/local
[root@hostname burrow]# tar xvf go1.14.4.linux-amd64.tar.gz
[root@hostname ~]# ls
[root@hostname ~]# vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/local/go/bin ## 추가
export PATH
#GO
export GOPATH=/burrow/go ## 추가
[root@hostname ~]# . .bash_profile
[root@hostname burrow]# mkdir -p /burrow/go
[root@hostname burrow]# go version ## 설치 확인
go version go1.14.4 linux/amd64
소스 다운로드
burrow의 경우 설치 파일이 따로 없고 git 소스를 다운 받아 빌드를 하여야 한다. 또는 docker로 띄울 수 있다.
여기서는 빌드 및 설치하는 방법으로 가이드를 작성한다.
[root@hostname burrow]# git clone https://github.com/linkedin/Burrow.git
Cloning into 'Burrow'...
remote: Enumerating objects: 2229, done.
remote: Total 2229 (delta 0), reused 0 (delta 0), pack-reused 2229
Receiving objects: 100% (2229/2229), 730.59 KiB | 808.00 KiB/s, done.
Resolving deltas: 100% (1486/1486), done.
[root@hostname burrow]# cd Burrow
[root@hostname Burrow]# go mod tidy
go: downloading go.uber.org/zap v1.16.0
go: downloading github.com/karrick/goswarm v1.10.0
go: downloading github.com/prometheus/client_golang v1.9.0
go: downloading github.com/samuel/go-zookeeper v0.0.0-20201211165307-7117e9ea2414
go: downloading github.com/Shopify/sarama v1.28.0
...
go: downloading github.com/frankban/quicktest v1.11.3
[root@hostname Burrow]# go install
[root@hostname Burrow]# ls ../go/
bin/ pkg/
[root@hostname Burrow]# ls ../go/bin/
Burrow
burrow.toml 설정
[general]
[logging]
filename="logs/burrow.log"
level="info"
[zookeeper]
servers=[ "localhost:2181" ]
timeout=6
root-path="/burrow"
[client-profile.local]
client-id="burrow-test"
kafka-version="2.7.0"
[cluster.local]
class-name="kafka"
servers=[ "localhost:9092" ]
client-profile="test"
topic-refresh=120
offset-refresh=30
[consumer.local]
class-name="kafka"
cluster="local"
servers=[ "localhost:9092" ]
client-profile="local"
group-denylist="^(console-consumer-|python-kafka-consumer-|quick-).*$"
group-allowlist=""
[consumer.local_zk]
class-name="kafka_zk"
cluster="local"
servers=[ "localhost:2181" ]
zookeeper-path="/kafka-cluster"
zookeeper-timeout=30
group-denylist="^(console-consumer-|python-kafka-consumer-|quick-).*$"
group-allowlist=""
[httpserver.default]
address=":8000"
burrow 시작
[root@hostname Burrow]# /burrow/go/bin/Burrow --config-dir=/burrow/Burrow/config
Reading configuration from /burrow/Burrow/config
[root@hostname Burrow]# ps -ef | grep burrow
root 3244 3049 18 15:14 pts/0 00:12:46 /burrow/go/bin/Burrow --config-dir=/burrow/Burrow/config
root 8403 3049 0 16:22 pts/0 00:00:00 grep --color=auto burrow
[root@hostname Burrow]#
동작 확인
http://IP:8000/burrow/admin 해당 URL에서 IP 부분만 burrow를 설치한 IP로 바꿔서 테스트 해보면
아래와 같이 GOOD이란 글자가 나오면 성공!
'Kafka' 카테고리의 다른 글
Consumer Lag - Grafana 셋팅 (0) | 2022.01.27 |
---|---|
Consumer Lag - telegraf 설정 (0) | 2022.01.27 |
Kafka Install 버전 설치 (0) | 2022.01.27 |
Spring Kafka로 토픽 구독 (0) | 2022.01.26 |
카프카 토픽명 규칙 (0) | 2022.01.26 |