Docker, Supervisord et logging - comment consolider les journaux dans les journaux de Docker?
Donc, en expérimentant avec menu fixe + Supervisord + Django app via uWSGI. J'ai l'ensemble de la pile fonctionne très bien, mais besoin de mettre de l'ordre dans l'exploitation forestière.
Si je me lance superviseur en non-mode démon,
/usr/bin/supervisord -n
Puis-je obtenir la sortie de journalisation pour le superviseur a joué dans le menu fixe les journaux stdout. Toutefois, si supervisord est en mode démon, ses propres journaux sont planqué dans le conteneur de système de fichiers, et les journaux de ses demandes en faire trop dans son propre app__stderr/stdout fichiers.
Ce que je veux, c'est le journal de superviseur, et l'application stdout pour le docker journal.
Commence supervisord non-mode démon une idée judicieuse pour cela, ou faut-il avoir des conséquences inattendues? Aussi, comment puis-je obtenir les journaux d'application a également joué dans le menu fixe les journaux?
source d'informationauteur jvc26
Vous devez vous connecter pour publier un commentaire.
Je suis d'accord, n'utilisez pas le mode démon sonne comme la meilleure solution, mais je serais probablement utiliser la même stratégie que vous utilisez lorsque vous vous reçu des serveurs physiques, ou une sorte de VM configuration: centraliser l'enregistrement.
Vous pouvez utiliser quelque chose d'auto-hébergé comme logstash à l'intérieur du récipient pour collecter des journaux et de l'envoyer à un serveur central. Ou utiliser un service commercial comme loggly ou papertrail à faire de même.
Je l'ai accompli à l'aide .
Installer superviseur-stdout dans votre Panneau de l'image:
Supervisord Configuration
Modifier votre
supervisord.conf
ressemble à:Conteneur Docker est comme un kleenex, vous l'utiliser, alors vous le déposez. Pour être "vivant", Docker a besoin de quelque chose exécution en arrière plan (alors que les démons s'exécuter en arrière-plan), c'est pourquoi vous utilisez Supervisord.
Si vous avez besoin de "redirect/ajouter/fusionner" processus de sortie (d'accès et d'erreur) à Supervisord sortie de vous voir lors de l'exécution de votre conteneur.
Comme Drew dit, tout le monde est à l'aide de https://github.com/coderanger/supervisor-stdout pour l'atteindre (pour moi, ce devrait être ajouté à supervisord projet!). Quelque chose a Attiré oublié de dire, vous pouvez avoir besoin d'ajouter
À la supervisord programme de configuration du bloc.
Quelque chose de très utile aussi, imaginez votre processus de journalisation dans un fichier journal au lieu de la sortie standard, vous pouvez demander supervisord de le voir:
Ce sera rediriger php5-fpm.journal du contenu sur la sortie standard, puis à supervisord stdout via supervisord-stdout.
superviseur-stdout pour installer python-pip, qui télécharge ~150 mo, pour un conteneur, je pense, beaucoup juste pour installer un autre outil.
La redirection des fichiers de log dans /dev/stdout fonctionne pour moi:
http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html
Aujourd'hui, la meilleure pratique est d'avoir un minimum de Docker images. Pour moi, l'idéal récipient avec application en Python contiennent uniquement mon code, l'appui aux bibliothèques et quelque chose comme
uwsgi
si c'est nécessaire.J'ai publié une solution sur https://github.com/msgre/uwsgi_logging. Il est simple d'application Django derrière
uwsgi
qui est configuré pour afficher les journaux deuwsgi
et Django app sur les conteneurs stdout sans besoin desupervisor
.En effet, à partir supervisord non-mode démon est la meilleure solution.
Vous pouvez aussi utiliser des volumes dans l'ordre de monter la supervisord journaux de la place centrale.