Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Configuration du fichier Docker Compose | Surveillance et Journalisation dans DevOps
Introduction à DevOps

bookConfiguration du fichier Docker Compose

Maintenant que toutes les configurations nécessaires sont en place — pour Filebeat, Logstash et l'application Flask — il est temps de les réunir et de les exécuter comme un système unique. Pour cela, nous utiliserons Docker Compose.

Note
Définition

Docker Compose est un outil qui permet de définir tous les conteneurs requis dans un seul fichier YAML et de les exécuter avec une seule commande.

Au lieu d'écrire une commande docker run séparée pour chaque service, il suffit d'écrire leurs configurations dans docker-compose.yml et d'exécuter l'ensemble simultanément.

Un fichier docker-compose.yml simple ressemble à ceci :

docker-compose.yml

docker-compose.yml

copy

Créons maintenant un fichier complet étape par étape, en expliquant chaque conteneur au fur et à mesure.

Application Flask

Il s'agit de l'application principale qui génère des journaux.

docker-compose.yml

docker-compose.yml

copy

Ce bloc indique à Docker de construire le conteneur à partir du dossier courant (là où se trouve votre Dockerfile).

Le conteneur sera nommé flask-app. La ligne volumes connecte le dossier local ./logs au dossier /logs à l'intérieur du conteneur. Ainsi, tous les journaux créés par l'application sont enregistrés à la fois dans le conteneur et sur votre ordinateur.

L'application s'exécute dans le conteneur sur le port 5000, mais nous le faisons correspondre au port 5050 sur votre machine afin que vous puissiez y accéder dans votre navigateur à l'adresse http://localhost:5050.

Filebeat

Filebeat agit comme un agent qui surveille les fichiers de journalisation et envoie les nouvelles entrées à Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat s'exécute à partir de l'image officielle 8.15.0. Il fonctionne en tant qu'utilisateur root afin d'avoir les permissions nécessaires pour lire les fichiers journaux.

Nous montons le dossier ./logs en mode lecture seule ainsi que le fichier de configuration filebeat.yml. Cela indique à Filebeat quels journaux surveiller et où les envoyer. La directive depends_on garantit que Filebeat démarre uniquement après le lancement de l'application et de Logstash.

Logstash

Logstash reçoit les journaux de Filebeat, les traite (par exemple, analyse le JSON) et les transmet à Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Ce conteneur utilise l'image officielle Logstash.

Nous montons le fichier de configuration logstash.conf, qui indique à Logstash comment traiter les journaux entrants. Le conteneur démarre uniquement après le lancement de Elasticsearch, car il a besoin d'une destination pour les journaux traités.

Le port 5044 est exposé afin que Filebeat puisse envoyer des données à Logstash.

Elasticsearch

Elasticsearch stocke les journaux sous forme de documents et permet d'effectuer des recherches rapides parmi eux.

docker-compose.yml

docker-compose.yml

copy

Nous utilisons l’image officielle Elasticsearch version 8.15.0.

  • discovery.type=single-node indique que nous exécutons un cluster à nœud unique (suffisant pour les tests locaux) ;
  • xpack.security.enabled=false désactive la sécurité afin d’éviter la gestion des noms d’utilisateur et des mots de passe ;
  • ES_JAVA_OPTS limite l’utilisation de la mémoire par le processus Java.

Le service est accessible sur le port 9200 à l’adresse http://localhost:9200.

Kibana

Kibana est une interface web pour Elasticsearch. Elle permet de visualiser les journaux et de créer des tableaux de bord.

docker-compose.yml

docker-compose.yml

copy

Nous utilisons l’image officielle de Kibana.

Le port 5601 est exposé afin que vous puissiez accéder à Kibana dans votre navigateur à l’adresse http://localhost:5601.

ELASTICSEARCH_HOSTS oriente Kibana vers notre conteneur Elasticsearch afin qu’il puisse récupérer et afficher les données.

Fichier docker-compose.yml final

Voici le fichier complet Docker Compose avec tous les services connectés dans le bon ordre :

docker-compose.yml

docker-compose.yml

copy

Ce fichier docker-compose.yml démarre tous les services dans le bon ordre. L’application Flask génère des journaux, Filebeat les collecte et les envoie à Logstash, Logstash traite les journaux et les transmet à Elasticsearch, et Kibana fournit une interface web pour visualiser et analyser les données.

Il ne reste plus qu’à exécuter le système et à le tester, ce qui sera abordé dans le prochain chapitre.

1. Quel est le principal objectif de Docker Compose dans cette configuration ?

2. Quel service est responsable de la collecte des fichiers journaux de l'application Flask et de leur envoi à Logstash ?

question mark

Quel est le principal objectif de Docker Compose dans cette configuration ?

Select the correct answer

question mark

Quel service est responsable de la collecte des fichiers journaux de l'application Flask et de leur envoi à Logstash ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 3.7

