Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Konfigurering av Docker Compose-filen | Overvåking og Logging i DevOps
Introduksjon til DevOps

bookKonfigurering av Docker Compose-filen

Nå som alle nødvendige konfigurasjoner er på plass — for Filebeat, Logstash og Flask-applikasjonen — er det på tide å samle dem og kjøre dem som ett system. For å gjøre dette, bruker vi Docker Compose.

Note
Definisjon

Docker Compose er et verktøy som lar deg definere alle nødvendige containere i én YAML-fil og kjøre dem med én kommando.

I stedet for å skrive en egen docker run-kommando for hver tjeneste, skriver du bare konfigurasjonene deres i docker-compose.yml og kjører alt sammen.

En enkel docker-compose.yml-fil ser slik ut:

docker-compose.yml

docker-compose.yml

copy

La oss nå lage en komplett fil steg for steg, med forklaring av hver container underveis.

Flask-applikasjon

Dette er hovedapplikasjonen din som genererer logger.

docker-compose.yml

docker-compose.yml

copy

Denne blokken instruerer Docker til å bygge containeren fra den nåværende mappen (der din Dockerfile er plassert).

Containeren vil få navnet flask-app. Linjen volumes kobler den lokale mappen ./logs til /logs inne i containeren. På denne måten lagres alle logger som opprettes av applikasjonen både inne i containeren og på din datamaskin.

Applikasjonen kjører inne i containeren på port 5000, men vi mapper den til port 5050 på din maskin slik at du kan få tilgang til den i nettleseren på http://localhost:5050.

Filebeat

Filebeat fungerer som en agent som overvåker loggfiler og sender nye oppføringer til Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat kjøres fra det offisielle 8.15.0-bildet. Den kjøres som root-bruker for å ha tillatelse til å lese loggfiler.

Vi monterer ./logs-mappen i skrivebeskyttet modus og konfigurasjonsfilen filebeat.yml. Dette forteller Filebeat hvilke logger som skal overvåkes og hvor de skal sendes. depends_on sikrer at Filebeat starter først etter at applikasjonen og Logstash kjører.

Logstash

Logstash mottar logger fra Filebeat, behandler dem (for eksempel parser JSON) og videresender dem til Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denne containeren bruker det offisielle Logstash-bildet.

Vi monterer konfigurasjonsfilen logstash.conf, som instruerer Logstash om hvordan innkommende logger skal behandles. Containeren starter først etter at Elasticsearch kjører, siden den trenger et mål for de behandlede loggene.

Port 5044 eksponeres slik at Filebeat kan sende data til Logstash.

Elasticsearch

Elasticsearch lagrer logger som dokumenter og gir mulighet for raskt søk gjennom dem.

docker-compose.yml

docker-compose.yml

copy

Vi bruker det offisielle Elasticsearch-bildet versjon 8.15.0.

  • discovery.type=single-node angir at vi kjører en enkelt-node klynge (tilstrekkelig for lokal testing);
  • xpack.security.enabled=false deaktiverer sikkerhet slik at du slipper å håndtere brukernavn og passord;
  • ES_JAVA_OPTS begrenser Java-prosessens minnebruk.

Tjenesten er tilgjengelig på port 9200 via http://localhost:9200.

Kibana

Kibana er et nettgrensesnitt for Elasticsearch. Det hjelper med å visualisere logger og lage dashbord.

docker-compose.yml

docker-compose.yml

copy

Vi bruker det offisielle Kibana-bildet.

Port 5601 eksponeres slik at du kan få tilgang til Kibana i nettleseren din på http://localhost:5601.

ELASTICSEARCH_HOSTS peker Kibana til vår Elasticsearch-container slik at den kan hente og vise data.

Endelig docker-compose.yml

Her er den komplette Docker Compose-filen med alle tjenester koblet sammen i riktig rekkefølge:

docker-compose.yml

docker-compose.yml

copy

Denne docker-compose.yml starter alle tjenestene i riktig rekkefølge. Flask-applikasjonen genererer logger, Filebeat samler dem inn og sender dem til Logstash, Logstash behandler loggene og videresender dem til Elasticsearch, og Kibana gir et nettgrensesnitt for visning og analyse av dataene.

Det eneste som gjenstår er å kjøre systemet og teste det, noe som vil bli gjennomgått i neste kapittel.

1. Hva er hovedformålet med Docker Compose i denne oppsettet?

2. Hvilken tjeneste er ansvarlig for å samle inn loggfiler fra Flask-applikasjonen og sende dem til Logstash?

question mark

Hva er hovedformålet med Docker Compose i denne oppsettet?

Select the correct answer

question mark

Hvilken tjeneste er ansvarlig for å samle inn loggfiler fra Flask-applikasjonen og sende dem til Logstash?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.7

