Docker Compose för Elasticsearch & Kibana: Setup & Configuration

I den här artikeln kommer vi att utforska hur man distribuerar  Elasticsearch  och  Kibana använder Docker Compose. Dessa är två nyckelkomponenter i ELK Stack( Elasticsearch, Logstash, Kibana), som hjälper dig att söka, analysera och visualisera data effektivt. Nedan finns de detaljerade konfigurationerna och hur varje komponent fungerar.

1. Elasticsearch

a. Grundläggande konfiguration

Elasticsearch är konfigurerad att köras i en Docker-behållare med följande parametrar:

  • Bild:  Den officiella Elasticsearch bilden, version  8.17.2, används.

  • Enkelnodsläge:  Aktiverat via miljövariabeln  discovery.type=single-node.

  • Säkerhet:  X-Pack-säkerhet är aktiverat( xpack.security.enabled=true), och lösenordet för  elastic  användaren är inställt på  YVG6PKplG6ugGOw.

  • Nätverk:  Elasticsearch lyssnar på alla nätverksgränssnitt( network.host=0.0.0.0).

  • JVM-minne:  Konfigurerad med  -Xms1g  (initial minne) och  -Xmx1g  (maximalt minne).

b. Ports och Volumes

  • Ports:  Port  9200  (HTTP) och  9300  (intern kommunikation) mappas från behållaren till värden.

  • Volumes:  Elasticsearch-data lagras i  elasticsearch-data  volymen.

c. Hälsokontroll

En hälsokontroll ställs in för att övervaka Elasticsearch status genom att anropa  /_cluster/health  API:t med  elastic användaren. Om API:et inte svarar kommer behållaren att startas om.

2. Kibana

a. Grundläggande konfiguration

Kibana är konfigurerad för att ansluta till Elasticsearch och köras i en Docker-behållare med följande parametrar:

  • Bild:  Den officiella Kibana bilden, version  8.17.2, används.

  • Elasticsearch Anslutning:  Adressen Elasticsearch är inställd på  http://elasticsearch:9200.

  • Autentisering:  Kibana använder  kibana_user  med lösenordet  YVG6PKplG6ugGOw  för att ansluta till Elasticsearch.

b. Ports och nätverk

  • Ports:  Porten  5601  mappas från behållaren till värden för att komma åt Kibana gränssnittet.

  • Nätverk:  Kibana är ansluten till  elk-network.

c. Beroende av Elasticsearch

Kibana startar först efter Elasticsearch att den är klar, vilket säkerställer en framgångsrik anslutning mellan de två tjänsterna.

3. Volym och nätverk

a. Volym

  • elasticsearch-data:  Denna volym används för att lagra Elasticsearch data, vilket säkerställer databeständighet även om behållaren raderas.

b. Nätverk

  • elk-nätverk:  Ett  bridge  nätverk skapas för att ansluta Elasticsearch och Kibana tjänster.


4. Hur man använder

a. Starta tjänsterna

För att starta Elasticsearch och Kibana kör följande kommando:

docker-compose up -d

b. Skapa en Kibana användare(om det behövs)

Om du vill använda en dedikerad användare för Kibana kan du skapa en med följande kommando:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Skapa en Token(om du använder tokens)

För att använda ett token istället för ett lösenord kan du skapa ett med följande kommando:

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

5. Felsökning

  • Om du stöter på fel kan du kontrollera behållarloggarna med:

    docker logs elasticsearch 
    docker logs kibana
  • För att starta om Kibana:

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

Docker Compose Filens fullständiga innehåll

Nedan är hela innehållet 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

Slutsats

Med den här Docker Compose konfigurationen kan du enkelt distribuera Elasticsearch och Kibana tjäna dina behov av datasökning, analys och visualisering. Anpassa och utöka denna konfiguration för att passa de specifika kraven i ditt projekt!