Logspout est un conteneur Docker ayant la particularité de rassembler tous les logs émis par les autres conteneurs déployés sur le même démon Docker, et de les router vers une/des destination(s) spécifiques. Son utilisation offre plus de possibilité que celles offertes par les logs driver de docker. De plus, toutes les tâches de “rassemblement” des logs et leur envoi sont entièrement prises en charge par le conteneur Logspout. Aucune configuration n’est requise sur les autres conteneurs du démon.
(Image extraite de: https://jujucharms.com/u/lazypower/logspout/)
Afin de pouvoir utiliser/reporter ses logs à la VM de monitoring, il est nécessaire de suivre les étapes suivantes:
services: logspout: image: gliderlabs/logspout:master container_name: logspout volumes: - /var/run/docker.sock:/var/run/docker.sock command: syslog+tcp://monitoring.picasoft.net:1234 environment: - "SYSLOG_FORMAT=rfc3164" - "LOGSPOUT=ignore"
“SYSLOG_FORMAT=rfc3164”
et “LOGSPOUT=ignore”
permettent respectivement de formater les messages de log selon la norme rfc3164, et de dire à Logsput d’ignorer (de ne pas router) ses propres messages de log
Enfin, dans le but de ne perdre aucuns messages de logs lors du démarrage des conteneurs Docker, il est nécessaire d’ajouter, à tous les services dans le fichier docker compose :
<code>
depends_on:
- logspout
</code>
De cette manière, leur lancement ne sera fait qu’après celui de Logspout, et ce dernier pourra donc router les messages de démarrage des services à Logstash