Dozzle : accédez simplement aux logs de vos conteneurs Docker

Dozzle est une application Web permettant d’accéder au contenu des fichiers logs de conteneurs Docker en toute simplicité.
Dozzle : accédez simplement aux logs de vos conteneurs Docker

Dozzle se présente comme une application Web très légère permettant d’accéder aux logs de conteneurs Docker à travers une interface très simple.
Voyons ensemble comment la déployer et l’utiliser.

Dozzle ?

Dozzle est une application sous licence MIT et dont les sources sont disponibles sur Github. Elle se présente sous la forme d’une image Docker très légère (~4 Mo) et simple à configurer.

Une fois installée, elle offre une interface Web listant les containers visibles et pour chacun d’eux un accès au contenu de leur fichier de logs.

Deux points intéressants sur la relation entre Dozzle et les logs :

  • Ils sont affichés en temps réel,
  • Ils ne sont pas stockés par Dozzle.

Installation

Pré-requis

  • Docker
  • Docker-compose (optionnel)

Configuration basique

Procédons maintenant à son installation en commençant par télécharger l’image Docker :

1docker pull amir20/dozzle:latest

Commençons par découvrir la configuration de la version stable existant au moment où je rédige cet article (v3.10.2) :

FlagEnv VariableDefault
addrDOZZLE_ADDR:8080
baseDOZZLE_BASE/
levelDOZZLE_LEVELinfo
tailSizeDOZZLE_TAILSIZE300
filterDOZZLE_FILTER""
usernameDOZZLE_USERNAME""
passwordDOZZLE_PASSWORD""
keyDOZZLE_KEY""
no-analyticsDOZZLE_NO_ANALYTICSfalse

Nous allons en voir quelques uns, en commençant avec une configuration minimale :

1docker run --name dozzle -d \
2  -p 8080:8080 \
3  --volume=/var/run/docker.sock:/var/run/docker.sock \
4  amir20/dozzle:latest

Notez le montage du fichier /var/run/docker.sock qui est nécessaire afin de pouvoir communiquer avec le démon Docker, et dans le cas présent de récupérer les logs des containers.

Maintenant rendons-nous sur http://localhost:8080 (le port 8080 est celui par défaut, adaptez-le au besoin dans la configuration et dans l’URL) :

Interface de Dozzle

Le panneau de gauche liste les containers visibles, et dispose d’une fonctionnalité de recherche.
Lors de la sélection d’un container, la partie centrale se peuple avec quelques informations, comme le status, la consommation mémoire, l’activité CPU et bien évidemment le contenu des logs !
De votre côté vous verrez au moins le container de Dozzle, et d’avantage si vous en avez d’autres containers actifs.

Avoir cet accès aux logs est très bien. Mais mieux vaut le protéger et ne pas laisser n’importe qui les consulter.

Authentification

Pour cela nous allons définir 3 nouveaux éléments de la configuration : un nom d’utilisateur, un mot de passe et une clé.

  • nom d’utilisateur : disons dozzle à titre d’exemple
  • mot de passe : disons dozzle à titre d’exemple, mais pensez à en choisir un robuste.
  • clé : elle est utilisée pour gérer les sessions et est obligatoire quand un utilisateur et un mot de passe sont renseignés. Disons mydozzlekey pour l’exemple.

On commence par arrêter le précédent conteneur Dozzle :

1docker stop dozzle && docker rm dozzle

Et on recréé le conteneur :

1docker run --name dozzle -d \
2    -p 8080:8080 \
3    --volume=/var/run/docker.sock:/var/run/docker.sock \
4    amir20/dozzle:latest \
5    --username dozzle \
6    --password dozzle \
7    --key mydozzlekey

Cette fois-ci une interface de login est visible sur http://localhost:8080, dans notre cas on renseigne dozzle / dozzle et le tour est joué.

Authentification sur l’interface de Dozzle

Pour d’avantage sécuriser l’application, il convient bien sûr d’utiliser un certificat SSL.

Autres options disponibles

Citons ces deux autres options de configuration possibles :

  • --base / DOZZLE_BASE : il s’agit du chemin de base sur lequel est accessible Dozzle. Par défaut il vaut /, et si vous le changez par /logs il faudra vous rendre sur http://localhost:8080/logs pour accéder à l’interface de Dozzle.
  • --filter / DOZZLE_FILTER : il s’agit d’un filtre définissant les containers pouvant être listés dans l’interface de Dozzle. Cet argument est en fait le même que l’on peut utiliser via docker ps --filter, cf la documentation.
    Exemple: name=dozzle pour ne lister que les containers dont le nom est dozzle.

Pour le reste des options, rendez-vous sur la documentation officielle de Dozzle.

Dozzle : le mot de la fin

Dans un premier temps nous avons vu comment installer et configurer Dozzle afin d’accéder aux logs de containers. Puis dans un second temps, nous avons pu découvrir et utiliser l’interface Web, pour finalement en sécuriser l’accès via utilisateur + mot_de_passe.

Dozzle est donc bien pratique si :

  • on recherche une solution simple et rapide à mettre en place,
  • les containers à surveiller sont tous gouvernés par le même démon Docker,
  • seuls les logs sont désirés.

Ainsi, si vous avez besoin d’aller au delà des fonctionnalités offertes par Dozzle, des alternatives de monitoring plus complètes comme Grafana Loki sont à envisager.