Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Konfigurera Docker Compose-filen | Övervakning och Loggning i DevOps
Introduktion till DevOps

bookKonfigurera Docker Compose-filen

Nu när alla nödvändiga konfigurationer är på plats — för Filebeat, Logstash och Flask-applikationen — är det dags att samla dem och köra dem som ett enda system. För detta använder vi Docker Compose.

Note
Definition

Docker Compose är ett verktyg som låter dig definiera alla nödvändiga containrar i en enda YAML-fil och köra dem med ett enda kommando.

Istället för att skriva ett separat docker run-kommando för varje tjänst, skriver du bara deras konfigurationer i docker-compose.yml och kör allt tillsammans.

En enkel docker-compose.yml-fil ser ut så här:

docker-compose.yml

docker-compose.yml

copy

Nu ska vi skapa en komplett fil steg för steg och förklara varje container längs vägen.

Flask-applikation

Detta är din huvudapplikation som genererar loggar.

docker-compose.yml

docker-compose.yml

copy

Detta block instruerar Docker att bygga containern från den aktuella mappen (där din Dockerfile finns).

Containern kommer att heta flask-app. Raden volumes kopplar den lokala mappen ./logs till /logs inuti containern. På så sätt sparas alla loggar som skapas av applikationen både i containern och på din dator.

Applikationen körs inuti containern på port 5000, men vi mappar den till port 5050 på din dator så att du kan komma åt den i din webbläsare via http://localhost:5050.

Filebeat

Filebeat fungerar som en agent som övervakar loggfiler och skickar nya poster till Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat körs från den officiella 8.15.0-imagen. Den körs som användaren root för att ha behörighet att läsa loggfiler.

Vi monterar mappen ./logs i skrivskyddat läge samt konfigurationsfilen filebeat.yml. Detta anger för Filebeat vilka loggar som ska övervakas och vart de ska skickas. depends_on säkerställer att Filebeat startar först efter att applikationen och Logstash körs.

Logstash

Logstash tar emot loggar från Filebeat, bearbetar dem (till exempel tolkar JSON) och vidarebefordrar dem till Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denna container använder den officiella Logstash-avbilden.

Vi monterar konfigurationsfilen logstash.conf, som anger för Logstash hur inkommande loggar ska bearbetas. Containern startar först efter att Elasticsearch körs, eftersom den behöver en destination för de bearbetade loggarna.

Port 5044 exponeras så att Filebeat kan skicka data till Logstash.

Elasticsearch

Elasticsearch lagrar loggar som dokument och möjliggör snabb sökning bland dem.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Elasticsearch-bilden version 8.15.0.

  • discovery.type=single-node anger att vi kör ett en-nods-kluster (tillräckligt för lokal testning);
  • xpack.security.enabled=false inaktiverar säkerhet så att du inte behöver hantera användarnamn och lösenord;
  • ES_JAVA_OPTS begränsar Java-processens minnesanvändning.

Tjänsten är tillgänglig på port 9200 via http://localhost:9200.

Kibana

Kibana är ett webbgränssnitt för Elasticsearch. Det hjälper till att visualisera loggar och skapa instrumentpaneler.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Kibana-imagen.

Port 5601 exponeras så att du kan komma åt Kibana i din webbläsare på http://localhost:5601.

ELASTICSEARCH_HOSTS pekar Kibana till vår Elasticsearch-container så att den kan hämta och visa data.

Slutlig docker-compose.yml

Här är den kompletta Docker Compose-filen med alla tjänster kopplade i rätt ordning:

docker-compose.yml

docker-compose.yml

copy

Denna docker-compose.yml startar alla tjänster i rätt ordning. Flask-applikationen genererar loggar, Filebeat samlar in dem och skickar dem till Logstash, Logstash bearbetar loggarna och vidarebefordrar dem till Elasticsearch, och Kibana tillhandahåller ett webbgränssnitt för att visa och analysera data.

Det enda som återstår är att köra systemet och testa det, vilket kommer att behandlas i nästa kapitel.

1. Vad är huvudsyftet med Docker Compose i denna konfiguration?

2. Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

question mark

Vad är huvudsyftet med Docker Compose i denna konfiguration?

