Het Configureren van het Docker Compose-bestand
Nu alle noodzakelijke configuraties zijn ingesteld — voor Filebeat, Logstash en de Flask-applicatie — is het tijd om deze samen te brengen en als één systeem uit te voeren. Hiervoor gebruiken we Docker Compose.
Docker Compose is een hulpmiddel waarmee je alle benodigde containers in één YAML-bestand kunt definiëren en met één commando kunt uitvoeren.
In plaats van voor elke service een apart docker run-commando te schrijven, noteer je hun configuraties in docker-compose.yml en voer je alles samen uit.
Een eenvoudig docker-compose.yml-bestand ziet er als volgt uit:
docker-compose.yml
Laten we nu stap voor stap een volledig bestand aanmaken, waarbij elke container onderweg wordt toegelicht.
Flask-toepassing
Dit is de hoofdtoepassing die logbestanden genereert.
docker-compose.yml
Dit blok geeft Docker de instructie om de container te bouwen vanuit de huidige map (waar je Dockerfile zich bevindt).
De container krijgt de naam flask-app.
De regel volumes koppelt de lokale map ./logs aan /logs binnen de container. Op deze manier worden alle logs die door de applicatie worden aangemaakt, zowel in de container als op je computer opgeslagen.
De applicatie draait binnen de container op poort 5000, maar we koppelen deze aan poort 5050 op je machine zodat je deze kunt benaderen in je browser via http://localhost:5050.
Filebeat
Filebeat fungeert als een agent die logbestanden bewaakt en nieuwe vermeldingen doorstuurt naar Logstash.
docker-compose.yml
Filebeat draait vanuit het officiële 8.15.0-image.
Het wordt uitgevoerd als de gebruiker root zodat het toestemming heeft om logbestanden te lezen.
De map ./logs wordt gekoppeld in alleen-lezen modus en het configuratiebestand filebeat.yml wordt toegevoegd. Dit geeft aan Filebeat aan welke logs moeten worden bewaakt en waar deze naartoe moeten worden verzonden.
Met depends_on wordt ervoor gezorgd dat Filebeat pas start nadat de applicatie en Logstash actief zijn.
Logstash
Logstash ontvangt logs van Filebeat, verwerkt deze (bijvoorbeeld door JSON te parseren) en stuurt ze door naar Elasticsearch.
docker-compose.yml
Deze container maakt gebruik van het officiële Logstash-image.
Het logstash.conf configuratiebestand wordt gekoppeld, waarin staat hoe Logstash de binnenkomende logs moet verwerken.
De container start pas nadat Elasticsearch actief is, omdat er een bestemming nodig is voor de verwerkte logs.
Poort 5044 wordt blootgesteld zodat Filebeat data naar Logstash kan sturen.
Elasticsearch
Elasticsearch slaat logs op als documenten en maakt het mogelijk om er snel doorheen te zoeken.
docker-compose.yml
We gebruiken het officiële Elasticsearch-image versie 8.15.0.
discovery.type=single-nodegeeft aan dat we een single-node cluster draaien (voldoende voor lokaal testen);xpack.security.enabled=falseschakelt beveiliging uit zodat u niet met gebruikersnamen en wachtwoorden hoeft te werken;ES_JAVA_OPTSbeperkt het geheugengebruik van het Java-proces.
De service is bereikbaar op poort 9200 via http://localhost:9200.
Kibana
Kibana is een webinterface voor Elasticsearch. Het helpt bij het visualiseren van logs en het maken van dashboards.
docker-compose.yml
We gebruiken het officiële Kibana-image.
Poort 5601 wordt blootgesteld zodat je Kibana in je browser kunt openen via http://localhost:5601.
ELASTICSEARCH_HOSTS wijst Kibana naar onze Elasticsearch-container zodat het data kan ophalen en weergeven.
Definitieve docker-compose.yml
Hier is het volledige Docker Compose-bestand met alle services in de juiste volgorde verbonden:
docker-compose.yml
Dit docker-compose.yml start alle services in de juiste volgorde. De Flask-applicatie genereert logbestanden, Filebeat verzamelt deze en stuurt ze naar Logstash, Logstash verwerkt de logs en stuurt ze door naar Elasticsearch, en Kibana biedt een webinterface voor het bekijken en analyseren van de data.
Het enige wat nog rest is het uitvoeren van het systeem en het testen ervan, wat in het volgende hoofdstuk wordt behandeld.
1. Wat is het belangrijkste doel van Docker Compose in deze opzet?
2. Welke service is verantwoordelijk voor het verzamelen van logbestanden van de Flask-applicatie en het verzenden ervan naar Logstash?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
How do I start all the services using Docker Compose?
Can you explain how the services communicate with each other?
What should I check if one of the services fails to start?
Geweldig!
Completion tarief verbeterd naar 3.7
Het Configureren van het Docker Compose-bestand
Veeg om het menu te tonen
Nu alle noodzakelijke configuraties zijn ingesteld — voor Filebeat, Logstash en de Flask-applicatie — is het tijd om deze samen te brengen en als één systeem uit te voeren. Hiervoor gebruiken we Docker Compose.
Docker Compose is een hulpmiddel waarmee je alle benodigde containers in één YAML-bestand kunt definiëren en met één commando kunt uitvoeren.
In plaats van voor elke service een apart docker run-commando te schrijven, noteer je hun configuraties in docker-compose.yml en voer je alles samen uit.
Een eenvoudig docker-compose.yml-bestand ziet er als volgt uit:
docker-compose.yml
Laten we nu stap voor stap een volledig bestand aanmaken, waarbij elke container onderweg wordt toegelicht.
Flask-toepassing
Dit is de hoofdtoepassing die logbestanden genereert.
docker-compose.yml
Dit blok geeft Docker de instructie om de container te bouwen vanuit de huidige map (waar je Dockerfile zich bevindt).
De container krijgt de naam flask-app.
De regel volumes koppelt de lokale map ./logs aan /logs binnen de container. Op deze manier worden alle logs die door de applicatie worden aangemaakt, zowel in de container als op je computer opgeslagen.
De applicatie draait binnen de container op poort 5000, maar we koppelen deze aan poort 5050 op je machine zodat je deze kunt benaderen in je browser via http://localhost:5050.
Filebeat
Filebeat fungeert als een agent die logbestanden bewaakt en nieuwe vermeldingen doorstuurt naar Logstash.
docker-compose.yml
Filebeat draait vanuit het officiële 8.15.0-image.
Het wordt uitgevoerd als de gebruiker root zodat het toestemming heeft om logbestanden te lezen.
De map ./logs wordt gekoppeld in alleen-lezen modus en het configuratiebestand filebeat.yml wordt toegevoegd. Dit geeft aan Filebeat aan welke logs moeten worden bewaakt en waar deze naartoe moeten worden verzonden.
Met depends_on wordt ervoor gezorgd dat Filebeat pas start nadat de applicatie en Logstash actief zijn.
Logstash
Logstash ontvangt logs van Filebeat, verwerkt deze (bijvoorbeeld door JSON te parseren) en stuurt ze door naar Elasticsearch.
docker-compose.yml
Deze container maakt gebruik van het officiële Logstash-image.
Het logstash.conf configuratiebestand wordt gekoppeld, waarin staat hoe Logstash de binnenkomende logs moet verwerken.
De container start pas nadat Elasticsearch actief is, omdat er een bestemming nodig is voor de verwerkte logs.
Poort 5044 wordt blootgesteld zodat Filebeat data naar Logstash kan sturen.
Elasticsearch
Elasticsearch slaat logs op als documenten en maakt het mogelijk om er snel doorheen te zoeken.
docker-compose.yml
We gebruiken het officiële Elasticsearch-image versie 8.15.0.
discovery.type=single-nodegeeft aan dat we een single-node cluster draaien (voldoende voor lokaal testen);xpack.security.enabled=falseschakelt beveiliging uit zodat u niet met gebruikersnamen en wachtwoorden hoeft te werken;ES_JAVA_OPTSbeperkt het geheugengebruik van het Java-proces.
De service is bereikbaar op poort 9200 via http://localhost:9200.
Kibana
Kibana is een webinterface voor Elasticsearch. Het helpt bij het visualiseren van logs en het maken van dashboards.
docker-compose.yml
We gebruiken het officiële Kibana-image.
Poort 5601 wordt blootgesteld zodat je Kibana in je browser kunt openen via http://localhost:5601.
ELASTICSEARCH_HOSTS wijst Kibana naar onze Elasticsearch-container zodat het data kan ophalen en weergeven.
Definitieve docker-compose.yml
Hier is het volledige Docker Compose-bestand met alle services in de juiste volgorde verbonden:
docker-compose.yml
Dit docker-compose.yml start alle services in de juiste volgorde. De Flask-applicatie genereert logbestanden, Filebeat verzamelt deze en stuurt ze naar Logstash, Logstash verwerkt de logs en stuurt ze door naar Elasticsearch, en Kibana biedt een webinterface voor het bekijken en analyseren van de data.
Het enige wat nog rest is het uitvoeren van het systeem en het testen ervan, wat in het volgende hoofdstuk wordt behandeld.
1. Wat is het belangrijkste doel van Docker Compose in deze opzet?
2. Welke service is verantwoordelijk voor het verzamelen van logbestanden van de Flask-applicatie en het verzenden ervan naar Logstash?
Bedankt voor je feedback!