Docker Compose untuk Elasticsearch & Kibana: Persediaan & Konfigurasi

Dalam artikel ini, kami akan meneroka cara menggunakan  Elasticsearch  dan  Kibana menggunakan Docker Compose. Ini ialah dua komponen utama ELK Stack( Elasticsearch, Logstash, Kibana), membantu anda mencari, menganalisis dan menggambarkan data dengan berkesan. Di bawah ialah konfigurasi terperinci dan cara setiap komponen berfungsi.

1. Elasticsearch

a. Konfigurasi Asas

Elasticsearch dikonfigurasikan untuk dijalankan dalam bekas Docker dengan parameter berikut:

  • Imej: Imej  rasmi Elasticsearch, versi  8.17.2, digunakan.

  • Mod nod tunggal:  Didayakan melalui pembolehubah persekitaran  discovery.type=single-node.

  • Keselamatan:  Keselamatan X-Pack didayakan( xpack.security.enabled=true), dan kata laluan untuk  elastic  pengguna ditetapkan kepada  YVG6PKplG6ugGOw.

  • Rangkaian:  Elasticsearch mendengar pada semua antara muka rangkaian( network.host=0.0.0.0).

  • Memori JVM:  Dikonfigurasikan dengan  -Xms1g  (memori awal) dan  -Xmx1g  (memori maksimum).

b. Ports dan Volumes

  • Ports:  Port  9200  (HTTP) dan  9300  (komunikasi dalaman) dipetakan daripada bekas ke hos.

  • Volumes:  Data carian elastik disimpan dalam  elasticsearch-data  volum.

c. Pemeriksaan kesihatan

Pemeriksaan kesihatan disediakan untuk memantau Elasticsearch status dengan menghubungi  /_cluster/health  API dengan  elastic pengguna. Jika API gagal bertindak balas, bekas akan dimulakan semula.

2. Kibana

a. Konfigurasi Asas

Kibana dikonfigurasikan untuk menyambung ke Elasticsearch dan dijalankan dalam bekas Docker dengan parameter berikut:

  • Imej: Imej  rasmi Kibana, versi  8.17.2, digunakan.

  • Elasticsearch Sambungan:  Alamat Elasticsearch ditetapkan kepada  http://elasticsearch:9200.

  • Pengesahan:  Kibana menggunakan  kibana_user  dengan kata laluan  YVG6PKplG6ugGOw  untuk menyambung ke Elasticsearch.

b. Ports dan Rangkaian

  • Ports:  Port  5601  dipetakan dari bekas ke hos untuk mengakses Kibana antara muka.

  • Rangkaian:  Kibana disambungkan ke  elk-network.

c. Kebergantungan pada Elasticsearch

Kibana hanya bermula selepas Elasticsearch siap, memastikan sambungan berjaya antara kedua-dua perkhidmatan.

3. Kelantangan dan Rangkaian

a. Kelantangan

  • elasticsearch-data:  Kelantangan ini digunakan untuk menyimpan Elasticsearch data, memastikan data kekal walaupun bekas dipadamkan.

b. Rangkaian

  • elk-network:  Rangkaian  bridge  dicipta untuk menyambung Elasticsearch dan Kibana perkhidmatan.


4. Cara Penggunaan

a. Memulakan Perkhidmatan

Untuk memulakan Elasticsearch dan Kibana, jalankan arahan berikut:

docker-compose up -d

b. Mencipta Kibana Pengguna(Jika Perlu)

Jika anda ingin menggunakan pengguna khusus untuk Kibana, anda boleh membuat satu dengan arahan berikut:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Mencipta Token(Jika Menggunakan Token)

Untuk menggunakan token bukan kata laluan, anda boleh menciptanya dengan arahan berikut:

docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token

5. Menyelesaikan masalah

  • Jika anda menghadapi ralat, anda boleh menyemak log bekas menggunakan:

    docker logs elasticsearch 
    docker logs kibana
  • Untuk memulakan semula Kibana:

    docker-compose down kibana && docker-compose up -d kibana

Kandungan Penuh Docker Compose Fail

Di bawah ialah kandungan penuh  docker-compose-els.yml  fail:

version: '3.7'  
  
services:  
  elasticsearch:  
    image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2  
    container_name: elasticsearch  
    environment:  
   - discovery.type=single-node  
   - xpack.security.enabled=true  
   - ELASTIC_PASSWORD=you_password  
   - network.host=0.0.0.0  
   - ES_JAVA_OPTS=-Xms1g -Xmx1g  
    ports:  
   - '9200:9200'  
   - '9300:9300'  
    volumes:  
   - elasticsearch-data:/usr/share/elasticsearch/data  
    ulimits:  
      memlock:  
        soft: -1  
        hard: -1  
    networks:  
   - elk-network  
  
    healthcheck:  
      test: ["CMD-SHELL", "curl -u elastic:YVG6PKplG6ugGOw --silent --fail localhost:9200/_cluster/health || exit 1"]  
      interval: 10s  
      retries: 5  
      start_period: 30s  
      timeout: 5s  
  
  kibana:  
    image: docker.elastic.co/kibana/kibana:8.17.2  
    container_name: kibana
    ports:  
   - '5601:5601'  
    environment:  
   - ELASTICSEARCH_HOSTS=http://elasticsearch:9200  
   - ELASTICSEARCH_USERNAME=kibana_user  
   - ELASTICSEARCH_PASSWORD=you_password  
    networks:  
   - elk-network  
    depends_on:  
      elasticsearch:  
        condition: service_healthy  
  
volumes:
  elasticsearch-data:  
    driver: local  
  
networks:  
  elk-network:  
    driver: bridge

Kesimpulan

Dengan Docker Compose konfigurasi ini, anda boleh menggunakan Elasticsearch dan Kibana menyediakan keperluan carian, analisis dan visualisasi data anda dengan mudah. Sesuaikan dan lanjutkan konfigurasi ini agar sesuai dengan keperluan khusus projek anda!