JUST WRITE

UI로 Kafka 관리하기 본문

MLOps/Kafka

UI로 Kafka 관리하기

천재보단범재 2023. 3. 16. 17:25

 

UI로 Kafka 관리하기

CMAK 설치

Kafka Cluster를 구축하고 나서 Kafka Broker를 컨트롤하려면 기본적으로 command로 컨트롤합니다.

Kafka Bin 폴더 아래에 다양한 script를 제공해 줍니다.

$ ll ~/kafka/bin

-rwxr-xr-x 1 kafka kafka 1.4K Dec 21 21:14 connect-distributed.sh
-rwxr-xr-x 1 kafka kafka 1.4K Dec 21 21:14 connect-mirror-maker.sh
-rwxr-xr-x 1 kafka kafka 1.4K Dec 21 21:14 connect-standalone.sh
-rwxr-xr-x 1 kafka kafka  861 Dec 21 21:14 kafka-acls.sh
-rwxr-xr-x 1 kafka kafka  873 Dec 21 21:14 kafka-broker-api-versions.sh
-rwxr-xr-x 1 kafka kafka  860 Dec 21 21:14 kafka-cluster.sh
-rwxr-xr-x 1 kafka kafka  864 Dec 21 21:14 kafka-configs.sh
-rwxr-xr-x 1 kafka kafka  945 Dec 21 21:14 kafka-console-consumer.sh
-rwxr-xr-x 1 kafka kafka  944 Dec 21 21:14 kafka-console-producer.sh
-rwxr-xr-x 1 kafka kafka  871 Dec 21 21:14 kafka-consumer-groups.sh
-rwxr-xr-x 1 kafka kafka  948 Dec 21 21:14 kafka-consumer-perf-test.sh
-rwxr-xr-x 1 kafka kafka  871 Dec 21 21:14 kafka-delegation-tokens.sh
-rwxr-xr-x 1 kafka kafka  869 Dec 21 21:14 kafka-delete-records.sh
-rwxr-xr-x 1 kafka kafka  866 Dec 21 21:14 kafka-dump-log.sh
-rwxr-xr-x 1 kafka kafka  863 Dec 21 21:14 kafka-features.sh
-rwxr-xr-x 1 kafka kafka  865 Dec 21 21:14 kafka-get-offsets.sh
-rwxr-xr-x 1 kafka kafka  870 Dec 21 21:14 kafka-leader-election.sh
-rwxr-xr-x 1 kafka kafka  863 Dec 21 21:14 kafka-log-dirs.sh
-rwxr-xr-x 1 kafka kafka  870 Dec 21 21:14 kafka-metadata-quorum.sh
-rwxr-xr-x 1 kafka kafka  873 Dec 21 21:14 kafka-metadata-shell.sh
-rwxr-xr-x 1 kafka kafka  862 Dec 21 21:14 kafka-mirror-maker.sh
-rwxr-xr-x 1 kafka kafka  959 Dec 21 21:14 kafka-producer-perf-test.sh
-rwxr-xr-x 1 kafka kafka  874 Dec 21 21:14 kafka-reassign-partitions.sh
-rwxr-xr-x 1 kafka kafka  874 Dec 21 21:14 kafka-replica-verification.sh
-rwxr-xr-x 1 kafka kafka  11K Dec 21 21:14 kafka-run-class.sh
-rwxr-xr-x 1 kafka kafka 1.5K Mar 16 07:42 kafka-server-start.sh
-rwxr-xr-x 1 kafka kafka 1.4K Dec 21 21:14 kafka-server-stop.sh
-rwxr-xr-x 1 kafka kafka  860 Dec 21 21:14 kafka-storage.sh
-rwxr-xr-x 1 kafka kafka  945 Dec 21 21:14 kafka-streams-application-reset.sh
-rwxr-xr-x 1 kafka kafka  863 Dec 21 21:14 kafka-topics.sh
-rwxr-xr-x 1 kafka kafka  879 Dec 21 21:14 kafka-transactions.sh
-rwxr-xr-x 1 kafka kafka  958 Dec 21 21:14 kafka-verifiable-consumer.sh
-rwxr-xr-x 1 kafka kafka  958 Dec 21 21:14 kafka-verifiable-producer.sh
-rwxr-xr-x 1 kafka kafka 1.7K Dec 21 21:14 trogdor.sh
drwxr-xr-x 2 kafka kafka 4.0K Dec 21 21:14 windows
-rwxr-xr-x 1 kafka kafka  867 Dec 21 21:14 zookeeper-security-migration.sh
-rwxr-xr-x 1 kafka kafka 1.4K Dec 21 21:14 zookeeper-server-start.sh
-rwxr-xr-x 1 kafka kafka 1.4K Dec 21 21:14 zookeeper-server-stop.sh
-rwxr-xr-x 1 kafka kafka 1019 Dec 21 21:14 zookeeper-shell.sh

