In dit artikel gaan we onderzoeken hoe u kunt implementeren Elasticsearch en Kibana gebruiken Docker Compose. Dit zijn twee belangrijke componenten van de ELK Stack( Elasticsearch, Logstash, Kibana), die u helpen om effectief data te zoeken, analyseren en visualiseren. Hieronder vindt u de gedetailleerde configuraties en hoe elk component werkt.
1. Elasticsearch
a. Basisconfiguratie
Elasticsearch is geconfigureerd om te worden uitgevoerd in een Docker-container met de volgende parameters:
Afbeelding: De officiële Elasticsearch afbeelding, versie
8.17.2, wordt gebruikt.Enkelvoudige knooppuntmodus: ingeschakeld via de omgevingsvariabele
discovery.type=single-node.Beveiliging: X-Pack-beveiliging is ingeschakeld(
xpack.security.enabled=true) en het wachtwoord voor deelasticgebruiker is ingesteld opYVG6PKplG6ugGOw.Netwerk: Elasticsearch luistert op alle netwerkinterfaces(
network.host=0.0.0.0).JVM-geheugen: Geconfigureerd met
-Xms1g(initieel geheugen) en-Xmx1g(maximaal geheugen).
b. Ports en Volumes
Ports: Poort
9200(HTTP) en9300(interne communicatie) worden vanuit de container aan de host toegewezen.Volumes: Elasticsearch-gegevens worden in het
elasticsearch-datavolume opgeslagen.
c. Gezondheidscontrole
Een healthcheck wordt ingesteld om Elasticsearch de status van te monitoren door de /_cluster/health API met de elastic gebruiker aan te roepen. Als de API niet reageert, start de container opnieuw op.
2. Kibana
a. Basisconfiguratie
Kibana is geconfigureerd om verbinding te maken met Elasticsearch en te draaien in een Docker-container met de volgende parameters:
Afbeelding: De officiële Kibana afbeelding, versie
8.17.2, wordt gebruikt.Elasticsearch Verbinding: Het Elasticsearch adres is ingesteld op
http://elasticsearch:9200.Authenticatie: Kibana gebruikt het
kibana_userwachtwoordYVG6PKplG6ugGOwom verbinding te maken met Elasticsearch.
b. Ports en netwerken
Ports: De poort
5601wordt vanuit de container aan de host toegewezen om toegang te krijgen tot de Kibana interface.Netwerken: Kibana is verbonden met de
elk-network.
c. Afhankelijkheid van Elasticsearch
Kibana start pas als deze Elasticsearch gereed is, waardoor een succesvolle verbinding tussen de twee services wordt gegarandeerd.
3. Volume en netwerk
a. Volume
elasticsearch-data: Dit volume wordt gebruikt om Elasticsearch gegevens op te slaan, zodat de gegevens behouden blijven, zelfs als de container wordt verwijderd.
b. Netwerk
elk-network: Er wordt een
bridgenetwerk gemaakt om verbinding te maken Elasticsearch en Kibana diensten te verlenen.
4. Hoe te gebruiken
a. De diensten starten
Om een te starten Elasticsearch, Kibana voert u de volgende opdracht uit:
docker-compose up -d
b. Een Kibana gebruiker aanmaken(indien nodig)
Als u een speciale gebruiker voor wilt gebruiken Kibana, kunt u er een aanmaken met de volgende opdracht:
docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
Om een wachtwoord te gebruiken token in plaats van een wachtwoord, kunt u er een maken met de volgende opdracht:
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token
5. Problemen oplossen
Als u fouten tegenkomt, kunt u de containerlogboeken als volgt controleren:
docker logs elasticsearch docker logs kibanaOpnieuw starten Kibana:
Volledige inhoud van het Docker Compose bestand
Hieronder vindt u de volledige inhoud van het docker-compose-els.yml bestand:
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
Conclusie
Met deze Docker Compose configuratie kunt u eenvoudig implementeren Elasticsearch en Kibana voldoen aan uw datazoek-, analyse- en visualisatiebehoeften. Pas deze configuratie aan en breid deze uit om te voldoen aan de specifieke vereisten van uw project!

