2011-09-27 5 views
2

Nous avons des applications sur les serveurs Solaris 10 qui génèrent des fichiers journaux textuels. Nous devons diffuser ces fichiers journaux en temps réel sur un serveur central pour surveiller les nouveaux événements.Python Client/Serveur pour diffuser les mises à jour du fichier journal en temps réel?

Idéalement, nous aurions un montage NFS, et tout notre système écrirait leurs journaux là-bas, et le serveur de surveillance pourrait les tirer à partir de là. Malheureusement, pour des raisons techniques et non techniques, ce n'est pas une option ici. À l'heure actuelle, nous utilisons un arrière-plan arrière -f pour acheminer les données sur un tunnel SSH. Cependant, nous cherchions à savoir si cela valait la peine d'assembler quelque chose d'un peu plus robuste.

Je pensais écrire un simple client/serveur Python avec Twistedb (ou quelque chose de similaire - recommandations?) Pour diffuser les données du journal. Est-ce quelque chose qui est facilement réalisable? Y a-t-il des bibliothèques/outils sur lesquels je pourrais chercher des idées? Des problèmes que je devrais être au courant?

En outre, ceci est Solaris 10, donc je ne suis pas familier avec l'état des moniteurs de système de fichiers. Je sais que Gamin est disponible via OpenCSW. Cependant, y a-t-il d'autres choix?

Répondre

0

Vérifiez le module de journalisation de Python. http://docs.python.org/library/logging.html

Il contient la capacité de se connecter aux fichiers, flux, syslog, serveurs en réseau, et plus encore. Le livre de cuisine contient des exemples ou une connexion sur le réseau. http://docs.python.org/howto/logging-cookbook.html#logging-cookbook

Le module est assez facile à étendre également.

+0

Hmm, c'est une approche plutôt intéressante. Première question - l'application générant les fichiers journaux n'est pas en Python (c'est en C++), et je suppose que nous n'avons pas la source. Comment est-ce que j'obtiendrais la journalisation de Python à lire dans ces logfiles, et lirais dans de nouvelles lignes comme elles entrent? Deuxième question - Suis-je préférable d'utiliser le SocketServer intégré plutôt qu'un framework comme Twisted? Pour être honnête, je n'ai jamais utilisé Twisted auparavant, alors j'utilisais cette excuse pour l'apprendre ... lol. – victorhooi

+0

Ah, j'ai fait l'hypothèse que vos applications où en Python, et donc l'intégration avec le module de journalisation serait simple. Je pense qu'il serait stupide d'utiliser le module de journalisation dans ce scénario. Cela répond à vos deux questions. Personnellement, je voudrais étudier en utilisant Syslog-NG http://en.wikipedia.org/wiki/Syslog-ng pour combler vos besoins. C'est robuste et éprouvé. Si cela ne répond vraiment pas à vos besoins, alors écrire une application personnalisée dans Twisted, en partie pour apprendre Twisted, semble raisonnable. Votre motivation à résoudre le problème l'emportera sur la technologie que vous choisissez. – dicato

0

Considérer zeromq, au lieu des douilles crues. Son serveur de courtier de messages, c'est une bibliothèque pour vous laisser écrire votre système de transmission de messages. Il permet une communication multiplateforme et langagière facile sur les protocoles TCP, IPC (oui, inter-processus!), Multicast et autres. Il suffit d'échanger un composant python avec un composant C et cela fonctionne comme avant.

Son du Logiciels parfait pour satisfaire vos « ..excuse apprendre .. » ;-)

Mais le show-bouchon construirait dans votre configuration Solaris. Les liaisons Python sont à http://pypi.python.org/pypi/pyzmq/2.1.9

Questions connexes