Docker Compose for Elasticsearch & Kibana: Opsætning og konfiguration

I denne artikel vil vi undersøge, hvordan du implementerer  Elasticsearch  og  Kibana bruger Docker Compose. Disse er to nøglekomponenter i ELK Stack( Elasticsearch, Logstash, Kibana), der hjælper dig med at søge, analysere og visualisere data effektivt. Nedenfor er de detaljerede konfigurationer og hvordan hver komponent fungerer.

1. Elasticsearch

en. Grundlæggende konfiguration

Elasticsearch er konfigureret til at køre i en Docker-container med følgende parametre:

  • Billede:  Det officielle Elasticsearch billede, version  8.17.2, bruges.

  • Single-node mode:  Aktiveret via miljøvariablen  discovery.type=single-node.

  • Sikkerhed:  X-Pack-sikkerhed er aktiveret( xpack.security.enabled=true), og adgangskoden for  elastic  brugeren er indstillet til  YVG6PKplG6ugGOw.

  • Netværk:  Elasticsearch lytter på alle netværksgrænseflader( network.host=0.0.0.0).

  • JVM-hukommelse:  Konfigureret med  -Xms1g  (initial hukommelse) og  -Xmx1g  (maksimal hukommelse).

b. Ports og Volumes

  • Ports:  Port  9200  (HTTP) og  9300  (intern kommunikation) kortlægges fra containeren til værten.

  • Volumes:  Elasticsearch-data gemmes i  elasticsearch-data  volumen.

c. Sundhedstjek

Et sundhedstjek er sat op til at overvåge Elasticsearch status ved at kalde  /_cluster/health  API'et med  elastic brugeren. Hvis API'en ikke reagerer, genstartes containeren.

2. Kibana

en. Grundlæggende konfiguration

Kibana er konfigureret til at oprette forbindelse til Elasticsearch og køre i en Docker-container med følgende parametre:

  • Billede:  Det officielle Kibana billede, version  8.17.2, bruges.

  • Elasticsearch Forbindelse:  Adressen Elasticsearch er indstillet til  http://elasticsearch:9200.

  • Godkendelse:  Kibana bruger  kibana_user  med adgangskoden  YVG6PKplG6ugGOw  til at oprette forbindelse til Elasticsearch.

b. Ports og netværk

  • Ports:  Port  5601  er kortlagt fra containeren til værten for at få adgang til Kibana grænsefladen.

  • Netværk:  Kibana er forbundet til  elk-network.

c. Afhængighed af Elasticsearch

Kibana starter først, når Elasticsearch den er klar, hvilket sikrer en vellykket forbindelse mellem de to tjenester.

3. Lydstyrke og netværk

en. Bind

  • elasticsearch-data:  Denne volumen bruges til at gemme Elasticsearch data, hvilket sikrer datapersistens, selvom beholderen slettes.

b. Netværk

  • elk-netværk:  Et  bridge  netværk oprettes for at forbinde Elasticsearch og Kibana tjenester.


4. Sådan bruges

en. Start af tjenesterne

For at starte Elasticsearch og Kibana køre følgende kommando:

docker-compose up -d

b. Oprettelse af en Kibana bruger(hvis nødvendigt)

Hvis du vil bruge en dedikeret bruger til Kibana, kan du oprette en med følgende kommando:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Oprettelse af en Token(hvis du bruger tokens)

For at bruge en token i stedet for en adgangskode kan du oprette en med følgende kommando:

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

5. Fejlfinding

  • Hvis du støder på fejl, kan du tjekke containerlogfilerne ved hjælp af:

    docker logs elasticsearch 
    docker logs kibana
  • For at genstarte Kibana:

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

Docker Compose Filens fulde indhold

Nedenfor er det fulde indhold af  docker-compose-els.yml  filen:

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

Konklusion

Med denne Docker Compose konfiguration kan du nemt implementere Elasticsearch og Kibana betjene dine datasøgnings-, analyse- og visualiseringsbehov. Tilpas og udvid denne konfiguration, så den passer til dit projekts specifikke krav!