Visualiser les logs Docker en temps réel avec Dozzle

Infrastructure as Code

Visualiser les logs Docker en temps réel avec Dozzle

Pour consulter les journaux d’événements (logs) de vos conteneurs Docker, vous pouvez utiliser la ligne de commande (, par exemple), mais cela peut rapidement devenir illisible et inefficace. C’est ici qu’intervient un outil comme Dozzle : une interface web épurée pour suivre en temps réel les journaux de vos conteneurs Docker.

Cet outil open source répond à plusieurs usages concrets, puisqu’il permet de visualiser l’activité des conteneurs, tout en permettant de mettre en évidence les erreurs. Ce qui peut être très utile pour comprendre d’où vient un dysfonctionnement ou une erreur dans une application. Contrairement à des solutions de monitoring complètes, Dozzle se concentre sur une seule chose : les journaux.

Son périmètre fonctionnel est donc inférieur à des outils comme Portainer et Dockhand, alors qu’il serait plus complémentaire avec un outil comme Beszel qui se concentre sur de la supervision pure.

L’application Dozzle fonctionne elle-même comme un conteneur. Pour lire les informations des autres conteneurs, elle nécessite un accès au socket Docker (). C’est par ce canal que Dozzle récupère les flux et de vos services pour les afficher dans une interface web.

Parmi les fonctionnalités essentielles de Dozzle, on peut citer :

  • Temps réel : les logs d’un ou plusieurs conteneurs défilent via WebSocket.
  • Filtres intelligents : recherche textuelle et regex (expressions régulières) pour isoler des erreurs spécifiques.
  • Multi-hôtes : capacité de se connecter à plusieurs agents Docker.
  • Mode “Ecran partagé” : visualisation de plusieurs conteneurs côte à côte, avec la possibilité d’épingler certains conteneurs (favoris).
  • Statistiques légères : affichage de l’utilisation mémoire et CPU instantanée.
  • Notifications et webhooks : déclencher une alerte sur un canal (Discord, Slack, Ntfy, etc.) de votre choix lorsqu’un événement spécifique est détecté.

Note : Dozzle supporte également Podman, ainsi que Kubernetes et Docker Swarm.

Installation de Dozzle avec Docker

Configuration de l’authentification (users.yml)

Par défaut, Dozzle est accessible sans authentification. La façon la plus simple d’ajouter une page d’authentification sans dépendre d’une autre solution, c’est de déclarer les utilisateurs autorisés dans un fichier YAML. Ce fichier doit être nommé ou .

Dozzle ne stocke pas les mots de passe en clair. Il est nécessaire de fournir un hash (via bcrypt). Je vous invite à utiliser l’outil Bcrypt de la suite IT-Tools pour générer cette valeur.

Vous devez créer un fichier avec ce contenu :


Cette configuration va créer un seul utilisateur nommé “florian” (attention cette valeur est précisée deux fois). Un mot de passe est spécifié, ainsi qu’un e-mail. Vous pouvez aussi jouer sur deux autres directives :

  • : pour que ce compte puisse consulter uniquement les informations de conteneurs spécifiques,
  • : pour limiter les droits de cet utilisateur, ici il aura tous les droits (voir les rôles sur cette page).

Le fichier Docker Compose de Dozzle pour Linux

Avant de créer le fichier Docker Compose, nous devons préparer l’arborescence de dossiers, notamment pour la gestion des utilisateurs. Si vous ne souhaitez pas protéger l’interface de Dozzle par une page d’authentification (ou si vous gérez ça en externe, avec Tinyauth, par exemple), il n’est pas nécessaire de créer le dossier .


Attention, si vous avez créé un fichier , vous devez le déposer à la racine du dossier .

Voici le fichier que vous pouvez créer pour déployer Dozzle :


Voici des explications sur cette configuration :

  • Volumes :

    • : c’est la ligne la plus importante. Sans elle, Dozzle ne fonctionnera pas. Elle lui permet de communiquer avec le démon Docker de l’hôte pour lister les conteneurs et capter les flux de sortie.
    • : nous montons le fichier créé précédemment. Le flag (Read-Only) est une bonne pratique de sécurité, car le conteneur n’a pas besoin de modifier ce fichier, seulement de le lire.
  • Ports :

    • : l’interface sera accessible sur le port 7070 de votre machine. Si ce port est déjà occupé, modifiez la partie gauche. C’est ce que j’ai fait, car par défaut, le port 8080 est spécifié.
  • Environment :

    • : par défaut, Dozzle est un outil de “lecture seule”. En passant cette variable à , vous ajoutez des capacités d’administration de base Dozzle. En effet, des boutons apparaîtront dans l’interface pour redémarrer ou arrêter un conteneur spécifique.
    • : indique à l’application d’effectuer une authentification locale via le fichier monté dans .

