In questo articolo, esploreremo come distribuire Elasticsearch e Kibana utilizzare Docker Compose. Questi sono due componenti chiave di ELK Stack( Elasticsearch, Logstash, Kibana), che ti aiutano a cercare, analizzare e visualizzare i dati in modo efficace. Di seguito sono riportate le configurazioni dettagliate e il funzionamento di ciascun componente.
1. Elasticsearch
a. Configurazione di base
Elasticsearch è configurato per essere eseguito in un contenitore Docker con i seguenti parametri:
Immagine: Elasticsearch viene utilizzata l' immagine ufficiale, versione
8.17.2.Modalità a nodo singolo: abilitata tramite la variabile di ambiente
discovery.type=single-node.Sicurezza: la sicurezza X-Pack è abilitata(
xpack.security.enabled=true) e la password per l'elasticutente è impostata suYVG6PKplG6ugGOw.Rete: Elasticsearch ascolta su tutte le interfacce di rete(
network.host=0.0.0.0).Memoria JVM: configurata con
-Xms1g(memoria iniziale) e-Xmx1g(memoria massima).
b. Ports e Volumes
Ports: La porta
9200(HTTP) e9300(comunicazione interna) vengono mappate dal contenitore all'host.Volumes: I dati Elasticsearch sono archiviati nel
elasticsearch-datavolume.
c. Controllo sanitario
Un healthcheck è impostato per monitorare Elasticsearch lo stato di chiamando l' /_cluster/health API con l' elastic utente. Se l'API non risponde, il contenitore verrà riavviato.
2. Kibana
a. Configurazione di base
Kibana è configurato per connettersi Elasticsearch ed essere eseguito in un contenitore Docker con i seguenti parametri:
Immagine: Kibana viene utilizzata l' immagine ufficiale, versione
8.17.2.Elasticsearch Connessione: l' Elasticsearch indirizzo è impostato su
http://elasticsearch:9200.Autenticazione: Kibana utilizza
kibana_userla passwordYVG6PKplG6ugGOwper connettersi a Elasticsearch.
b. Ports e reti
Ports: La porta
5601viene mappata dal contenitore all'host per accedere Kibana all'interfaccia.Reti: Kibana è connesso a
elk-network.
c. Dipendenza da Elasticsearch
Kibana si avvia solo quando Elasticsearch è pronto, assicurando una connessione riuscita tra i due servizi.
3. Volume e rete
a. Volume
elasticsearch-data: Questo volume viene utilizzato per archiviare Elasticsearch i dati, garantendone la persistenza anche se il contenitore viene eliminato.
b. Rete
elk-network: Una
bridgerete è creata per connettere Elasticsearch e Kibana fornire servizi.
4. Come utilizzare
a. Avvio dei servizi
Per avviare Elasticsearch e Kibana, eseguire il seguente comando:
docker-compose up -d
b. Creazione di un Kibana utente(se necessario)
Se vuoi utilizzare un utente dedicato per Kibana, puoi crearne uno con il seguente comando:
docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
Per utilizzare un token al posto di una password, puoi crearne uno con il seguente comando:
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token
5. Risoluzione dei problemi
Se si verificano errori, è possibile controllare i log del contenitore utilizzando:
docker logs elasticsearch docker logs kibanaPer riavviare Kibana:
Contenuto completo del Docker Compose file
Di seguito il contenuto completo del docker-compose-els.yml file:
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
Conclusione
Con questa Docker Compose configurazione, puoi facilmente distribuire Elasticsearch e Kibana soddisfare le tue esigenze di ricerca, analisi e visualizzazione dei dati. Personalizza ed estendi questa configurazione per adattarla ai requisiti specifici del tuo progetto!

