Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Configurazione del File Docker Compose | Monitoraggio e Logging in DevOps
Introduzione a DevOps

bookConfigurazione del File Docker Compose

Ora che tutte le configurazioni necessarie sono state completate — per Filebeat, Logstash e l'applicazione Flask — è il momento di unirle ed eseguirle come un unico sistema. Per fare ciò, utilizzeremo Docker Compose.

Note
Definizione

Docker Compose è uno strumento che consente di definire tutti i container necessari in un unico file YAML ed eseguirli con un solo comando.

Invece di scrivere un comando docker run separato per ciascun servizio, basta inserire le loro configurazioni in docker-compose.yml ed eseguire tutto insieme.

Un semplice file docker-compose.yml si presenta così:

docker-compose.yml

docker-compose.yml

copy

Ora, creiamo un file completo passo dopo passo, spiegando ogni container lungo il percorso.

Applicazione Flask

Questa è la tua applicazione principale che genera log.

docker-compose.yml

docker-compose.yml

copy

Questo blocco indica a Docker di costruire il container dalla cartella corrente (dove si trova il tuo Dockerfile).

Il container sarà chiamato flask-app. La riga volumes collega la cartella locale ./logs a /logs all'interno del container. In questo modo, tutti i log creati dall'applicazione vengono salvati sia all'interno del container che sul tuo computer.

L'applicazione viene eseguita all'interno del container sulla porta 5000, ma la mappiamo sulla porta 5050 della tua macchina così puoi accedervi dal browser all'indirizzo http://localhost:5050.

Filebeat

Filebeat agisce come un agente che monitora i file di log e invia le nuove voci a Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat viene eseguito dall'immagine ufficiale 8.15.0. Viene eseguito come utente root per avere i permessi necessari alla lettura dei file di log.

La cartella ./logs viene montata in modalità sola lettura insieme al file di configurazione filebeat.yml. Questo indica a Filebeat quali log monitorare e dove inviarli. depends_on garantisce che Filebeat venga avviato solo dopo che l'applicazione e Logstash sono in esecuzione.

Logstash

Logstash riceve i log da Filebeat, li elabora (ad esempio, analizza JSON) e li inoltra a Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Questo container utilizza l'immagine ufficiale di Logstash.

Montiamo il file di configurazione logstash.conf, che indica a Logstash come elaborare i log in ingresso. Il container viene avviato solo dopo che Elasticsearch è in esecuzione, poiché necessita di una destinazione per i log elaborati.

La porta 5044 è esposta affinché Filebeat possa inviare dati a Logstash.

Elasticsearch

Elasticsearch memorizza i log come documenti e consente di eseguirne rapidamente la ricerca.

docker-compose.yml

docker-compose.yml

copy

Utilizziamo l'immagine ufficiale di Elasticsearch versione 8.15.0.

  • discovery.type=single-node specifica che stiamo eseguendo un cluster a nodo singolo (sufficiente per i test locali);
  • xpack.security.enabled=false disabilita la sicurezza, così non è necessario gestire nomi utente e password;
  • ES_JAVA_OPTS limita l'utilizzo della memoria del processo Java.

Il servizio è accessibile sulla porta 9200 all'indirizzo http://localhost:9200.

Kibana

Kibana è un'interfaccia web per Elasticsearch. Aiuta a visualizzare i log e creare dashboard.

docker-compose.yml

docker-compose.yml

copy

Utilizziamo l'immagine ufficiale di Kibana.

La porta 5601 è esposta, quindi puoi accedere a Kibana dal tuo browser all'indirizzo http://localhost:5601.

ELASTICSEARCH_HOSTS indirizza Kibana al nostro container Elasticsearch affinché possa recuperare e visualizzare i dati.

File docker-compose.yml finale

Di seguito è riportato il file completo di Docker Compose con tutti i servizi collegati nell'ordine corretto:

docker-compose.yml

docker-compose.yml

copy

Questo docker-compose.yml avvia tutti i servizi nell'ordine corretto. L'applicazione Flask genera i log, Filebeat li raccoglie e li invia a Logstash, Logstash elabora i log e li inoltra a Elasticsearch, e Kibana fornisce un'interfaccia web per visualizzare e analizzare i dati.

Tutto ciò che resta da fare è eseguire il sistema e testarlo, argomenti che verranno trattati nel prossimo capitolo.

1. Qual è lo scopo principale di Docker Compose in questa configurazione?

2. Quale servizio è responsabile della raccolta dei file di log dall'applicazione Flask e dell'invio a Logstash?

question mark

Qual è lo scopo principale di Docker Compose in questa configurazione?

Select the correct answer

question mark

Quale servizio è responsabile della raccolta dei file di log dall'applicazione Flask e dell'invio a Logstash?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 3.7

