+14

Tích hợp Elasticsearch và Kibana vào Docker-Compose

Giới thiệu

Elasticsearch là công cụ tìm kiếm và phân tích phân tán, RESTful mã nguồn mở, được xây dựng trên Apache Lucene. Kibana là một nền tảng phân tích hiển thị dữ liệu từ Elasticsearch một cách trực quan dễ sử dụng . Kibana cũng là một công cụ mã nguồn mở miễn phí, cho tất cả mọi người sử dụng. Kibana cung cấp các tính năng cho người dùng quản lý như biểu đồ cột, biểu đồ đường, biểu đồ tròn, biểu đồ nhiệt và nhiều loại chart khác nữa. Bài viết sau sẽ hướng dẫn tích hợp Elasticsearch và Kibana vào docker-compose

Nội dung

Để thực hiện kết nối 2 service trong docker trước tiên cần thiết lập một network chung cho 2 service đó mô hình như sau

Như hình để thực hiện kết nội cần tạo một network ES-NET bằng lệnh sau:

docker network create es-net --driver=bridge

Để kiểm tra network được tạo hay chưa chúng ta dùng lệnh :

docker network ls

Kết quả :

NETWORK ID NAME DRIVER SCOPE
acd9ccf2f539 bridge bridge local
f14ca1c8849e es-net bridge local
6840debcb248 host host local
f514cb30a663 none null local

Install and run Elastic search service

Trước tiên chúng ta cần thực hiện pull image Elasticsearch và chạy nó trên docker bằng lệnh sau


docker run -d \
--name es-container \
--net es-net \
-p 9200:9200 \
-e xpack.security.enabled=false \
-e discovery.type=single-node \
docker.elastic.co/elasticsearch/elasticsearch:7.11.0

--name chỉ định name của container là es-container và --net chỉ định network là es-net , -p xác định port 9200 được export, type node là single-node , version phiên bản 7.11.0

Install and run kibana service

Sau cùng chúng ta cần pull image kibana và thực hiện connect đến elastic bằng câu lệnh dưới.

docker run -d \
--name kb-container \
--net es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es-container:9200 \
docker.elastic.co/kibana/kibana:7.11.0

Tương tự lệnh trên sẽ thực hiện chạy docker với các thông số

--name tên container --net chỉ định network là es-net( trùng với network đã sử dụng ở elasticsearch) -p chỉ định port -e xác định container elactic search dùng để link đến. ở đây là http://es-container:920 với es-container là tên container

Sau khi thực hiện run Kibana và mở browser ở địa chỉ http://localhost:5601

Giao diện sẽ như hình

Shutting service

Nếu muốn shutdown elastic search hoặc kibana thực hiện lệnh sau :

docker container stop kb-container
docker container stop es-container

Nếu muốn xóa tất cả hẵn sử dụng lệnh

docker container prune

Tích hợp tất cả vào docker-compose

Chúng ta có thể tích hợp các câu lệnh trên vào docker compose bằng cách viết file docker-compose.yml như sau

version: "3.0"
services:
  elasticsearch:
    container_name: es-container
    image: docker.elastic.co/elasticsearch/elasticsearch:7.11.0
    environment:
      - xpack.security.enabled=false
      - "discovery.type=single-node"
    networks:
      - es-net
    ports:
      - 9200:9200
  kibana:
    container_name: kb-container
    image: docker.elastic.co/kibana/kibana:7.11.0
    environment:
      - ELASTICSEARCH_HOSTS=http://es-container:9200
    networks:
      - es-net
    depends_on:
      - elasticsearch
    ports:
      - 5601:5601
networks:
  es-net:
    driver: bridge

Khởi chạy docker-compose bằng lệnh

docker-compose up -d

trong đó -d sẽ thực khởi chạy docker bằng chế độ detact

Nếu muốn stop cả 2 service trên sử dụng lệnh

docker-compose down 

All Rights Reserved

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