Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Konfiguration af Docker Compose-filen | Overvågning og Logføring i DevOps
Introduktion til DevOps

bookKonfiguration af Docker Compose-filen

Nu hvor alle nødvendige konfigurationer er på plads — for Filebeat, Logstash og Flask-applikationen — er det tid til at samle dem og køre dem som ét samlet system. Til dette formål anvender vi Docker Compose.

Note
Definition

Docker Compose er et værktøj, der gør det muligt at definere alle nødvendige containere i én YAML-fil og starte dem med én kommando.

I stedet for at skrive en separat docker run-kommando for hver service, angives deres konfigurationer blot i docker-compose.yml, hvorefter alt startes samlet.

En simpel docker-compose.yml-fil ser således ud:

docker-compose.yml

docker-compose.yml

copy

Lad os nu oprette en komplet fil trin for trin og forklare hver container undervejs.

Flask-applikation

Dette er din hovedapplikation, der genererer logs.

docker-compose.yml

docker-compose.yml

copy

Dette afsnit instruerer Docker i at bygge containeren fra den aktuelle mappe (hvor din Dockerfile er placeret).

Containeren får navnet flask-app. Linjen volumes forbinder den lokale ./logs mappe til /logs inde i containeren. På denne måde gemmes alle logs, der oprettes af applikationen, både inde i containeren og på din computer.

Applikationen kører inde i containeren på port 5000, men vi mapper den til port 5050 på din maskine, så du kan tilgå den i din browser på http://localhost:5050.

Filebeat

Filebeat fungerer som en agent, der overvåger logfiler og sender nye poster til Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat kører fra det officielle 8.15.0-image. Den kører som root-bruger for at have tilladelse til at læse logfiler.

Vi tilknytter mappen ./logs i skrivebeskyttet tilstand samt konfigurationsfilen filebeat.yml. Dette instruerer Filebeat om, hvilke logs der skal overvåges, og hvor de skal sendes hen. depends_on sikrer, at Filebeat først starter, når applikationen og Logstash kører.

Logstash

Logstash modtager logs fra Filebeat, behandler dem (for eksempel ved at parse JSON), og videresender dem til Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denne container anvender det officielle Logstash-image.

Vi monterer konfigurationsfilen logstash.conf, som angiver, hvordan Logstash skal behandle indkommende logs. Containeren starter først, når Elasticsearch kører, da den har brug for en destination til de behandlede logs.

Port 5044 eksponeres, så Filebeat kan sende data til Logstash.

Elasticsearch

Elasticsearch gemmer logs som dokumenter og muliggør hurtig søgning i dem.

docker-compose.yml

docker-compose.yml

copy

Vi bruger det officielle Elasticsearch-image version 8.15.0.

  • discovery.type=single-node angiver, at vi kører et enkelt-node cluster (tilstrækkeligt til lokal test);
  • xpack.security.enabled=false deaktiverer sikkerhed, så du ikke behøver at håndtere brugernavne og adgangskoder;
  • ES_JAVA_OPTS begrænser Java-processens hukommelsesforbrug.

Tjenesten er tilgængelig på port 9200 via http://localhost:9200.

Kibana

Kibana er et webinterface til Elasticsearch. Det hjælper med at visualisere logs og oprette dashboards.

docker-compose.yml

docker-compose.yml

copy

Vi bruger det officielle Kibana-image.

Port 5601 er eksponeret, så du kan få adgang til Kibana i din browser på http://localhost:5601.

ELASTICSEARCH_HOSTS peger Kibana mod vores Elasticsearch-container, så den kan hente og vise data.

Endelig docker-compose.yml

Her er den komplette Docker Compose-fil med alle tjenester forbundet i den korrekte rækkefølge:

docker-compose.yml

docker-compose.yml

copy

Denne docker-compose.yml starter alle tjenesterne i den korrekte rækkefølge. Flask-applikationen genererer logs, Filebeat indsamler dem og sender dem til Logstash, Logstash behandler logs og videresender dem til Elasticsearch, og Kibana giver en webgrænseflade til visning og analyse af dataene.

Det eneste der mangler, er at køre systemet og teste det, hvilket vil blive gennemgået i næste kapitel.

1. Hvad er hovedformålet med Docker Compose i denne opsætning?

2. Hvilken tjeneste er ansvarlig for at indsamle logfiler fra Flask-applikationen og sende dem til Logstash?

question mark

Hvad er hovedformålet med Docker Compose i denne opsætning?

Select the correct answer

question mark

Hvilken tjeneste er ansvarlig for at indsamle logfiler fra Flask-applikationen og sende dem til Logstash?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.7

