본문으로 바로가기

[Kafka] 카프카 Burrow 설치 (카프카 모니터링)

category Backend/Kafka 2022. 1. 29. 14:21

1. Go 설치

2. git 설치

  • OS에 맞게 yum이나 apt를 이용하여 git을 설치합니다.
[RedHat, CentOS]
# yum install git

# git --version
git version 1.8.3.1

[Ubuntu]
# apt install git

# git --version
git version 1.8.3.1

3. git clone

# git clone https://github.com/linkedin/Burrow.git
Cloning into 'Burrow'...
remote: Enumerating objects: 2422, done.
remote: Counting objects: 100% (180/180), done.
remote: Compressing objects: 100% (132/132), done.
remote: Total 2422 (delta 91), reused 98 (delta 48), pack-reused 2242
Receiving objects: 100% (2422/2422), 855.27 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1588/1588), done.

4. Build and Install

Go를 이용해 빌드하고 설치합니다.

[주요 명령어]

# go mod tidy

package 파일 안에 있는  go.mod 파일을 확인하여 필요 없는 의존성은 제거하고,

필요한 의존성은 추가합니다. (의존성 해결)

# go install

package 파일 안에 있는 main.go 파일을 확인하여 package를 컴파일하여 설치합니다.

1. 해당 디렉토리 접근 후 파일 확인
# cd Burrow/

# ll
합계 152
-rw-r--r--. 1 root root  9349  1월 25 15:33 CHANGELOG.md
-rw-r--r--. 1 root root   449  1월 25 15:33 Dockerfile
-rw-r--r--. 1 root root   171  1월 25 15:33 Dockerfile.gorelease
-rw-r--r--. 1 root root 11358  1월 25 15:33 LICENSE
-rw-r--r--. 1 root root   634  1월 25 15:33 Makefile
-rw-r--r--. 1 root root  1593  1월 25 15:33 NOTICE
-rw-r--r--. 1 root root  3694  1월 25 15:33 README.md
drwxr-xr-x. 2 root root   200  1월 25 15:53 config
drwxr-xr-x. 4 root root   166  1월 25 15:33 core
-rw-r--r--. 1 root root   598  1월 25 15:33 docker-compose.yml
drwxr-xr-x. 2 root root    25  1월 25 15:33 docker-config
-rw-r--r--. 1 root root  2988  1월 25 15:33 go.mod
-rw-r--r--. 1 root root 89982  1월 25 15:33 go.sum
-rw-r--r--. 1 root root  4336  1월 25 15:33 main.go
-rw-r--r--. 1 root root   655  1월 25 15:33 main_test.go

2. 의존성 문제 해결
# go mod tidy

3. 설치
go install

5. 설정

# vi Burrow/config/burrow.toml

[general]
pidfile="burrow.pid" 
stdout-logfile="burrow.out"

[logging]
filename="logs/burrow.log"
level="info"
maxsize=100
maxbackups=30
maxage=10
use-localtime=false
use-compression=true

[zookeeper]
servers=["localhost:2181"]
timeout=6
root-path="/burrow"

[client-profile.test]
client-id="burrow-test"
kafka-version="3.0.0"

[cluster.test]
class-name="kafka"
servers=["localhost:9092"]
client-profile="test"
topic-refresh=120
offset-refresh=30
groups-reaper-refresh=0

[consumer.test]
class-name="kafka"
cluster="test"
servers=["localhost:9092"]
client-profile="test"
group-denylist="^(console-consumer-|python-kafka-consumer-|quick-).*$"
group-allowlist=""

[httpserver.default]
address=":8000"

[storage.default]
class-name="inmemory"
workers=20
intervals=15
expire-group=604800
min-distance=1

6. 실행

[포그라운드 실행]
# $GOPATH/bin/Burrow --config-dir=/root/Burrow/config

[백그라운드 실행]
# nohup $GOPATH/bin/Burrow --config-dir=/root/Burrow/config 1> /dev/null 2>&1 &

[포트 확인]
# netstat -ntap | grep LISTEN | grep 8000 | grep -v grep
tcp6       0      0 :::8000                 :::*                    LISTEN      18082/Burrow

7. 확인

[jq 설치]

json 결과를 확인하기 쉽게 출력해주는 도구입니다. 필수는 아닙니다.

# yum install epel-release

# yum install jq

 

[CURL을 이용하여 테스트]

[카프카 상태 확인]
# curl -X GET localhost:8000/burrow/admin
GOOD

[정보 확인]
# curl -X GET localhost:8000/v3/kafka | jq
{
  "error": false,
  "message": "cluster list returned",
  "clusters": [
    "test"
  ],
  "request": {
    "url": "/v3/kafka",
    "host": "localhost.localdomain"
  }
}

[특정 클러스터 상세확인]
# curl -X GET localhost:8000/v3/kafka/test | jq
{
  "error": false,
  "message": "cluster module detail returned",
  "module": {
    "class-name": "kafka",
    "servers": [
      "localhost:9092"
    ],
    "client-profile": {
      "name": "test",
      "client-id": "burrow-test",
      "kafka-version": "3.0.0",
      "tls": null,
      "sasl": null
    },
    "topic-refresh": 120,
    "offset-refresh": 30
  },
  "request": {
    "url": "/v3/kafka/test",
    "host": "localhost.localdomain"
  }
}