Docker Compose voor Elasticsearch & Kibana: Installatie & Configuratie

In dit artikel gaan we onderzoeken hoe u kunt implementeren  Elasticsearch  en  Kibana gebruiken Docker Compose. Dit zijn twee belangrijke componenten van de ELK Stack( Elasticsearch, Logstash, Kibana), die u helpen om effectief data te zoeken, analyseren en visualiseren. Hieronder vindt u de gedetailleerde configuraties en hoe elk component werkt.

1. Elasticsearch

a. Basisconfiguratie

Elasticsearch is geconfigureerd om te worden uitgevoerd in een Docker-container met de volgende parameters:

  • Afbeelding:  De officiële Elasticsearch afbeelding, versie  8.17.2, wordt gebruikt.

  • Enkelvoudige knooppuntmodus:  ingeschakeld via de omgevingsvariabele  discovery.type=single-node.

  • Beveiliging:  X-Pack-beveiliging is ingeschakeld( xpack.security.enabled=true) en het wachtwoord voor de  elastic  gebruiker is ingesteld op  YVG6PKplG6ugGOw.

  • Netwerk:  Elasticsearch luistert op alle netwerkinterfaces( network.host=0.0.0.0).

  • JVM-geheugen:  Geconfigureerd met  -Xms1g  (initieel geheugen) en  -Xmx1g  (maximaal geheugen).

b. Ports en Volumes

  • Ports:  Poort  9200  (HTTP) en  9300  (interne communicatie) worden vanuit de container aan de host toegewezen.

  • Volumes:  Elasticsearch-gegevens worden in het  elasticsearch-data  volume opgeslagen.

c. Gezondheidscontrole

Een healthcheck wordt ingesteld om Elasticsearch de status van te monitoren door de  /_cluster/health  API met de  elastic gebruiker aan te roepen. Als de API niet reageert, start de container opnieuw op.

2. Kibana

a. Basisconfiguratie

Kibana is geconfigureerd om verbinding te maken met Elasticsearch en te draaien in een Docker-container met de volgende parameters:

  • Afbeelding:  De officiële Kibana afbeelding, versie  8.17.2, wordt gebruikt.

  • Elasticsearch Verbinding:  Het Elasticsearch adres is ingesteld op  http://elasticsearch:9200.

  • Authenticatie:  Kibana gebruikt het  kibana_user  wachtwoord  YVG6PKplG6ugGOw  om verbinding te maken met Elasticsearch.

b. Ports en netwerken

  • Ports:  De poort  5601  wordt vanuit de container aan de host toegewezen om toegang te krijgen tot de Kibana interface.

  • Netwerken:  Kibana is verbonden met de  elk-network.

c. Afhankelijkheid van Elasticsearch

Kibana start pas als deze Elasticsearch gereed is, waardoor een succesvolle verbinding tussen de twee services wordt gegarandeerd.

3. Volume en netwerk

a. Volume

  • elasticsearch-data:  Dit volume wordt gebruikt om Elasticsearch gegevens op te slaan, zodat de gegevens behouden blijven, zelfs als de container wordt verwijderd.

b. Netwerk

  • elk-network: Er wordt  een  bridge  netwerk gemaakt om verbinding te maken Elasticsearch en Kibana diensten te verlenen.


4. Hoe te gebruiken

a. De diensten starten

Om een ​​te starten Elasticsearch, Kibana voert u de volgende opdracht uit:

docker-compose up -d

b. Een Kibana gebruiker aanmaken(indien nodig)

Als u een speciale gebruiker voor wilt gebruiken Kibana, kunt u er een aanmaken met de volgende opdracht:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Een Token(indien u tokens gebruikt) aanmaken

Om een ​​wachtwoord te gebruiken token in plaats van een wachtwoord, kunt u er een maken met de volgende opdracht:

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

5. Problemen oplossen

  • Als u fouten tegenkomt, kunt u de containerlogboeken als volgt controleren:

    docker logs elasticsearch 
    docker logs kibana
  • Opnieuw starten Kibana:

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

Volledige inhoud van het Docker Compose bestand

Hieronder vindt u de volledige inhoud van het  docker-compose-els.yml  bestand:

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

Conclusie

Met deze Docker Compose configuratie kunt u eenvoudig implementeren Elasticsearch en Kibana voldoen aan uw datazoek-, analyse- en visualisatiebehoeften. Pas deze configuratie aan en breid deze uit om te voldoen aan de specifieke vereisten van uw project!