Σε αυτό το άρθρο, θα διερευνήσουμε τον τρόπο ανάπτυξης 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.2Elasticsearch Σύνδεση: Η 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 αντί για κωδικό πρόσβασης, μπορείτε να δημιουργήσετε έναν με την ακόλουθη εντολή:
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 αρχείου
Ακολουθεί το πλήρες περιεχόμενο του 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 να εξυπηρετήσετε τις ανάγκες αναζήτησης, ανάλυσης και οπτικοποίησης δεδομένων σας. Προσαρμόστε και επεκτείνετε αυτήν τη διαμόρφωση για να ταιριάζει στις συγκεκριμένες απαιτήσεις του έργου σας!

