Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Configureren van het Docker Compose-bestand | Monitoring & Logging in DevOps
Introductie tot DevOps

bookHet 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.

Note
Definitie

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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?

question mark

Wat is het belangrijkste doel van Docker Compose in deze opzet?

Select the correct answer

question mark

Welke service is verantwoordelijk voor het verzamelen van logbestanden van de Flask-applicatie en het verzenden ervan naar Logstash?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.7

bookHet 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.

Note
Definitie

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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

docker-compose.yml

copy

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?

question mark

Wat is het belangrijkste doel van Docker Compose in deze opzet?

Select the correct answer

question mark

Welke service is verantwoordelijk voor het verzamelen van logbestanden van de Flask-applicatie en het verzenden ervan naar Logstash?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 5
some-alt