Select the correct answer

question mark

Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 3.7

bookKonfigurera Docker Compose-filen

Svep för att visa menyn

Nu när alla nödvändiga konfigurationer är på plats — för Filebeat, Logstash och Flask-applikationen — är det dags att samla dem och köra dem som ett enda system. För detta använder vi Docker Compose.

Note
Definition

Docker Compose är ett verktyg som låter dig definiera alla nödvändiga containrar i en enda YAML-fil och köra dem med ett enda kommando.

Istället för att skriva ett separat docker run-kommando för varje tjänst, skriver du bara deras konfigurationer i docker-compose.yml och kör allt tillsammans.

En enkel docker-compose.yml-fil ser ut så här:

docker-compose.yml

docker-compose.yml

copy

Nu ska vi skapa en komplett fil steg för steg och förklara varje container längs vägen.

Flask-applikation

Detta är din huvudapplikation som genererar loggar.

docker-compose.yml

docker-compose.yml

copy

Detta block instruerar Docker att bygga containern från den aktuella mappen (där din Dockerfile finns).

Containern kommer att heta flask-app. Raden volumes kopplar den lokala mappen ./logs till /logs inuti containern. På så sätt sparas alla loggar som skapas av applikationen både i containern och på din dator.

Applikationen körs inuti containern på port 5000, men vi mappar den till port 5050 på din dator så att du kan komma åt den i din webbläsare via http://localhost:5050.

Filebeat

Filebeat fungerar som en agent som övervakar loggfiler och skickar nya poster till Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat körs från den officiella 8.15.0-imagen. Den körs som användaren root för att ha behörighet att läsa loggfiler.

Vi monterar mappen ./logs i skrivskyddat läge samt konfigurationsfilen filebeat.yml. Detta anger för Filebeat vilka loggar som ska övervakas och vart de ska skickas. depends_on säkerställer att Filebeat startar först efter att applikationen och Logstash körs.

Logstash

Logstash tar emot loggar från Filebeat, bearbetar dem (till exempel tolkar JSON) och vidarebefordrar dem till Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denna container använder den officiella Logstash-avbilden.

Vi monterar konfigurationsfilen logstash.conf, som anger för Logstash hur inkommande loggar ska bearbetas. Containern startar först efter att Elasticsearch körs, eftersom den behöver en destination för de bearbetade loggarna.

Port 5044 exponeras så att Filebeat kan skicka data till Logstash.

Elasticsearch

Elasticsearch lagrar loggar som dokument och möjliggör snabb sökning bland dem.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Elasticsearch-bilden version 8.15.0.

  • discovery.type=single-node anger att vi kör ett en-nods-kluster (tillräckligt för lokal testning);
  • xpack.security.enabled=false inaktiverar säkerhet så att du inte behöver hantera användarnamn och lösenord;
  • ES_JAVA_OPTS begränsar Java-processens minnesanvändning.

Tjänsten är tillgänglig på port 9200 via http://localhost:9200.

Kibana

Kibana är ett webbgränssnitt för Elasticsearch. Det hjälper till att visualisera loggar och skapa instrumentpaneler.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Kibana-imagen.

Port 5601 exponeras så att du kan komma åt Kibana i din webbläsare på http://localhost:5601.

ELASTICSEARCH_HOSTS pekar Kibana till vår Elasticsearch-container så att den kan hämta och visa data.

Slutlig docker-compose.yml

Här är den kompletta Docker Compose-filen med alla tjänster kopplade i rätt ordning:

docker-compose.yml

docker-compose.yml

copy

Denna docker-compose.yml startar alla tjänster i rätt ordning. Flask-applikationen genererar loggar, Filebeat samlar in dem och skickar dem till Logstash, Logstash bearbetar loggarna och vidarebefordrar dem till Elasticsearch, och Kibana tillhandahåller ett webbgränssnitt för att visa och analysera data.

Det enda som återstår är att köra systemet och testa det, vilket kommer att behandlas i nästa kapitel.

1. Vad är huvudsyftet med Docker Compose i denna konfiguration?

2. Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

question mark

Vad är huvudsyftet med Docker Compose i denna konfiguration?

Select the correct answer

question mark

Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5
some-alt