Docker Compose pentru Elasticsearch & Kibana: Configurare și configurare

În acest articol, vom explora cum să implementăm  Elasticsearch  și  Kibana să folosim Docker Compose. Acestea sunt două componente cheie ale ELK Stack( Elasticsearch, Logstash, Kibana), ajutându-vă să căutați, să analizați și să vizualizați datele în mod eficient. Mai jos sunt configurațiile detaliate și cum funcționează fiecare componentă.

1. Elasticsearch

o. Configurație de bază

Elasticsearch este configurat să ruleze într-un container Docker cu următorii parametri:

  • Imagine: este folosită imaginea  oficială Elasticsearch, versiunea  8.17.2.

  • Modul cu un singur nod:  activat prin variabila de mediu  discovery.type=single-node.

  • Securitate:  securitatea X-Pack este activată( xpack.security.enabled=true), iar parola pentru  elastic  utilizator este setată la  YVG6PKplG6ugGOw.

  • Rețea:  Elasticsearch ascultă pe toate interfețele de rețea( network.host=0.0.0.0).

  • JVM Memory:  Configurat cu  -Xms1g  (memorie inițială) și  -Xmx1g  (memorie maximă).

b. Ports şi Volumes

  • Ports:  Portul  9200  (HTTP) și  9300  (comunicația internă) sunt mapate de la container la gazdă.

  • Volumes:  Datele Elasticsearch sunt stocate în  elasticsearch-data  volum.

c. Controlul de sănătate

O verificare a stării de sănătate este configurată pentru a monitoriza Elasticsearch starea apelând  /_cluster/health  API-ul cu  elastic utilizatorul. Dacă API-ul nu răspunde, containerul va reporni.

2. Kibana

o. Configurație de bază

Kibana este configurat să se conecteze Elasticsearch și să ruleze într-un container Docker cu următorii parametri:

  • Imagine: este folosită imaginea  oficială Kibana, versiunea  8.17.2.

  • Elasticsearch Conexiune:  adresa Elasticsearch este setată la  http://elasticsearch:9200.

  • Autentificare:  Kibana folosește  kibana_user  cu parola  YVG6PKplG6ugGOw  pentru a se conecta la Elasticsearch.

b. Ports și Rețele

  • Ports:  Portul  5601  este mapat de la container la gazdă pentru a accesa Kibana interfața.

  • Rețele:  Kibana este conectat la  elk-network.

c. Dependenta de Elasticsearch

Kibana pornește numai după ce Elasticsearch este gata, asigurând o conexiune de succes între cele două servicii.

3. Volum și Rețea

o. Volum

  • elasticsearch-data:  Acest volum este folosit pentru stocarea Elasticsearch datelor, asigurând persistența datelor chiar dacă containerul este șters.

b. Reţea

  • elk-network: bridge  Se creează  o  rețea pentru a se conecta Elasticsearch și Kibana a presta servicii.


4. Cum se utilizează

o. Pornirea Serviciilor

Pentru a porni Elasticsearch și Kibana, executați următoarea comandă:

docker-compose up -d

b. Crearea unui Kibana utilizator(dacă este necesar)

Dacă doriți să utilizați un utilizator dedicat pentru Kibana, puteți crea unul cu următoarea comandă:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Crearea unui Token(dacă se utilizează jetoane)

Pentru a utiliza o token parolă în loc de parolă, puteți crea una cu următoarea comandă:

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

5. Depanare

  • Dacă întâmpinați erori, puteți verifica jurnalele containerului folosind:

    docker logs elasticsearch 
    docker logs kibana
  • Pentru a reporni Kibana:

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

Conținutul integral al Docker Compose fișierului

Mai jos este conținutul complet al  docker-compose-els.yml  fișierului:

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

Concluzie

Cu această Docker Compose configurație, puteți implementa cu ușurință Elasticsearch și Kibana pentru a răspunde nevoilor dvs. de căutare, analiză și vizualizare a datelor. Personalizați și extindeți această configurație pentru a se potrivi cerințelor specifice ale proiectului dumneavoastră!