bookConfigurazione del File Docker Compose

Scorri per mostrare il menu

Ora che tutte le configurazioni necessarie sono state completate — per Filebeat, Logstash e l'applicazione Flask — è il momento di unirle ed eseguirle come un unico sistema. Per fare ciò, utilizzeremo Docker Compose.

Note
Definizione

Docker Compose è uno strumento che consente di definire tutti i container necessari in un unico file YAML ed eseguirli con un solo comando.

Invece di scrivere un comando docker run separato per ciascun servizio, basta inserire le loro configurazioni in docker-compose.yml ed eseguire tutto insieme.

Un semplice file docker-compose.yml si presenta così:

docker-compose.yml

docker-compose.yml

copy

Ora, creiamo un file completo passo dopo passo, spiegando ogni container lungo il percorso.

Applicazione Flask

Questa è la tua applicazione principale che genera log.

docker-compose.yml

docker-compose.yml

copy

Questo blocco indica a Docker di costruire il container dalla cartella corrente (dove si trova il tuo Dockerfile).

Il container sarà chiamato flask-app. La riga volumes collega la cartella locale ./logs a /logs all'interno del container. In questo modo, tutti i log creati dall'applicazione vengono salvati sia all'interno del container che sul tuo computer.

L'applicazione viene eseguita all'interno del container sulla porta 5000, ma la mappiamo sulla porta 5050 della tua macchina così puoi accedervi dal browser all'indirizzo http://localhost:5050.

Filebeat

Filebeat agisce come un agente che monitora i file di log e invia le nuove voci a Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat viene eseguito dall'immagine ufficiale 8.15.0. Viene eseguito come utente root per avere i permessi necessari alla lettura dei file di log.

La cartella ./logs viene montata in modalità sola lettura insieme al file di configurazione filebeat.yml. Questo indica a Filebeat quali log monitorare e dove inviarli. depends_on garantisce che Filebeat venga avviato solo dopo che l'applicazione e Logstash sono in esecuzione.

Logstash

Logstash riceve i log da Filebeat, li elabora (ad esempio, analizza JSON) e li inoltra a Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Questo container utilizza l'immagine ufficiale di Logstash.

Montiamo il file di configurazione logstash.conf, che indica a Logstash come elaborare i log in ingresso. Il container viene avviato solo dopo che Elasticsearch è in esecuzione, poiché necessita di una destinazione per i log elaborati.

La porta 5044 è esposta affinché Filebeat possa inviare dati a Logstash.

Elasticsearch

Elasticsearch memorizza i log come documenti e consente di eseguirne rapidamente la ricerca.

docker-compose.yml

docker-compose.yml

copy

Utilizziamo l'immagine ufficiale di Elasticsearch versione 8.15.0.

  • discovery.type=single-node specifica che stiamo eseguendo un cluster a nodo singolo (sufficiente per i test locali);
  • xpack.security.enabled=false disabilita la sicurezza, così non è necessario gestire nomi utente e password;
  • ES_JAVA_OPTS limita l'utilizzo della memoria del processo Java.

Il servizio è accessibile sulla porta 9200 all'indirizzo http://localhost:9200.

Kibana

Kibana è un'interfaccia web per Elasticsearch. Aiuta a visualizzare i log e creare dashboard.

docker-compose.yml

docker-compose.yml

copy

Utilizziamo l'immagine ufficiale di Kibana.

La porta 5601 è esposta, quindi puoi accedere a Kibana dal tuo browser all'indirizzo http://localhost:5601.

ELASTICSEARCH_HOSTS indirizza Kibana al nostro container Elasticsearch affinché possa recuperare e visualizzare i dati.

File docker-compose.yml finale

Di seguito è riportato il file completo di Docker Compose con tutti i servizi collegati nell'ordine corretto:

docker-compose.yml

docker-compose.yml

copy

Questo docker-compose.yml avvia tutti i servizi nell'ordine corretto. L'applicazione Flask genera i log, Filebeat li raccoglie e li invia a Logstash, Logstash elabora i log e li inoltra a Elasticsearch, e Kibana fornisce un'interfaccia web per visualizzare e analizzare i dati.

Tutto ciò che resta da fare è eseguire il sistema e testarlo, argomenti che verranno trattati nel prossimo capitolo.

1. Qual è lo scopo principale di Docker Compose in questa configurazione?

2. Quale servizio è responsabile della raccolta dei file di log dall'applicazione Flask e dell'invio a Logstash?

question mark

Qual è lo scopo principale di Docker Compose in questa configurazione?

Select the correct answer

question mark

Quale servizio è responsabile della raccolta dei file di log dall'applicazione Flask e dell'invio a Logstash?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 5
some-alt