Docker Compose για Elasticsearch & Kibana: Ρύθμιση & Διαμόρφωση

Σε αυτό το άρθρο, θα διερευνήσουμε τον τρόπο ανάπτυξης  Elasticsearch  και  Kibana χρήσης Docker Compose. Αυτά είναι δύο βασικά στοιχεία του ELK Stack( Elasticsearch, Logstash, Kibana), που σας βοηθούν να αναζητήσετε, να αναλύσετε και να οπτικοποιήσετε δεδομένα αποτελεσματικά. Παρακάτω είναι οι λεπτομερείς διαμορφώσεις και ο τρόπος λειτουργίας κάθε στοιχείου.

1. Elasticsearch

ένα. Βασική Διαμόρφωση

Elasticsearch έχει ρυθμιστεί να εκτελείται σε ένα κοντέινερ Docker με τις ακόλουθες παραμέτρους:

  • Εικόνα: Χρησιμοποιείται  η επίσημη Elasticsearch εικόνα, έκδοση . 8.17.2

  • Λειτουργία ενός κόμβου:  Ενεργοποιείται μέσω της μεταβλητής περιβάλλοντος  discovery.type=single-node.

  • Ασφάλεια:  Η ασφάλεια X-Pack είναι ενεργοποιημένη( xpack.security.enabled=true) και ο κωδικός πρόσβασης για τον  elastic  χρήστη έχει οριστεί σε  YVG6PKplG6ugGOw.

  • Δίκτυο:  Το Elasticsearch ακούει σε όλες τις διεπαφές δικτύου( network.host=0.0.0.0).

  • Μνήμη JVM:  Διαμορφώθηκε με  -Xms1g  (αρχική μνήμη) και  -Xmx1g  (μέγιστη μνήμη).

σι. Ports και Volumes

  • Ports:  Η θύρα  9200  (HTTP) και  9300  η(εσωτερική επικοινωνία) αντιστοιχίζονται από το κοντέινερ στον κεντρικό υπολογιστή.

  • Volumes:  Τα δεδομένα Elasticsearch αποθηκεύονται στον  elasticsearch-data  τόμο.

ντο. Έλεγχος υγείας

Ρυθμίζεται ένας έλεγχος υγείας για την παρακολούθηση Elasticsearch της κατάστασης του χρήστη καλώντας το  /_cluster/health  API με τον  elastic χρήστη. Εάν το API δεν ανταποκριθεί, το κοντέινερ θα επανεκκινηθεί.

2. Kibana

ένα. Βασική Διαμόρφωση

Kibana έχει ρυθμιστεί για σύνδεση Elasticsearch και εκτέλεση σε κοντέινερ Docker με τις ακόλουθες παραμέτρους:

  • Εικόνα: Χρησιμοποιείται  η επίσημη Kibana εικόνα, έκδοση . 8.17.2

  • Elasticsearch Σύνδεση:  Η Elasticsearch διεύθυνση έχει οριστεί σε  http://elasticsearch:9200.

  • Έλεγχος ταυτότητας:  Η Kibana χρησιμοποιεί το  kibana_user  με τον κωδικό πρόσβασης  YVG6PKplG6ugGOw  για να συνδεθεί στο Elasticsearch.

σι. Ports και Δίκτυα

  • Ports:  Η θύρα  5601  αντιστοιχίζεται από το κοντέινερ στον κεντρικό υπολογιστή για πρόσβαση στη Kibana διεπαφή.

  • Δίκτυα:  Το Kibana είναι συνδεδεμένο με το  elk-network.

ντο. Εξάρτηση από Elasticsearch

Kibana ξεκινά μόνο αφού Elasticsearch είναι έτοιμο, διασφαλίζοντας μια επιτυχημένη σύνδεση μεταξύ των δύο υπηρεσιών.

3. Όγκος και Δίκτυο

ένα. Τόμος

  • elasticsearch-data:  Αυτός ο τόμος χρησιμοποιείται για την αποθήκευση Elasticsearch δεδομένων, διασφαλίζοντας τη διατήρηση των δεδομένων ακόμα και αν το κοντέινερ διαγραφεί.

σι. Δίκτυο

  • elk-network: bridge  Δημιουργείται  ένα  δίκτυο για σύνδεση Elasticsearch και Kibana υπηρεσίες.


4. Τρόπος χρήσης

ένα. Εκκίνηση των Υπηρεσιών

Για να ξεκινήσετε Elasticsearch και Kibana, εκτελέστε την ακόλουθη εντολή:

docker-compose up -d

σι. Δημιουργία Kibana χρήστη(Εάν χρειάζεται)

Εάν θέλετε να χρησιμοποιήσετε έναν αποκλειστικό χρήστη για Kibana, μπορείτε να δημιουργήσετε έναν με την ακόλουθη εντολή:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
ντο. Δημιουργία Token(εάν χρησιμοποιείτε διακριτικά)

Για να χρησιμοποιήσετε έναν token αντί για κωδικό πρόσβασης, μπορείτε να δημιουργήσετε έναν με την ακόλουθη εντολή:

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

5. Αντιμετώπιση προβλημάτων

  • Εάν αντιμετωπίσετε σφάλματα, μπορείτε να ελέγξετε τα αρχεία καταγραφής κοντέινερ χρησιμοποιώντας:

    docker logs elasticsearch 
    docker logs kibana
  • Για επανεκκίνηση Kibana:

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

Πλήρες περιεχόμενο του Docker Compose αρχείου

Ακολουθεί το πλήρες περιεχόμενο του  docker-compose-els.yml  αρχείου:

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

Σύναψη

Με αυτήν Docker Compose τη διαμόρφωση, μπορείτε εύκολα να αναπτύξετε Elasticsearch και Kibana να εξυπηρετήσετε τις ανάγκες αναζήτησης, ανάλυσης και οπτικοποίησης δεδομένων σας. Προσαρμόστε και επεκτείνετε αυτήν τη διαμόρφωση για να ταιριάζει στις συγκεκριμένες απαιτήσεις του έργου σας!