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) :
Flag | Env Variable | Default |
---|---|---|
addr | DOZZLE_ADDR | :8080 |
base | DOZZLE_BASE | / |
level | DOZZLE_LEVEL | info |
tailSize | DOZZLE_TAILSIZE | 300 |
filter | DOZZLE_FILTER | "" |
username | DOZZLE_USERNAME | "" |
password | DOZZLE_PASSWORD | "" |
key | DOZZLE_KEY | "" |
no-analytics | DOZZLE_NO_ANALYTICS | false |
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) :
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é.
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 viadocker ps --filter
, cf la documentation.
Exemple:name=dozzle
pour ne lister que les containers dont le nom estdozzle
.
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.