Docker Compose untuk Elasticsearch & Kibana: Pengaturan & Konfigurasi

Dalam artikel ini, kita akan membahas cara menggunakan  Elasticsearch  dan  Kibana menyebarkan Docker Compose. Ini adalah dua komponen utama dari ELK Stack( Elasticsearch, Logstash, Kibana), yang membantu Anda mencari, menganalisis, dan memvisualisasikan data secara efektif. Berikut adalah konfigurasi terperinci dan cara kerja setiap komponen.

1. Elasticsearch

a. Konfigurasi Dasar

Elasticsearch dikonfigurasi untuk berjalan dalam kontainer Docker dengan parameter berikut:

  • Gambar: Gambar  resmi Elasticsearch, versi  8.17.2, digunakan.

  • Mode simpul tunggal:  Diaktifkan melalui variabel lingkungan  discovery.type=single-node.

  • Keamanan:  Keamanan X-Pack diaktifkan( xpack.security.enabled=true), dan kata sandi untuk  elastic  pengguna ditetapkan ke  YVG6PKplG6ugGOw.

  • Jaringan:  Elasticsearch mendengarkan semua antarmuka jaringan( network.host=0.0.0.0).

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

b. Ports dan Volumes

  • Ports:  Port  9200  (HTTP) dan  9300  (komunikasi internal) dipetakan dari kontainer ke host.

  • Volumes:  Data Elasticsearch disimpan dalam  elasticsearch-data  volume.

c. Pemeriksaan kesehatan

Pemeriksaan kesehatan disiapkan untuk memantau Elasticsearch status dengan memanggil  /_cluster/health  API bersama  elastic pengguna. Jika API gagal merespons, kontainer akan dimulai ulang.

2. Kibana

a. Konfigurasi Dasar

Kibana dikonfigurasi untuk terhubung Elasticsearch dan berjalan dalam kontainer Docker dengan parameter berikut:

  • Gambar: Gambar  resmi Kibana, versi  8.17.2, digunakan.

  • Elasticsearch Koneksi:  Alamat Elasticsearch diatur ke  http://elasticsearch:9200.

  • Otentikasi:  Kibana menggunakan  kibana_user  kata sandi  YVG6PKplG6ugGOw  untuk terhubung Elasticsearch.

b. Ports dan Jaringan

  • Ports:  Port  5601  dipetakan dari kontainer ke host untuk mengakses Kibana antarmuka.

  • Jaringan:  Kibana terhubung ke  elk-network.

c. Ketergantungan pada Elasticsearch

Kibana hanya dimulai setelah Elasticsearch siap, memastikan koneksi yang sukses antara kedua layanan.

3. Volume dan Jaringan

a. Volume

  • elasticsearch-data:  Volume ini digunakan untuk menyimpan Elasticsearch data, memastikan persistensi data bahkan jika wadahnya dihapus.

b. Jaringan

  • elk-network:  Jaringan  bridge  dibuat untuk menghubungkan Elasticsearch dan Kibana layanan.


4. Cara Penggunaan

a. Memulai Layanan

Untuk memulai Elasticsearch dan Kibana, jalankan perintah berikut:

docker-compose up -d

b. Membuat Kibana Pengguna(Jika Diperlukan)

Jika Anda ingin menggunakan pengguna khusus untuk Kibana, Anda dapat membuatnya dengan perintah berikut:

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

Untuk menggunakan a token sebagai ganti kata sandi, Anda dapat membuatnya dengan perintah berikut:

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

5. Pemecahan Masalah

  • Jika Anda mengalami kesalahan, Anda dapat memeriksa log kontainer menggunakan:

    docker logs elasticsearch 
    docker logs kibana
  • Untuk memulai ulang Kibana:

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

Isi Lengkap Docker Compose File

Berikut ini adalah isi lengkap berkasnya  docker-compose-els.yml  :

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 dapat dengan mudah menerapkan Elasticsearch dan Kibana memenuhi kebutuhan pencarian, analisis, dan visualisasi data Anda. Sesuaikan dan perluas konfigurasi ini agar sesuai dengan persyaratan khusus proyek Anda!