UI for Apache Kafka is a free, open-source web UI
to monitor and manage Apache Kafka clusters.
Apache Kafka용 UI는 Apache Kafka 클러스터를 모니터링하고 관리하기 위한 무료 오픈 소스 웹 UI입니다.
대시보드를 사용하면 브로커, 주제, 파티션, consumer와 같은 Kafka 클러스터의 메트릭을 추적할 수 있습니다.
Apache Kafka용 UI는 Kafka 데이터를 시각화합니다. 로컬 또는 클라우드에서 실행할 수 있습니다.
특징
- 다중 클러스터 관리 — 모든 클러스터를 한 곳에서 모니터링 및 관리
- 메트릭 대시보드를 통한 성능 모니터링 — 대시보드로 주요 Kafka 메트릭 추적
- Kafka Broker 보기 — 주제 및 파티션 할당, 컨트롤러 상태 보기
- Kafka 주제 보기 — 파티션 수, 복제 상태 및 사용자 정의 구성 보기
- 소비자 그룹 보기 — 파티션별 고정 오프셋, 결합 및 파티션별 지연 보기
- 메시지 찾아보기 — JSON, 일반 텍스트 및 Avro 인코딩으로 메시지 찾아보기
- 동적 주제 구성 — 동적 구성으로 새 주제 생성 및 구성
- 구성 가능한 인증 — Github/Gitlab/Google OAuth 2.0(옵션)으로 설치 보안
시작하기
Apache Kafka용 UI를 실행하려면 사전 빌드된 Docker 이미지를 사용하거나 로컬에 빌드할 수 있습니다.
[ 수행환경 ]
- Microsoft Windows 10 Pro(10.0.19041 N/A 빌드 19041)
- WSL 2
- zookeeper : 3.6.3
- kafka broker :
Docker Image 실행
Apache Kafka용 UI의 공식 Docker 이미지는 다음 위치에서 호스팅됩니다.hub.docker.com/r/provectuslabs/kafka-ui.
백그라운드에서 Docker 컨테이너를 시작합니다.
docker run -p 8080:8080 \
-e KAFKA_CLUSTERS_0_NAME=local \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092 \
-d provectuslabs/kafka-ui:latest
http://localhost:8080.에서 웹 UI에 접속합니다.
환경 변수를 사용한 추가 구성은 환경 변수 참조합니다.- see environment variables
위와 같이 환경변수를 설정했을 때, 카프카 UI 접속 시 UI 화면은 보이지만, borker, topic 등에 대한 정보가 정상적으로 보이지 않았습니다. 그래서 2가지를 수정했는데, 수정 후 재기동 하니 정상적으로 보였습니다.
첫번 째 수정한 부분
카프카 브로커의 server.properties 에서 listeners 내용을 수정했습니다.
기존 0.0.0.0 에서 WSL 의 IP Address로 변경했습니다. 수정 후 카프카 브로커를 재기동합니다.
# listeners=PLAINTEXT://0.0.0.0:9092
## 아래처럼 WSL IP Address로 수정
listeners=PLAINTEXT://172.24.121.239:9092
두번 째 수정한 부분
카프카 UI 의 환경변수 중 KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=0.0.0.0:9092 부분을 KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=172.24.118.82:9093 로 수정했습니다. 여기서의 IP는 WSL 의 IP 이자 카프카 브로커에서 설정한 listeners IP와 동일한 IP 입니다.
수정 후 실행된 컨테이너가 있으면 중지시키고 카프카 UI 컨테이너를 실행합니다.
여기에서 8080 port가 사용 중이라고 나올 경우, 카프카 브로커에서 admin port를 사용할 가능성이 크므로 카프카 브로커의 admin port를 변경하던지, UI 컨테이너의 앞 쪽 port를 변경합니다. 필자의 경우에 port 충돌이 발생해서 카프카 브로커의 admin port를 disable 시켰습니다.
docker run -p 8080:8080 \
-e KAFKA_CLUSTERS_0_NAME=local \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=172.24.118.82:9092 \
-d provectuslabs/kafka-ui:latest
[ 참고 ]
필자의 경우에는 zookeeper cluster와도 연동되어 있고 podman을 사용해서 아래와 같이 수행했습니다. 주키퍼를 사용하는 경우 참고하면 될 것 같습니다.
podman run -p 8080:8080 --name ui_kafka --rm \
-e KAFKA_CLUSTERS_0_NAME=local \
-e KAFKA_CLUSTERS_0_ZOOKEEPER=172.24.118.82:2181,172.24.118.82:2182,172.24.118.82:2183 \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=172.24.118.82:9093,172.24.118.82:9094,172.24.118.82:9095 \
-d provectuslabs/kafka-ui:latest
위 사항을 수정한 후 UI for Apache Kafka 에 접속한 화면입니다. clusters, Brokers, Topics 등에 대한 정보가 잘 표시됩니다.
Topic을 하나 생성한 후 카프카 브로커에서 조회해 봅니다. topic 이름은 ui_topic 이름으로 설정하고 partitions은 3, Replication Factor도 3으로 설정한 후 생성했습니다.
카프카 브로커 명령어로 topic을 조회해 봅니다. 3대 모두 정상적으로 조회가 되고 있습니다.
$ bin/kafka-topics.sh --list --bootstrap-server 172.24.118.82:9092
ui_topic
$ bin/kafka-topics.sh --list --bootstrap-server 172.24.118.82:9093
ui_topic
$ bin/kafka-topics.sh --list --bootstrap-server 172.24.118.82:9094
ui_topic
카프카 브로커 명령어로 topic을 생성한 후 UI 화면으로 조회해 봅니다.
$ bin/kafka-topics.sh create --topic my-kafka-topic --bootstrap-server 172.24.118.82:9092 --part
itions 3 --replication-factor 3
Created topic my-kafka-topic.
아래 화면처럼 정상적으로 조회됩니다.
참고 : UI for Apache kafka 환경변수
yml 파일의 각 변수를 환경 변수로 설정할 수 있습니다. 예를 들어 환경 변수를 사용하여 name 매개변수를 설정하려면 KAFKA_CLUSTERS_2_NAME과 같이 작성할 수 있습니다.
SERVER_SERVLET_CONTEXT_PATH | URI basePath |
LOGGING_LEVEL_ROOT | Setting log level (trace, debug, info, warn, error). Default: info |
LOGGING_LEVEL_COM_PROVECTUS | Setting log level (trace, debug, info, warn, error). Default: debug |
SERVER_PORT | Port for the embedded server. Default: 8080 |
KAFKA_ADMIN-CLIENT-TIMEOUT | Kafka API timeout in ms. Default: 30000 |
KAFKA_CLUSTERS_0_NAME | Cluster name |
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS | Address where to connect |
KAFKA_CLUSTERS_0_ZOOKEEPER | Zookeeper service address |
KAFKA_CLUSTERS_0_KSQLDBSERVER | KSQL DB server address |
KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL | Security protocol to connect to the brokers. For SSL connection use "SSL", for plaintext connection don't set this environment variable |
KAFKA_CLUSTERS_0_SCHEMAREGISTRY | SchemaRegistry's address |
KAFKA_CLUSTERS_0_SCHEMAREGISTRYAUTH_USERNAME | SchemaRegistry's basic authentication username |
KAFKA_CLUSTERS_0_SCHEMAREGISTRYAUTH_PASSWORD | SchemaRegistry's basic authentication password |
KAFKA_CLUSTERS_0_SCHEMANAMETEMPLATE | How keys are saved to schemaRegistry |
KAFKA_CLUSTERS_0_JMXPORT | Open jmxPosrts of a broker |
KAFKA_CLUSTERS_0_READONLY | Enable read-only mode. Default: false |
KAFKA_CLUSTERS_0_DISABLELOGDIRSCOLLECTION | Disable collecting segments information. It should be true for confluent cloud. Default: false |
KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME | Given name for the Kafka Connect cluster |
KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS | Address of the Kafka Connect service endpoint |
KAFKA_CLUSTERS_0_JMXSSL | Enable SSL for JMX? true or false. For advanced setup, see kafka-ui-jmx-secured.yml |
KAFKA_CLUSTERS_0_JMXUSERNAME | Username for JMX authentication |
KAFKA_CLUSTERS_0_JMXPASSWORD | Password for JMX authentication |
'Apache Kafka' 카테고리의 다른 글
아파치 주키퍼란 (0) | 2022.01.08 |
---|---|
Confluent란 (0) | 2022.01.07 |
카프카 클러스터 모니터링 및 관리 툴 비교 (0) | 2022.01.07 |
카프카 프로듀서 파티셔너 종류 및 정리(2.5.0 기준) (0) | 2022.01.07 |
카프카 컨슈머 파티셔너 종류 및 정리(2.5.0 기준) (0) | 2022.01.07 |