+4

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é:

Ở 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 servicescontainer_namekafka-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

image.png

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é)

image.png

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é


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.