개요
Kafka Cluster Manager (CMAK)는 Apache Kafka 클러스터를 관리하기 위한 웹 인터페이스 도구입니다. 이 도구는 이전에는 Kafka Manager라고 불렸으며, Kafka 클러스터의 모니터링, 관리, 설정, 토픽 관리 등을 할 수 있도록 도와줍니다.
CMAK은 Kafka 클러스터를 관리하기 쉽게 해주는 여러 기능을 제공합니다. 몇 가지 주요 기능은 다음과 같습니다.
1. 토픽 관리 : 새로운 토픽 생성, 토픽 설정 변경, 삭제 등을 할 수 있습니다.
2. 브로커 관리 : 브로커의 상태를 모니터링하고, 브로커들 간의 리더십(partition leader) 및 복제(replication) 상태를 확인할 수 있습니다.
3. 컨슈머 그룹 관리 : 컨슈머 그룹의 오프셋(offset) 상태, 컨슈머 그룹의 구성 등을 확인할 수 있습니다.
4. 토픽의 파티션(partition) 상태 확인 : 파티션의 리더 및 복제 상태, ISR(in-sync replicas) 목록 등을 확인할 수 있습니다.
CMAK 설치 방법
CMAK github 사이트에서 CMAK release 버전을 다운받습니다.
현재 3.0.0.6이 최신 버전이고 cmak-3.0.0.6.zip 파일을 다운로드 받으면 됩니다.
zip 파일을 원하는 경로에 압축을 푼 후 bin 폴더에서 아래의 명령어를 통해 cmak을 실행하니 아래와 같은 에러가 발생하였습니다.
.\cmak.bat
cmak 폴더의 경로가 길어서 발생하는 오류이고 cmak-3.0.0.6으로 되어 있는 폴더명을 cmak으로 변경 후 다시 .\cmak.bat 을 실행하니 이번에는 아래와 같은 다른 오류가 발생하였습니다.
2023-12-11 09:10:17,206 - [ERROR] - from org.apache.zookeeper.client.StaticHostProvider in kafka-manager-system-akka.actor.default-dispatcher-6-SendThread()
Unable to resolve address: kafka-manager-zookeeper/<unresolved>:2181
java.net.UnknownHostException: 알려진 호스트가 없습니다 (kafka-manager-zookeeper)
at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:933)
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1543)
at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:852)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1532)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1384)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1305)
at org.apache.zookeeper.client.StaticHostProvider$1.getAllByName(StaticHostProvider.java:92)
at org.apache.zookeeper.client.StaticHostProvider.resolve(StaticHostProvider.java:147)
at org.apache.zookeeper.client.StaticHostProvider.next(StaticHostProvider.java:375)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1137)
2023-12-11 09:10:17,208 - [WARN] - from org.apache.zookeeper.ClientCnxn in kafka-manager-system-akka.actor.default-dispatcher-6-SendThread(kafka-manager-zookeeper:2181)
Session 0x0 for server kafka-manager-zookeeper/<unresolved>:2181, unexpected error, closing socket connection and attempting reconnect
java.lang.IllegalArgumentException: Unable to canonicalize address kafka-manager-zookeeper/<unresolved>:2181 because it's not resolvable
at org.apache.zookeeper.SaslServerPrincipal.getServerPrincipal(SaslServerPrincipal.java:71)
at org.apache.zookeeper.SaslServerPrincipal.getServerPrincipal(SaslServerPrincipal.java:39)
at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1087)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1139)
2023-12-11 09:10:18,325 - [ERROR] - from org.apache.zookeeper.client.StaticHostProvider in kafka-manager-system-akka.actor.default-dispatcher-6-SendThread(kafka-manager-zookeeper:2181)
Unable to resolve address: kafka-manager-zookeeper/<unresolved>:2181
java.net.UnknownHostException: kafka-manager-zookeeper
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:801)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1532)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1384)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1305)
at org.apache.zookeeper.client.StaticHostProvider$1.getAllByName(StaticHostProvider.java:92)
at org.apache.zookeeper.client.StaticHostProvider.resolve(StaticHostProvider.java:147)
at org.apache.zookeeper.client.StaticHostProvider.next(StaticHostProvider.java:375)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1137)
zookeeper의 호스트를 찾을 수 없어서 오류가 발생했고 cmak\conf\application.conf 파일을 에디터로 열어서 zookeeper의 호스트 정보를 아래와 같이 수정해줍니다.
kafka-manager.zkhosts="localhost:2181"
cmak.zkhosts="localhost:2181"
#kafka-manager.zkhosts="kafka-manager-zookeeper:2181"
kafka-manager.zkhosts="localhost:2181"
kafka-manager.zkhosts=${?ZK_HOSTS}
#cmak.zkhosts="kafka-manager-zookeeper:2181"
cmak.zkhosts="localhost:2181"
cmak.zkhosts=${?ZK_HOSTS}
application.conf 파일을 수정 후 cmak을 다시 실행 해보면 정상적으로 실행이 됩니다.
cmak이 실행되었으니 localhost:9000 (9000 : cmak 기본 포트)으로 접속해보니 콘솔에 에러 로그가 쌓이고 웹사이트에서 css, js 에러가 발생했습니다.
저는 java version 이 현재 java17로 되어있는데 cmak은 java11 버전을 권장하기 때문에 다른 java 버전을 사용해서 발생하는 오류로 판단을 해서 java 11버전으로 cmak을 실행하게 변경했습니다.
jdk 다운로드 사이트에서 Windows용 jdk11을 다운받고 원하는 경로에 압축을 풀어줍니다.
cmak\bin\cmak.bat 파일을 에디터로 열어서 JAVA_HOME 경로를 다운받은 jdk11의 경로를 보도록 명시적으로 선언해주었습니다. rem은 bat 파일에서 주석을 의미합니다.
set "JAVA_HOME=D:\tools\Java\jdk-11"
cmak.bat 파일을 수정 후 cmak을 다시 실행 후 localhost:9000 으로 접속하면 css, js를 정상적으로 불러오는 것을 확인할 수 있습니다.
참고자료
https://server-engineer.tistory.com/759
https://oingdaddy.tistory.com/303
https://mightytedkim.tistory.com/138
'개발 > Kafka' 카테고리의 다른 글
[Apache Kafka] CMAK 웹사이트 (0) | 2023.12.11 |
---|---|
[Apache Kafka] 자주 사용하는 명령어 (0) | 2023.12.11 |
[Apache Kafka] connect, connector (0) | 2023.12.10 |
[Apache Kafka] topic 삭제 방법 (0) | 2023.12.10 |
[Apache Kafka] Spring boot에 Kafka 적용해보기 (0) | 2023.12.08 |