Trong bài viết này, chúng ta sẽ tìm hiểu cách triển khai Elasticsearch và Kibana bằng Docker Compose. Đây là hai thành phần chính trong hệ sinh thái ELK Stack (Elasticsearch, Logstash, Kibana), giúp bạn tìm kiếm, phân tích và trực quan hóa dữ liệu một cách hiệu quả. Dưới đây là chi tiết cấu hình và cách thức hoạt động của từng thành phần.
1. Elasticsearch
a. Cấu Hình Cơ Bản
Elasticsearch được cấu hình để chạy trong một container Docker với các thông số sau:
-
Image: Sử dụng image chính thức của Elasticsearch phiên bản
8.17.2
. -
Chế độ single-node: Được kích hoạt thông qua biến môi trường
discovery.type=single-node
. -
Bảo mật: Tính năng bảo mật X-Pack được bật (
xpack.security.enabled=true
), và mật khẩu cho userelastic
được đặt làYVG6PKplG6ugGOw
. -
Mạng: Elasticsearch lắng nghe trên tất cả các giao diện mạng (
network.host=0.0.0.0
). -
Bộ nhớ JVM: Được cấu hình với
-Xms1g
(bộ nhớ ban đầu) và-Xmx1g
(bộ nhớ tối đa).
b. Ports Và Volumes
-
Ports: Cổng
9200
(HTTP) và9300
(giao tiếp nội bộ) được ánh xạ từ container ra host. -
Volumes: Dữ liệu Elasticsearch được lưu trữ trong volume
elasticsearch-data
.
c. Healthcheck
Healthcheck được thiết lập để kiểm tra trạng thái của Elasticsearch bằng cách gọi API /_cluster/health
với user elastic
. Nếu API không phản hồi, container sẽ được khởi động lại.
2. Kibana
a. Cấu Hình Cơ Bản
Kibana được cấu hình để kết nối với Elasticsearch và chạy trong một container Docker với các thông số sau:
-
Image: Sử dụng image chính thức của Kibana phiên bản
8.17.2
. -
Kết nối Elasticsearch: Địa chỉ Elasticsearch được đặt là
http://elasticsearch:9200
. -
Xác thực: Kibana sử dụng user
kibana_user
với mật khẩuYVG6PKplG6ugGOw
để kết nối với Elasticsearch.
b. Ports Và Networks
-
Ports: Cổng
5601
được ánh xạ từ container ra host để truy cập giao diện Kibana. -
Networks: Kibana được kết nối với mạng
elk-network
.
c. Phụ Thuộc Vào Elasticsearch
Kibana chỉ khởi động sau khi Elasticsearch đã sẵn sàng, đảm bảo rằng Kibana có thể kết nối thành công với Elasticsearch.
3. Volume Và Network
a. Volume
-
elasticsearch-data: Volume này được sử dụng để lưu trữ dữ liệu Elasticsearch, đảm bảo dữ liệu không bị mất khi container bị xóa.
b. Network
-
elk-network: Mạng
bridge
này được tạo để kết nối các dịch vụ Elasticsearch và Kibana.
4. Cách Sử Dụng
a. Khởi Chạy Dịch Vụ
Để khởi động Elasticsearch và Kibana, chạy lệnh sau:
b. Tạo Người Dùng Kibana (Nếu Cần)
Nếu bạn muốn sử dụng một người dùng riêng cho Kibana, bạn có thể tạo người dùng bằng lệnh:
c. Tạo Token (Nếu Dùng Token)
Để sử dụng token thay vì mật khẩu, bạn có thể tạo token bằng lệnh:
5. Xử Lý Lỗi
-
Nếu gặp lỗi, bạn có thể kiểm tra logs của container bằng lệnh:
-
Để khởi động lại Kibana:
Toàn Bộ Nội Dung File Docker Compose
Dưới đây là toàn bộ nội dung của file docker-compose-els.yml
:
Kết Luận
Với cấu hình Docker Compose này, bạn có thể dễ dàng triển khai Elasticsearch và Kibana để phục vụ các nhu cầu tìm kiếm, phân tích và trực quan hóa dữ liệu. Hãy tùy chỉnh và mở rộng cấu hình này để phù hợp với yêu cầu cụ thể của dự án của bạn!