Docker Compose for Elasticsearch & Kibana: Oppsett og konfigurasjon

I denne artikkelen vil vi utforske hvordan du distribuerer  Elasticsearch  og  Kibana bruker Docker Compose. Dette er to nøkkelkomponenter i ELK Stack( Elasticsearch, Logstash, Kibana), som hjelper deg å søke, analysere og visualisere data effektivt. Nedenfor er de detaljerte konfigurasjonene og hvordan hver komponent fungerer.

1. Elasticsearch

en. Grunnleggende konfigurasjon

Elasticsearch er konfigurert til å kjøre i en Docker-beholder med følgende parametere:

  • Bilde:  Det offisielle Elasticsearch bildet, versjon  8.17.2, brukes.

  • Enkeltnodemodus:  Aktivert via miljøvariabelen  discovery.type=single-node.

  • Sikkerhet:  X-Pack-sikkerhet er aktivert( xpack.security.enabled=true), og passordet for  elastic  brukeren er satt til  YVG6PKplG6ugGOw.

  • Nettverk:  Elasticsearch lytter på alle nettverksgrensesnitt( network.host=0.0.0.0).

  • JVM-minne:  Konfigurert med  -Xms1g  (opprinnelig minne) og  -Xmx1g  (maksimalt minne).

b. Ports og Volumes

  • Ports:  Port  9200  (HTTP) og  9300  (intern kommunikasjon) er kartlagt fra containeren til verten.

  • Volumes:  Elasticsearch-data lagres i  elasticsearch-data  volumet.

c. Helsesjekk

En helsesjekk settes opp for å overvåke Elasticsearch statusen ved å ringe  /_cluster/health  APIen med  elastic brukeren. Hvis API-en ikke svarer, vil beholderen starte på nytt.

2. Kibana

en. Grunnleggende konfigurasjon

Kibana er konfigurert til å koble til Elasticsearch og kjøre i en Docker-beholder med følgende parametere:

  • Bilde:  Det offisielle Kibana bildet, versjon  8.17.2, brukes.

  • Elasticsearch Tilkobling:  Adressen Elasticsearch er satt til  http://elasticsearch:9200.

  • Autentisering:  Kibana bruker  kibana_user  med passordet  YVG6PKplG6ugGOw  for å koble til Elasticsearch.

b. Ports og nettverk

  • Ports:  Porten  5601  tilordnes fra containeren til verten for å få tilgang til Kibana grensesnittet.

  • Nettverk:  Kibana er koblet til  elk-network.

c. Avhengighet av Elasticsearch

Kibana starter først etter Elasticsearch at den er klar, noe som sikrer en vellykket forbindelse mellom de to tjenestene.

3. Volum og nettverk

en. Volum

  • elasticsearch-data:  Dette volumet brukes til å lagre Elasticsearch data, og sikrer datavedvarende selv om beholderen slettes.

b. Nettverk

  • elg-nettverk:  Et  bridge  nettverk opprettes for å koble til Elasticsearch og Kibana tjenester.


4. Hvordan bruke

en. Starte tjenestene

For å starte Elasticsearch og Kibana kjør følgende kommando:

docker-compose up -d

b. Opprette en Kibana bruker(hvis nødvendig)

Hvis du vil bruke en dedikert bruker for Kibana, kan du opprette en med følgende kommando:

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

For å bruke et token i stedet for et passord, kan du opprette et med følgende kommando:

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

5. Feilsøking

  • Hvis du støter på feil, kan du sjekke beholderloggene ved å bruke:

    docker logs elasticsearch 
    docker logs kibana
  • For å starte på nytt Kibana:

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

Fullt innhold i Docker Compose filen

Nedenfor er hele innholdet i  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

Konklusjon

Med denne Docker Compose konfigurasjonen kan du enkelt distribuere Elasticsearch og Kibana betjene dine behov for datasøk, analyse og visualisering. Tilpass og utvide denne konfigurasjonen for å passe de spesifikke kravene til prosjektet ditt!