===== Logspout =====
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.
{{ :technique:logspout.png |}}
(Image extraite de: https://jujucharms.com/u/lazypower/logspout/)
==== Reporter les logs des conteneurs vers le monitoring ====
Afin de pouvoir utiliser/reporter ses logs à la VM de monitoring, il est nécessaire de suivre les étapes suivantes:
* Ajout de logspout au fichier //docker-compose// des services de la VM:
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"
=== Explications de ces quelques lignes ===
* ''gliderlabs/logspout:master'' est l'image de la branche ''master'' du [[https://github.com/gliderlabs/logspout|projet]] Logspout
* Afin de pouvoir récupérer les messages de log des autres containers, il est nécessaire de monter la socket Docker dans le conteneur Logspout
* La commande syslog+tcp://monitoring.picasoft.net:1234
permet de router les messages de log des conteneurs vers la VM de monitoring, sur le port 1234, en utilisant syslog au-dessus de tcp.
* Les variables d'environnement ''"SYSLOG_FORMAT=rfc3164"'' et ''"LOGSPOUT=ignore"'' permettent respectivement de formater les messages de log selon la norme [[https://www.ietf.org/rfc/rfc3164.txt|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// :
depends_on:
- logspout
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