În acest articol, vom explora cum să implementăm Elasticsearch și Kibana să folosim Docker Compose. Acestea sunt două componente cheie ale ELK Stack( Elasticsearch, Logstash, Kibana), ajutându-vă să căutați, să analizați și să vizualizați datele în mod eficient. Mai jos sunt configurațiile detaliate și cum funcționează fiecare componentă.
1. Elasticsearch
o. Configurație de bază
Elasticsearch este configurat să ruleze într-un container Docker cu următorii parametri:
Imagine: este folosită imaginea oficială Elasticsearch, versiunea
8.17.2.Modul cu un singur nod: activat prin variabila de mediu
discovery.type=single-node.Securitate: securitatea X-Pack este activată(
xpack.security.enabled=true), iar parola pentruelasticutilizator este setată laYVG6PKplG6ugGOw.Rețea: Elasticsearch ascultă pe toate interfețele de rețea(
network.host=0.0.0.0).JVM Memory: Configurat cu
-Xms1g(memorie inițială) și-Xmx1g(memorie maximă).
b. Ports şi Volumes
Ports: Portul
9200(HTTP) și9300(comunicația internă) sunt mapate de la container la gazdă.Volumes: Datele Elasticsearch sunt stocate în
elasticsearch-datavolum.
c. Controlul de sănătate
O verificare a stării de sănătate este configurată pentru a monitoriza Elasticsearch starea apelând /_cluster/health API-ul cu elastic utilizatorul. Dacă API-ul nu răspunde, containerul va reporni.
2. Kibana
o. Configurație de bază
Kibana este configurat să se conecteze Elasticsearch și să ruleze într-un container Docker cu următorii parametri:
Imagine: este folosită imaginea oficială Kibana, versiunea
8.17.2.Elasticsearch Conexiune: adresa Elasticsearch este setată la
http://elasticsearch:9200.Autentificare: Kibana folosește
kibana_usercu parolaYVG6PKplG6ugGOwpentru a se conecta la Elasticsearch.
b. Ports și Rețele
Ports: Portul
5601este mapat de la container la gazdă pentru a accesa Kibana interfața.Rețele: Kibana este conectat la
elk-network.
c. Dependenta de Elasticsearch
Kibana pornește numai după ce Elasticsearch este gata, asigurând o conexiune de succes între cele două servicii.
3. Volum și Rețea
o. Volum
elasticsearch-data: Acest volum este folosit pentru stocarea Elasticsearch datelor, asigurând persistența datelor chiar dacă containerul este șters.
b. Reţea
elk-network:
bridgeSe creează o rețea pentru a se conecta Elasticsearch și Kibana a presta servicii.
4. Cum se utilizează
o. Pornirea Serviciilor
Pentru a porni Elasticsearch și Kibana, executați următoarea comandă:
docker-compose up -d
b. Crearea unui Kibana utilizator(dacă este necesar)
Dacă doriți să utilizați un utilizator dedicat pentru Kibana, puteți crea unul cu următoarea comandă:
docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
Pentru a utiliza o token parolă în loc de parolă, puteți crea una cu următoarea comandă:
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token
5. Depanare
Dacă întâmpinați erori, puteți verifica jurnalele containerului folosind:
docker logs elasticsearch docker logs kibanaPentru a reporni Kibana:
Conținutul integral al Docker Compose fișierului
Mai jos este conținutul complet al docker-compose-els.yml fișierului:
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
Concluzie
Cu această Docker Compose configurație, puteți implementa cu ușurință Elasticsearch și Kibana pentru a răspunde nevoilor dvs. de căutare, analiză și vizualizare a datelor. Personalizați și extindeți această configurație pentru a se potrivi cerințelor specifice ale proiectului dumneavoastră!

