Docker Compose skirta Elasticsearch & Kibana: sąranka ir konfigūracija

Šiame straipsnyje mes išnagrinėsime, kaip įdiegti  Elasticsearch  ir  Kibana naudoti Docker Compose. Tai yra du pagrindiniai ELK Stack( Elasticsearch, Logstash, Kibana) komponentai, padedantys efektyviai ieškoti, analizuoti ir vizualizuoti duomenis. Žemiau pateikiamos išsamios konfigūracijos ir kiekvieno komponento veikimo principas.

1. Elasticsearch

a. Pagrindinė konfigūracija

Elasticsearch sukonfigūruotas veikti Docker konteineryje su šiais parametrais:

  • Vaizdas: naudojamas  oficialus Elasticsearch vaizdas, versija . 8.17.2

  • Vieno mazgo režimas:  įgalinamas naudojant aplinkos kintamąjį  discovery.type=single-node.

  • Sauga:  X-Pack sauga įjungta( xpack.security.enabled=true), o vartotojo slaptažodis  elastic  nustatytas į  YVG6PKplG6ugGOw.

  • Tinklas:  „Elasticsearch“ klausosi visose tinklo sąsajose( network.host=0.0.0.0).

  • JVM atmintis:  sukonfigūruota  -Xms1g  (pradinė atmintis) ir  -Xmx1g  (maksimali atmintis).

b. Ports ir Volumes

  • Ports:  Prievadas  9200  (HTTP) ir  9300  (vidinis ryšys) susiejami iš konteinerio su pagrindiniu kompiuteriu.

  • Volumes:  Elasticsearch duomenys saugomi  elasticsearch-data  tome.

c. Sveikatos patikrinimas

Būsenos patikra nustatyta, kad būtų galima stebėti Elasticsearch būseną, paskambinus  /_cluster/health  API su  elastic vartotoju. Jei API neatsako, sudėtinis rodinys bus paleistas iš naujo.

2. Kibana

a. Pagrindinė konfigūracija

Kibana sukonfigūruotas prisijungti Elasticsearch prie Docker konteinerio ir paleisti jame su šiais parametrais:

  • Vaizdas: naudojamas  oficialus Kibana vaizdas, versija . 8.17.2

  • Elasticsearch Ryšys:  adresas Elasticsearch nustatytas į  http://elasticsearch:9200.

  • Autentifikavimas:  „Kibana“ naudoja  kibana_user  su slaptažodžiu  YVG6PKplG6ugGOw  , kad prisijungtų prie Elasticsearch.

b. Ports ir tinklai

  • Ports:  prievadas  5601  susietas iš konteinerio su pagrindiniu kompiuteriu, kad būtų galima pasiekti Kibana sąsają.

  • Tinklai:  Kibana yra prijungta prie  elk-network.

c. Priklausomybė nuo Elasticsearch

Kibana prasideda tik po to, kai Elasticsearch yra paruošta, užtikrinant sėkmingą dviejų paslaugų ryšį.

3. Apimtis ir tinklas

a. Apimtis

  • elasticsearch-data:  šis tūris naudojamas Elasticsearch duomenims saugoti, užtikrinant duomenų išlikimą, net jei konteineris ištrintas.

b. Tinklas

  • elk-network:  Tinklas  bridge  sukurtas prisijungti Elasticsearch ir Kibana aptarnauti.


4. Kaip naudoti

a. Paslaugų paleidimas

Norėdami pradėti Elasticsearch ir Kibana, paleiskite šią komandą:

docker-compose up -d

b. Vartotojo sukūrimas Kibana(jei reikia)

Jei norite naudoti skirtą vartotoją Kibana, galite jį sukurti naudodami šią komandą:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Sukurti Token(jei naudojate žetonus)

Norėdami naudoti token ne slaptažodį, galite sukurti jį naudodami šią komandą:

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

5. Trikčių šalinimas

  • Jei atsiranda klaidų, galite patikrinti sudėtinio rodinio žurnalus naudodami:

    docker logs elasticsearch 
    docker logs kibana
  • Norėdami paleisti iš naujo Kibana:

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

Docker Compose Visas failo turinys

Žemiau pateikiamas visas failo turinys  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

Išvada

Naudodami šią Docker Compose konfigūraciją galite lengvai įdiegti Elasticsearch ir Kibana patenkinti duomenų paieškos, analizės ir vizualizavimo poreikius. Tinkinkite ir išplėskite šią konfigūraciją, kad ji atitiktų konkrečius jūsų projekto reikalavimus!