bookKonfiguration af Docker Compose-filen

Stryg for at vise menuen

Nu hvor alle nødvendige konfigurationer er på plads — for Filebeat, Logstash og Flask-applikationen — er det tid til at samle dem og køre dem som ét samlet system. Til dette formål anvender vi Docker Compose.

Note
Definition

Docker Compose er et værktøj, der gør det muligt at definere alle nødvendige containere i én YAML-fil og starte dem med én kommando.

I stedet for at skrive en separat docker run-kommando for hver service, angives deres konfigurationer blot i docker-compose.yml, hvorefter alt startes samlet.

En simpel docker-compose.yml-fil ser således ud:

docker-compose.yml

docker-compose.yml

copy

Lad os nu oprette en komplet fil trin for trin og forklare hver container undervejs.

Flask-applikation

Dette er din hovedapplikation, der genererer logs.

docker-compose.yml

docker-compose.yml

copy

Dette afsnit instruerer Docker i at bygge containeren fra den aktuelle mappe (hvor din Dockerfile er placeret).

Containeren får navnet flask-app. Linjen volumes forbinder den lokale ./logs mappe til /logs inde i containeren. På denne måde gemmes alle logs, der oprettes af applikationen, både inde i containeren og på din computer.

Applikationen kører inde i containeren på port 5000, men vi mapper den til port 5050 på din maskine, så du kan tilgå den i din browser på http://localhost:5050.

Filebeat

Filebeat fungerer som en agent, der overvåger logfiler og sender nye poster til Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat kører fra det officielle 8.15.0-image. Den kører som root-bruger for at have tilladelse til at læse logfiler.

Vi tilknytter mappen ./logs i skrivebeskyttet tilstand samt konfigurationsfilen filebeat.yml. Dette instruerer Filebeat om, hvilke logs der skal overvåges, og hvor de skal sendes hen. depends_on sikrer, at Filebeat først starter, når applikationen og Logstash kører.

Logstash

Logstash modtager logs fra Filebeat, behandler dem (for eksempel ved at parse JSON), og videresender dem til Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denne container anvender det officielle Logstash-image.

Vi monterer konfigurationsfilen logstash.conf, som angiver, hvordan Logstash skal behandle indkommende logs. Containeren starter først, når Elasticsearch kører, da den har brug for en destination til de behandlede logs.

Port 5044 eksponeres, så Filebeat kan sende data til Logstash.

Elasticsearch

Elasticsearch gemmer logs som dokumenter og muliggør hurtig søgning i dem.

docker-compose.yml

docker-compose.yml

copy

Vi bruger det officielle Elasticsearch-image version 8.15.0.

  • discovery.type=single-node angiver, at vi kører et enkelt-node cluster (tilstrækkeligt til lokal test);
  • xpack.security.enabled=false deaktiverer sikkerhed, så du ikke behøver at håndtere brugernavne og adgangskoder;
  • ES_JAVA_OPTS begrænser Java-processens hukommelsesforbrug.

Tjenesten er tilgængelig på port 9200 via http://localhost:9200.

Kibana

Kibana er et webinterface til Elasticsearch. Det hjælper med at visualisere logs og oprette dashboards.

docker-compose.yml

docker-compose.yml

copy

Vi bruger det officielle Kibana-image.

Port 5601 er eksponeret, så du kan få adgang til Kibana i din browser på http://localhost:5601.

ELASTICSEARCH_HOSTS peger Kibana mod vores Elasticsearch-container, så den kan hente og vise data.

Endelig docker-compose.yml

Her er den komplette Docker Compose-fil med alle tjenester forbundet i den korrekte rækkefølge:

docker-compose.yml

docker-compose.yml

copy

Denne docker-compose.yml starter alle tjenesterne i den korrekte rækkefølge. Flask-applikationen genererer logs, Filebeat indsamler dem og sender dem til Logstash, Logstash behandler logs og videresender dem til Elasticsearch, og Kibana giver en webgrænseflade til visning og analyse af dataene.

Det eneste der mangler, er at køre systemet og teste det, hvilket vil blive gennemgået i næste kapitel.

1. Hvad er hovedformålet med Docker Compose i denne opsætning?

2. Hvilken tjeneste er ansvarlig for at indsamle logfiler fra Flask-applikationen og sende dem til Logstash?

question mark

Hvad er hovedformålet med Docker Compose i denne opsætning?

Select the correct answer

question mark

Hvilken tjeneste er ansvarlig for at indsamle logfiler fra Flask-applikationen og sende dem til Logstash?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 5
some-alt