bookKonfigurering av Docker Compose-filen

Sveip for å vise menyen

Nå som alle nødvendige konfigurasjoner er på plass — for Filebeat, Logstash og Flask-applikasjonen — er det på tide å samle dem og kjøre dem som ett system. For å gjøre dette, bruker vi Docker Compose.

Note
Definisjon

Docker Compose er et verktøy som lar deg definere alle nødvendige containere i én YAML-fil og kjøre dem med én kommando.

I stedet for å skrive en egen docker run-kommando for hver tjeneste, skriver du bare konfigurasjonene deres i docker-compose.yml og kjører alt sammen.

En enkel docker-compose.yml-fil ser slik ut:

docker-compose.yml

docker-compose.yml

copy

La oss nå lage en komplett fil steg for steg, med forklaring av hver container underveis.

Flask-applikasjon

Dette er hovedapplikasjonen din som genererer logger.

docker-compose.yml

docker-compose.yml

copy

Denne blokken instruerer Docker til å bygge containeren fra den nåværende mappen (der din Dockerfile er plassert).

Containeren vil få navnet flask-app. Linjen volumes kobler den lokale mappen ./logs til /logs inne i containeren. På denne måten lagres alle logger som opprettes av applikasjonen både inne i containeren og på din datamaskin.

Applikasjonen kjører inne i containeren på port 5000, men vi mapper den til port 5050 på din maskin slik at du kan få tilgang til den i nettleseren på http://localhost:5050.

Filebeat

Filebeat fungerer som en agent som overvåker loggfiler og sender nye oppføringer til Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat kjøres fra det offisielle 8.15.0-bildet. Den kjøres som root-bruker for å ha tillatelse til å lese loggfiler.

Vi monterer ./logs-mappen i skrivebeskyttet modus og konfigurasjonsfilen filebeat.yml. Dette forteller Filebeat hvilke logger som skal overvåkes og hvor de skal sendes. depends_on sikrer at Filebeat starter først etter at applikasjonen og Logstash kjører.

Logstash

Logstash mottar logger fra Filebeat, behandler dem (for eksempel parser JSON) og videresender dem til Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denne containeren bruker det offisielle Logstash-bildet.

Vi monterer konfigurasjonsfilen logstash.conf, som instruerer Logstash om hvordan innkommende logger skal behandles. Containeren starter først etter at Elasticsearch kjører, siden den trenger et mål for de behandlede loggene.

Port 5044 eksponeres slik at Filebeat kan sende data til Logstash.

Elasticsearch

Elasticsearch lagrer logger som dokumenter og gir mulighet for raskt søk gjennom dem.

docker-compose.yml

docker-compose.yml

copy

Vi bruker det offisielle Elasticsearch-bildet versjon 8.15.0.

  • discovery.type=single-node angir at vi kjører en enkelt-node klynge (tilstrekkelig for lokal testing);
  • xpack.security.enabled=false deaktiverer sikkerhet slik at du slipper å håndtere brukernavn og passord;
  • ES_JAVA_OPTS begrenser Java-prosessens minnebruk.

Tjenesten er tilgjengelig på port 9200 via http://localhost:9200.

Kibana

Kibana er et nettgrensesnitt for Elasticsearch. Det hjelper med å visualisere logger og lage dashbord.

docker-compose.yml

docker-compose.yml

copy

Vi bruker det offisielle Kibana-bildet.

Port 5601 eksponeres slik at du kan få tilgang til Kibana i nettleseren din på http://localhost:5601.

ELASTICSEARCH_HOSTS peker Kibana til vår Elasticsearch-container slik at den kan hente og vise data.

Endelig docker-compose.yml

Her er den komplette Docker Compose-filen med alle tjenester koblet sammen i riktig rekkefølge:

docker-compose.yml

docker-compose.yml

copy

Denne docker-compose.yml starter alle tjenestene i riktig rekkefølge. Flask-applikasjonen genererer logger, Filebeat samler dem inn og sender dem til Logstash, Logstash behandler loggene og videresender dem til Elasticsearch, og Kibana gir et nettgrensesnitt for visning og analyse av dataene.

Det eneste som gjenstår er å kjøre systemet og teste det, noe som vil bli gjennomgått i neste kapittel.

1. Hva er hovedformålet med Docker Compose i denne oppsettet?

2. Hvilken tjeneste er ansvarlig for å samle inn loggfiler fra Flask-applikasjonen og sende dem til Logstash?

question mark

Hva er hovedformålet med Docker Compose i denne oppsettet?

Select the correct answer

question mark

Hvilken tjeneste er ansvarlig for å samle inn loggfiler fra Flask-applikasjonen og sende dem til Logstash?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 5
some-alt