Docker Compose für Elasticsearch & Kibana: Setup & Konfiguration

In diesem Artikel erfahren Sie, wie Sie bereitstellen  Elasticsearch  und  Kibana verwenden Docker Compose. Dies sind zwei Schlüsselkomponenten des ELK-Stacks( Elasticsearch, Logstash, Kibana), die Ihnen dabei helfen, Daten effektiv zu suchen, zu analysieren und zu visualisieren. Nachfolgend finden Sie die detaillierten Konfigurationen und die Funktionsweise der einzelnen Komponenten.

1. Elasticsearch

a. Grundkonfiguration

Elasticsearch ist für die Ausführung in einem Docker-Container mit den folgenden Parametern konfiguriert:

  • Bild: Es wird  das offizielle Elasticsearch Bild, Version  8.17.2, verwendet.

  • Einzelknotenmodus:  Aktiviert über die Umgebungsvariable  discovery.type=single-node.

  • Sicherheit:  X-Pack-Sicherheit ist aktiviert( xpack.security.enabled=true) und das Kennwort für den  elastic  Benutzer ist auf gesetzt  YVG6PKplG6ugGOw.

  • Netzwerk:  Elasticsearch hört auf allen Netzwerkschnittstellen( network.host=0.0.0.0).

  • JVM-Speicher:  Konfiguriert mit  -Xms1g  (Anfangsspeicher) und  -Xmx1g  (Maximalspeicher).

b. Ports und Volumes

  • Ports:  Port  9200  (HTTP) und  9300  (interne Kommunikation) werden vom Container zum Host abgebildet.

  • Volumes:  Elasticsearch-Daten werden im  elasticsearch-data  Datenträger gespeichert.

c. Gesundheitscheck

Ein Healthcheck wird eingerichtet, um Elasticsearch den Status von zu überwachen, indem die  /_cluster/health  API mit dem  elastic Benutzer aufgerufen wird. Wenn die API nicht antwortet, wird der Container neu gestartet.

2. Kibana

a. Grundkonfiguration

Kibana ist für die Verbindung Elasticsearch mit einem Docker-Container und die Ausführung in diesem mit den folgenden Parametern konfiguriert:

  • Bild: Es wird  das offizielle Kibana Bild, Version  8.17.2, verwendet.

  • Elasticsearch Verbindung:  Die Elasticsearch Adresse ist eingestellt auf  http://elasticsearch:9200.

  • Authentifizierung:  Kibana verwendet die  kibana_user  mit dem Passwort,  YVG6PKplG6ugGOw  um eine Verbindung herzustellen Elasticsearch.

b. Ports und Netzwerke

  • Ports: Für den Zugriff auf die Schnittstelle wird  der Port  5601  vom Container dem Host zugeordnet Kibana.

  • Netzwerke:  Kibana ist verbunden mit  elk-network.

c. Abhängigkeit von Elasticsearch

Kibana startet erst, wenn Elasticsearch bereit ist, und stellt so eine erfolgreiche Verbindung zwischen den beiden Diensten sicher.

3. Lautstärke und Netzwerk

ein. Volumen

  • elasticsearch-data:  Dieses Volume wird zum Speichern von Daten verwendet Elasticsearch und stellt die Datenpersistenz sicher, auch wenn der Container gelöscht wird.

b. Netzwerk

  • elk-network:  Ein  bridge  Netzwerk wird zum Verbinden Elasticsearch und Kibana für Dienste erstellt.


4. Wie benutzt man

a. Starten der Dienste

Führen Sie zum Starten Elasticsearch und Kibana den folgenden Befehl aus:

docker-compose up -d

b. Einen Kibana Benutzer erstellen(falls erforderlich)

Wenn Sie einen dedizierten Benutzer für verwenden möchten Kibana, können Sie einen mit dem folgenden Befehl erstellen:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Erstellen eines Token(bei Verwendung von Token)

Um token anstelle eines Passworts eins zu verwenden, können Sie eines mit dem folgenden Befehl erstellen:

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

5. Fehlerbehebung

  • Wenn Fehler auftreten, können Sie die Containerprotokolle wie folgt überprüfen:

    docker logs elasticsearch 
    docker logs kibana
  • So starten Sie neu Kibana:

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

Vollständiger Inhalt der Docker Compose Datei

Unten sehen Sie den vollständigen Inhalt der  docker-compose-els.yml  Datei:

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

Abschluss

Mit dieser Docker Compose Konfiguration können Sie Ihre Anforderungen an Datensuche, -analyse und -visualisierung problemlos implementieren Elasticsearch und erfüllen. Passen Sie diese Konfiguration an und erweitern Sie sie, um sie an die spezifischen Anforderungen Ihres Projekts anzupassen! Kibana