Kafka Fundamental - Bài 8: Kafka UI
Xin chào, lại là mình - Đức Phúc, anh chàng hơn 6 năm trong nghề vẫn nghèo technical nhưng thích viết Blog để chia sẻ kiến thức bản thân học được trong quá trình “cơm áo gạo tiền” đây. Các bạn có thể theo dõi mình thêm qua một số nền tảng bên dưới nhé:
- Linkedin: https://www.linkedin.com/in/phuc-ngo-728433346
- Viblo: https://viblo.asia/u/NHDPhucIT
- Patreon: https://www.patreon.com/felix_ngo
- Facebook: https://www.facebook.com/DucPhucIT
Ở bài trước, chúng ta đã tiến hành cài đặt và khởi động Kafka. Trước khi chuyển đến Kafka CLI, mình sẽ giới thiệu trước cho các bạn về Kafka UI nhé
Nếu bạn nào chỉ muốn thao tác với CLI, các bạn có thể bỏ qua bài này nha
1. Kafka UI là gì?
Kafka UI là một giao diện web giúp bạn dễ dàng quan sát và quản lý Apache Kafka mà không cần dùng dòng lệnh một cách khô khan. Nó có thể giúp chúng ta:
- Xem danh sách các topics
- Đọc và ghi messages vào topic
- Kiểm tra consumer groups, offsets,...
- Quản lý brokers, cluster info
- Theo dõi logs, partitions, replicas
và nhiều hơn nữa
2. Cài đặt Kafka UI
Okay, chờ gì nữa nào, chúng ta sẽ cài đặt Kafka UI qua Docker nhé
Nếu các bạn chưa có Docker, bạn có thể cài đặt Docker Desktop , rồi khởi động Docker lên nhé
Đầu tiên, chúng ta sẽ tạo 1 file docker-compose.yml
version: "3.8"
services:
kafka-ui-course:
image: provectuslabs/kafka-ui
container_name: kafka-ui-course
ports:
- "8082:8082"
restart: "always"
environment:
SERVER_PORT: 8082
KAFKA_CLUSTERS_0_NAME: "0FwADRY4TV29vfWouepIqA"
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: host.docker.internal:9092
Ở file này, mình đặt tên services
và container_name
là kafka-ui-course
. Thông thường, kafka UI sẽ tự động chạy ở port 8080
, tuy nhiên, mình muốn chạy ở port 8082
nên sẽ có thêm cấu hình: SERVER_PORT: 8082
Với KAFKA_CLUSTERS_0_NAME
bạn có thể đặt bất kì tên gì, ở đây mình dùng Broker ID ở bài trước để đặt tên luôn
Điểm đặc biệt ở file này, là KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS
. Mình đang để giá trị là host.docker.internal:9092
. Phần host.docker.internal
này là cách mà Docker trỏ đến localhost (0.0.0.0) của chúng ta. Vậy tại sao lại cần như vậy?
Lý do là vì chúng ta đang chạy Kafka trên Homebrew, tức là ngoài Docker. Vì vậy, chúng ta cần 1 kết nối giữa container kafka-ui-course
đến Kafka trên port 9092
của chúng ta nhé.
Cấu hình xong rồi, thì các bạn run lệnh sau để chạy container lên nha:
docker-compose up kafka-ui-course -d
Rồi, vậy là đã chạy được Container. Tiếp theo, chúng ta sẽ cần thay đổi 1 chút trong cấu hình Kafka, để nó chạy đúng host 0.0.0.0
nhé
Nhắc lại 1 chút, ở bài trước, để khởi động Kafka, chúng ta sẽ dùng lệnh sau cho MacOS chip Apple Silicon:
kafka-server-start /opt/homebrew/etc/kafka/kraft/server.properties
Lệnh trên nghĩa là Kafka sẽ đọc cấu hình ở file /opt/homebrew/etc/kafka/kraft/server.properties
để khởi chạy. Bây giờ, bạn có thể dùng bất kì editor nào để mở file này lên, và sửa 1 số dòng sau nhé
# Thêm 0.0.0.0 vào listeners
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
# Thêm host.docker.internal vaào advertised.listeners
advertised.listeners=PLAINTEXT://host.docker.internal:9092,CONTROLLER://host.docker.internal:9093
Okay vậy là xong, lưu lại file và khởi động lại Kafka nào:
kafka-server-start /opt/homebrew/etc/kafka/kraft/server.properties
Rồi, restart Kafka UI container 1 lần nữa cho chắc chắn nha:
docker restart kafka-ui-course
Bây giờ, các bạn truy cập vào localhost:8082
nha (Nếu chạy mặc định thì sẽ là localhost:8080
nhé)
Nice! Vậy là chúng ta đã có 1 giao diện trực quan để kết nối đến Kafka local rồi. Ở các bài tiếp theo, khi làm việc với CLI, mình cũng sẽ đính kèm cách chúng ta thực hiện trên Kafka UI luôn nhé.
Hẹn gặp lại các bạn ở bài tiếp theo
Một lần nữa, đừng quên connect với mình để cùng trao đổi nhé
- Linkedin: https://www.linkedin.com/in/phuc-ngo-728433346
- Viblo: https://viblo.asia/u/NHDPhucIT
- Patreon: https://www.patreon.com/felix_ngo
- Facebook: https://www.facebook.com/DucPhucIT
All Rights Reserved