bookConfiguration du fichier Docker Compose

Glissez pour afficher le menu

Maintenant que toutes les configurations nécessaires sont en place — pour Filebeat, Logstash et l'application Flask — il est temps de les réunir et de les exécuter comme un système unique. Pour cela, nous utiliserons Docker Compose.

Note
Définition

Docker Compose est un outil qui permet de définir tous les conteneurs requis dans un seul fichier YAML et de les exécuter avec une seule commande.

Au lieu d'écrire une commande docker run séparée pour chaque service, il suffit d'écrire leurs configurations dans docker-compose.yml et d'exécuter l'ensemble simultanément.

Un fichier docker-compose.yml simple ressemble à ceci :

docker-compose.yml

docker-compose.yml

copy

Créons maintenant un fichier complet étape par étape, en expliquant chaque conteneur au fur et à mesure.

Application Flask

Il s'agit de l'application principale qui génère des journaux.

docker-compose.yml

docker-compose.yml

copy

Ce bloc indique à Docker de construire le conteneur à partir du dossier courant (là où se trouve votre Dockerfile).

Le conteneur sera nommé flask-app. La ligne volumes connecte le dossier local ./logs au dossier /logs à l'intérieur du conteneur. Ainsi, tous les journaux créés par l'application sont enregistrés à la fois dans le conteneur et sur votre ordinateur.

L'application s'exécute dans le conteneur sur le port 5000, mais nous le faisons correspondre au port 5050 sur votre machine afin que vous puissiez y accéder dans votre navigateur à l'adresse http://localhost:5050.

Filebeat

Filebeat agit comme un agent qui surveille les fichiers de journalisation et envoie les nouvelles entrées à Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat s'exécute à partir de l'image officielle 8.15.0. Il fonctionne en tant qu'utilisateur root afin d'avoir les permissions nécessaires pour lire les fichiers journaux.

Nous montons le dossier ./logs en mode lecture seule ainsi que le fichier de configuration filebeat.yml. Cela indique à Filebeat quels journaux surveiller et où les envoyer. La directive depends_on garantit que Filebeat démarre uniquement après le lancement de l'application et de Logstash.

Logstash

Logstash reçoit les journaux de Filebeat, les traite (par exemple, analyse le JSON) et les transmet à Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Ce conteneur utilise l'image officielle Logstash.

Nous montons le fichier de configuration logstash.conf, qui indique à Logstash comment traiter les journaux entrants. Le conteneur démarre uniquement après le lancement de Elasticsearch, car il a besoin d'une destination pour les journaux traités.

Le port 5044 est exposé afin que Filebeat puisse envoyer des données à Logstash.

Elasticsearch

Elasticsearch stocke les journaux sous forme de documents et permet d'effectuer des recherches rapides parmi eux.

docker-compose.yml

docker-compose.yml

copy

Nous utilisons l’image officielle Elasticsearch version 8.15.0.

  • discovery.type=single-node indique que nous exécutons un cluster à nœud unique (suffisant pour les tests locaux) ;
  • xpack.security.enabled=false désactive la sécurité afin d’éviter la gestion des noms d’utilisateur et des mots de passe ;
  • ES_JAVA_OPTS limite l’utilisation de la mémoire par le processus Java.

Le service est accessible sur le port 9200 à l’adresse http://localhost:9200.

Kibana

Kibana est une interface web pour Elasticsearch. Elle permet de visualiser les journaux et de créer des tableaux de bord.

docker-compose.yml

docker-compose.yml

copy

Nous utilisons l’image officielle de Kibana.

Le port 5601 est exposé afin que vous puissiez accéder à Kibana dans votre navigateur à l’adresse http://localhost:5601.

ELASTICSEARCH_HOSTS oriente Kibana vers notre conteneur Elasticsearch afin qu’il puisse récupérer et afficher les données.

Fichier docker-compose.yml final

Voici le fichier complet Docker Compose avec tous les services connectés dans le bon ordre :

docker-compose.yml

docker-compose.yml

copy

Ce fichier docker-compose.yml démarre tous les services dans le bon ordre. L’application Flask génère des journaux, Filebeat les collecte et les envoie à Logstash, Logstash traite les journaux et les transmet à Elasticsearch, et Kibana fournit une interface web pour visualiser et analyser les données.

Il ne reste plus qu’à exécuter le système et à le tester, ce qui sera abordé dans le prochain chapitre.

1. Quel est le principal objectif de Docker Compose dans cette configuration ?

2. Quel service est responsable de la collecte des fichiers journaux de l'application Flask et de leur envoi à Logstash ?

question mark

Quel est le principal objectif de Docker Compose dans cette configuration ?

Select the correct answer

question mark

Quel service est responsable de la collecte des fichiers journaux de l'application Flask et de leur envoi à Logstash ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 5
some-alt