Voici une autre configuration basée sur Traefik (reverse proxy) et Tinyauth (authentification).


Dozzle intègre une petite fonctionnalité de tracking pour collecter la configuration des utilisateurs de façon anonyme. Pour désactiver cette fonctionnalité, ajoutez cette variable d’environnement :


Enregistrez et fermez le fichier.

Lancez la construction du projet.


Ouvrez votre navigateur et accédez à (ou le nom de domaine, si vous utilisez un reverse proxy). L’interface de connexion de Dozzle doit apparaître.

Le fichier Compose Compose de Dozzle pour Synology

Si vous installez Dozzle sur un NAS Synology à l’aide de Container Manager, créez le dossier , puis le sous-dossier (pour stocker le fichier de configuration ) directement sous .

À l’aide de Container Manager, créez un nouveau projet. Nommez ce projet “dozzle” et indiquez le chemin “/docker/dozzle“. Vous devez également préciser le code du fichier Docker Compose.

Voici le code à insérer :


Voici des explications sur cette configuration :

  • Volumes :

    • : c’est la ligne la plus importante. Sans elle, Dozzle ne fonctionnera pas. Elle lui permet de communiquer avec le démon Docker de l’hôte pour lister les conteneurs et capter les flux de sortie.
    • : nous montons le fichier créé précédemment. Le flag (Read-Only) est une bonne pratique de sécurité, car le conteneur n’a pas besoin de modifier ce fichier, seulement de le lire.
  • Ports :

    • : l’interface sera accessible sur le port 7070 de votre machine. Si ce port est déjà occupé, modifiez la partie gauche. C’est ce que j’ai fait, car par défaut, le port 8080 est spécifié.
  • Environment :

    • : par défaut, Dozzle est un outil de “lecture seule”. En passant cette variable à , vous ajoutez des capacités d’administration de base Dozzle. En effet, des boutons apparaîtront dans l’interface pour redémarrer ou arrêter un conteneur spécifique.
    • : indique à l’application d’effectuer une authentification locale via le fichier monté dans .

Poursuivez jusqu’à la fin afin de lancer la construction du projet.

Ouvrez votre navigateur et accédez à . L’interface de connexion de Dozzle doit apparaître.

Découverte de Dozzle

L’interface de Dozzle est divisée en deux zones principales :

  1. Le panneau latéral gauche : liste tous les conteneurs en cours d’exécution (et ceux arrêtés si l’option est cochée). Vous y voyez leur état (vert pour healthy, par exemple).
  2. La zone centrale : affiche le flux de logs, sauf sur la page d’accueil où vous avez la liste de vos environnements et des conteneurs.

Voici un exemple sur l’instance Dozzle fraîchement déployée :

Si vous cliquez sur un conteneur dans la liste au centre ou celle sur la gauche, vous verrez les journaux de ce conteneur. Ensuite, en appuyant sur le bouton en haut à droite (point rouge et point bleu), un menu s’affichera. Il intègre les boutons d’actions, comme ici pour arrêter ou redémarrer le conteneur. D’autres actions sont possibles :

  • Téléchargement : obtenir une archive ZIP qui contient un fichier avec les journaux bruts. Il y a un fichier de log par conteneur sélectionné (intéressant pour avoir tous les logs d’une stack Docker Compose)
  • Chercher : effectuer une recherche selon une chaine de caractères ou alors une expression régulière, pour aller plus loin.
  • SQL Analytics : interroger les journaux comme s’il s’agissait d’une base SQL, avec des requêtes SQL, donc, grâce à la lecture des champs (via JSON). La fonctionnalité est détaillée sur cette page.
  • Streams : afficher uniquement ce qui provient du flux de sortie ou du flux de sortie .
  • Levels : afficher uniquement les journaux correspondants à un niveau de log spécifique. Par exemple, cela permet de ne pas afficher les événements où le log level est sur , afin d’afficher plutôt les avertissements et les erreurs.