command도 좋지만 UI로 컨트롤하면 더 편하게 할 수 있습니다.

그래서 추가적으로 설치를 하는 게 CMAK입니다.

What is CMAK?

Cluster Manager for Apache Kafka

yahoo에서 Kafka Manager로 OpenSource로 만들어졌다가 현재는 CMAK이란 명칭으로 변경되었습니다.

Kafka Cluster를 UI로 컨트롤할 수 있어서 Kafka 운영시 필수적으로 설치되고 있습니다.

아래와 같은 다양한 기능을 제공하고 있습니다.

  • Topic 생성/제거
  • Cluster 상태 확인 - Broker, Topic, Consumer, offset, replica, partition
  • Topic Configuration 변경
  • Topic Partition 추가
  • Kafka JMX Metrics polling
  • Partition Reassignment

CMAK 설치

CMAK은 Scala로 개발된 Tool이기 때문에 JAVA 설치가 필요합니다.

설치하려는 버전인 3.0.0.6JAVA 11 이상이 필요합니다.

JAVA 설치

이번 포스팅에서는 OpenJDK 11로 설치를 진행하였습니다.

$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
$ tar xzf openjdk-11.0.2_linux-x64_bin.tar.gz

# JAVA_HOME 세팅
$ vi ~/.bash_profile

...
export JAVA_HOME=$HOME/jdk-11.0.2

PATH=$PATH:$HOME/.local/bin:$HOME/bin:$JAVA_HOME/bin

export PATH

# 설치 확인
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

CMAK 설치

JAVA 설치가 완료되면 CMAK을 설치합니다.

CMAK Github에서 Release 된 것을 다운로드하여 설치합니다.

이번 포스팅에서는 3.0.0.6 버전으로 설치를 진행하였습니다.

$ https://github.com/yahoo/CMAK/releases/download/3.0.0.6/cmak-3.0.0.6.zip
$ unzip cmak-3.0.0.6.zip

CMAK은 Zookeeper를 활용하여 Kafka를 컨트롤합니다.

CMAK 설정값에서 Zookeeper 부분을 잘 입력해 줍니다.

$ cd cmak/conf
$ vi application.conf
...
...
...
kafka-manager.zkhosts="zkServer1:2181,zkServer2:2181,zkServer3:2181"
kafka-manager.zkhosts=${?ZK_HOSTS}
cmak.zkhosts="zkServer1:2181,zkServer2:2181,zkServer3:2181"
cmak.zkhosts=${?ZK_HOSTS}
...

해당 부분 수정이 끝나면 이제 CMAK을 시작합니다.

아래와 같이 start, stop script를 만들어서 CMAK을 Daemon 형태로 시작하였습니다.

start script

$ vi start.sh

#!/bin/bash

CMAK_HOME=$HOME/cmak

nohup $CMAK_HOME/bin/cmak -Dconfig.file=$CMAK_HOME/conf/application.conf -Dhttp.port=58080 2>&1 &

stop script

$ stop.sh

#!/bin/bash

CMAK_HOME=$HOME/cmak

CMAK_PID=$(cat $CMAK_HOME/RUNNING_PID)

kill $CMAK_PID

rm $CMAK_HOME/RUNNING_PID

start를 하면 58080 Port로 CMAK 시작됩니다.

$ netstat -ntlp | grep 58080
`(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::58080                :::*                    LISTEN      3064/java

CMAK Cluster 등록

Web Browser에서 CMAK을 띄운 Server의 58080 Port로 들어갑니다.

CMAK에서 Kafka Cluster를 설정합니다.

기본적으로 Cluster Name과 Zookeeper 정보를 입력합니다.

JMX 정보를 보려면 Enable JMX Polling을 체크해 줍니다.

하지만 그전에 Kafka Broker에서 JMX를 Export 해야 하는데 Kafka 시작 시 설정을 한 가지 해줘야 합니다.

kafka-server-start.sh를 수정하여 한 줄을 추가합니다.

$ vi ~/kafka/bin/kafka-server-start.sh

export JMX_PORT=9999 # 추가 부분

if [ $# -lt 1 ];
then
        echo "USAGE: $0 [-daemon] server.properties [--override property=value]*"
        exit 1
fi
base_dir=$(dirname $0

등록을 하면 이제 CMAK을 사용할 수 있습니다.

 

728x90
반응형

'MLOps > Kafka' 카테고리의 다른 글

Kafka야?!? 데이터 잘 처리하고 있니?!  (0) 2023.06.21
Kafka 재시작 후 UNKNOWN_TOPIC_ID 에러?!  (0) 2023.06.14
Kafka Broker Log 관리  (0) 2023.01.10
Ansible를 통한 Kafka 설치  (0) 2022.12.18
AWS EC2 Kafka 설치  (0) 2022.11.13
Comments