Configuration 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.
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
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
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
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
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
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
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
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 ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
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
Configuration 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.
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
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
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
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
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
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
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
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 ?
Merci pour vos commentaires !