Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Logging centralisé et distant de plusieurs applications Django ?

+5 votes

Je possède plusieurs applications Django différentes, déployées dans des docker balancés dans des instances EC2 qui elles sont gérées par des load-balancers capricieux.

Il me faut donc un serveur distant qui réceptionne et conserve les logs de toutes mes apps durablement.
Utilisant Amazon Web Services, je me suis naturellement tourné vers un S3 mais boto ne possède pas ce que je cherche.

Soucieux de ne pas réinventer la roue, ma question en clair :
Existe-il un handler compatible avec la lib logging de Python, qui permet d'envoyer facilement et proprement ses logs sur un S3 ou un serveur distant ?

La lib logging propose bien SysLogHandler pour envoyer les logs sur un serveur unix en utilisant des socket, mais il faut installer le serveur juste pour ça, et je préfère utiliser cette solution en dernier recours.

Et quid de la rotation des fichiers ?

demandé 21-Jan-2015 par Kmaschta (130 points)

Je dirais :

  • elastic search
  • Logstash
  • kibana

C'est vraiment efficace.

3 Réponses

+1 vote

Je ne suis pas vraiment au point niveau loggings, mais est-ce que Sentry n'est pas ce que tu cherches ?

Sentry est open source, même s'il faut lutter un peu pour trouver les sources ;)

répondu 21-Jan-2015 par tominardi (200 points)

Nous avons un Sentry & un Newrelic d'installé, mais il nous faut quand même conserver les logs d'accès, d'erreurs, etc.

Donc pas juste les logs django, mais aussi les logs nginx, gunicorn, etc ?

Tout pointe directement sur l'appli django, pour le moment si le log Django est assez verbeux je n'en vois pas l'utilité (sinon pour debug mais là, se connecter en SSH suffit amplement).
Au pire des cas, je ferai un handler homemade ou un script (bash, python..) lancé avec un cron qui pusherai les lignes sur un serv. périodiquement, mais pour l'instant je m'y refuse.

Du coup je pige pas, c'est pas exactement le but de sentry de logger tout ce qu'on veut logger dans django sur un serveur distant ? Tu changes le logger sentry pour aller au level INFO et tu devrais tout avoir non ?

0 votes

Tu peux aussi jeter un oeil a logbook, je pense : https://pythonhosted.org/Logbook/

répondu 6-Fev-2015 par pydidi (270 points)
+1 vote

Tu peux aussi regarder du côté de ZMQ pour envoyer les logs lignes par lignes depuis chaque machines vers le serveur qui centralise tes logs.
Un handler pour la lib logging existe et ne représente de toute façon que quelques lignes de python, voir :
- le handler officiel
- celui que j'ai écris pour LAVA

Par défaut, ZMQ envoie les données en claire, mais la lib fournit ce qu'il faut pour crypter les messages (jamais encore testé).

répondu 4-Mar-2015 par ivoire (198 points)
...