Avec Dozzle, les journaux de Docker sont agréables à lire grâce à la mise en forme permettant d’identifier facilement : l’horodatage, le type de message (log level) et, bien entendu, le contenu complet du message.

En cliquant sur ce bouton, vous pouvez afficher les logs de tous les conteneurs d’une stack Docker Compose. Ainsi, un tag viendra s’ajouter au début de chaque ligne pour permettre d’identifier à quel conteneur est associée chaque ligne de log. Une couleur est associée à chaque conteneur.

Dans le même esprit, vous pouvez afficher les journaux de tous les conteneurs, puis effectuer une recherche globale.

Vous pouvez également scinder l’interface en plusieurs colonnes. Cela permet d’afficher les logs de plusieurs conteneurs côte à côte.

Enfin, à titre d’information, voici les quelques fonctions disponibles dans les paramètres de l’application. En réalité, la solution Dozzle se configure plutôt via les variables d’environnement et la configuration Docker Compose (ou les paramètres du ).

Dozzle : comment créer une alerte ?

La version 10 de Dozzle a introduit une nouveauté importante : les alertes. Elles sont configurables grâce à deux conditions :

  • Conteneurs : sélectionner quel(s) conteneur(s) surveiller.
  • Événements : déterminer quels sont les événements qui doivent déclencher une alerte.

Afin de pouvoir utiliser le mécanisme d’alerte, vous devez impérativement disposer du répertoire (persistant) au niveau du conteneur Dozzle.


Ensuite, depuis l’interface de Dozzle, ajoutez une nouvelle destination pour déterminer où seront envoyées les alertes. Pour cela, cliquez sur la cloche en haut à droite pour accéder à l’interface de configuration des notifications. Elle permet d’effectuer les actions suivantes :

  • Activer/Désactiver les alertes (conservation de la config).
  • Éditer les règles de détection et les destinations.
  • Consulter les statistiques (volume, cibles, horodatage).
  • Supprimer les alertes inutiles.

Pour commencer, cliquez sur le bouton “Ajouter une destination“.

  • Type : utilisez “HTTP Webhook“, sauf si vous désirez vous lier à Dozzle Cloud, mais c’est une autre approche.
  • Nom : nommez ce canal de diffusion des notifications.
  • URL du Webhook : il peut s’agir d’une adresse publique ou d’une adresse interne si Dozzle et Ntfy sont sur le même hôte Docker, voire sur le même réseau Docker. Voici deux exemples d’URL :

  • Modèle : déterminez le format des notifications envoyées. Un système de variables internes à Dozzle permet de personnaliser le contenu.


Remarque : le sujet Ntfy ciblé par ma requête est protégé, je dois donc m’authentifier. Pour cela, il faut préciser les identifiants avec un encodage en base64. Depuis votre Terminal Linux, vous pouvez calculer la valeur dans le bon format via la commande ci-dessous. Insérez la valeur obtenue à la place de l’emplacement .


Ensuite, au niveau de la section “Alertes“, vous pouvez ajouter vos nouvelles déclarations d’alertes. Le système de filtres pour créer les alertes est très flexible, notamment en permettant de jouer sur plusieurs critères (nom, image, état, nom d’hôte, labels) avec différents opérateurs de comparaison. Les filtres sont dynamiques et il y a comme un système d’auto-complétion très pratique, et en plus de cela, les logs correspondants sont affichés dans la section “Aperçu“.

Vous pouvez créer de multiples alertes, et pour chaque alerte, définir une destination spécifique. Cela permet d’orienter facilement les messages vers différents flux de notifications.

La documentation de Dozzle présente bien les différents filtres utilisables :

Une fois l’alerte créée, il ne reste plus qu’à attendre l’arrivée de la première notification. Elles seront visibles via votre navigateur Web ou sur votre mobile, si vous avez installé l’application Ntfy. Voici un exemple :

Conclusion

Dozzle est un excellent ajout à la boîte à outils de tout administrateur système gérant des environnements Docker. Sa légèreté et sa facilité de mise en œuvre en font un outil pratique pour analyser facilement les logs d’un ensemble de conteneurs Docker. En quelques lignes de YAML, vous disposez d’une solution légère pour garder un œil sur vos conteneurs, tout en ayant la possibilité de recevoir des alertes personnalisées.

SOURCE