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 alle benodigde containers in één YAML-bestand kunnen worden gedefinieerd en met één opdracht kunnen worden uitgevoerd.
In plaats van voor elke service een aparte docker run
-opdracht te schrijven, worden de configuraties in docker-compose.yml
gezet en alles samen uitgevoerd.
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 instrueert Docker om de container te bouwen vanuit de huidige map (waar uw 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 binnen de container als op uw computer opgeslagen.
De applicatie draait binnen de container op poort 5000, maar we koppelen deze aan poort 5050 op uw machine zodat u deze kunt benaderen via uw browser op http://localhost:5050
.
Filebeat
Filebeat fungeert als een agent die logbestanden bewaakt en nieuwe vermeldingen doorstuurt naar Logstash.
docker-compose.yml
Filebeat draait vanaf het officiële 8.15.0
-image.
Het wordt uitgevoerd als de gebruiker root
zodat het toestemming heeft om logbestanden te lezen.
We koppelen de map ./logs
in alleen-lezen modus en het configuratiebestand filebeat.yml
. Dit geeft aan Filebeat aan welke logs gevolgd moeten worden en waar deze naartoe gestuurd moeten worden.
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.
We koppelen het configuratiebestand logstash.conf
, dat aangeeft hoe Logstash 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 hier snel doorheen te zoeken.
docker-compose.yml
We gebruiken het officiële Elasticsearch-image versie 8.15.0
.
discovery.type=single-node
geeft aan dat we een single-node cluster draaien (voldoende voor lokaal testen);xpack.security.enabled=false
schakelt beveiliging uit zodat u geen gebruikersnamen en wachtwoorden hoeft te gebruiken;ES_JAVA_OPTS
beperkt 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 kunt openen in je browser 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 logs, 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 starten 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.
Awesome!
Completion rate improved to 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 alle benodigde containers in één YAML-bestand kunnen worden gedefinieerd en met één opdracht kunnen worden uitgevoerd.
In plaats van voor elke service een aparte docker run
-opdracht te schrijven, worden de configuraties in docker-compose.yml
gezet en alles samen uitgevoerd.
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 instrueert Docker om de container te bouwen vanuit de huidige map (waar uw 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 binnen de container als op uw computer opgeslagen.
De applicatie draait binnen de container op poort 5000, maar we koppelen deze aan poort 5050 op uw machine zodat u deze kunt benaderen via uw browser op http://localhost:5050
.
Filebeat
Filebeat fungeert als een agent die logbestanden bewaakt en nieuwe vermeldingen doorstuurt naar Logstash.
docker-compose.yml
Filebeat draait vanaf het officiële 8.15.0
-image.
Het wordt uitgevoerd als de gebruiker root
zodat het toestemming heeft om logbestanden te lezen.
We koppelen de map ./logs
in alleen-lezen modus en het configuratiebestand filebeat.yml
. Dit geeft aan Filebeat aan welke logs gevolgd moeten worden en waar deze naartoe gestuurd moeten worden.
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.
We koppelen het configuratiebestand logstash.conf
, dat aangeeft hoe Logstash 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 hier snel doorheen te zoeken.
docker-compose.yml
We gebruiken het officiële Elasticsearch-image versie 8.15.0
.
discovery.type=single-node
geeft aan dat we een single-node cluster draaien (voldoende voor lokaal testen);xpack.security.enabled=false
schakelt beveiliging uit zodat u geen gebruikersnamen en wachtwoorden hoeft te gebruiken;ES_JAVA_OPTS
beperkt 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 kunt openen in je browser 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 logs, 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 starten 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!