web-dev-qa-db-fra.com

Quel est un bon moyen de collecter des journaux à partir d'instances Amazon EC2?

Mon application est hébergée sur un cluster Amazon EC2. Chaque instance écrit des événements dans des fichiers journaux. Je dois collecter (et exploiter des données) sur ces journaux à la fin de chaque journée. Quelle est la méthode recommandée pour collecter ces journaux dans un emplacement central? J'ai pensé à plusieurs options, mais je ne sais pas trop comment aller:

  1. scp les à une instance en utilisant un travail cron
  2. Consigner tous les événements via TCP/IP sur une instance
36
Bilal Aslam

Nous utilisons Logstash sur chaque hôte (déployé via Puppet) pour collecter et envoyer les événements de journal dans une file d'attente de messages (RabbitMQ, mais peut être Redis) sur un hôte central. Une autre instance de Logstash récupère les événements, les traite et enregistre le résultat dans ElasticSearch . Une interface/ Kibana web est utilisée pour effectuer une recherche dans cette base de données.

Il est très capable, évolue facilement et est très flexible. Logstash a des tonnes de filtres pour traiter les événements de différentes entrées et peut générer de nombreux services, ElasticSearch en étant un. Nous envoyons actuellement environ 1,2 million d'événements de journal par jour à partir de nos instances EC2, sur du matériel léger. La latence d'un événement de journal d'un événement à l'autre est d'environ 1 seconde dans notre configuration.

Voici une documentation sur ce type d’installation: https://www.elastic.co/guide/fr/logstash/current/getting-started-with-logstash.html , et une démonstration de l’interface de recherche Kibana avec certaines données en direct.

22
Martijn Heemels

Cette question est ancienne (décembre 2014), mais occupe toujours une place de choix lors d'une recherche Google sur ce sujet.

Amazon offre maintenant un moyen de faire certaines de ces choses via CloudWatch. Il a la capacité de mettre en correspondance le message de journal et de déclencher des alarmes en fonction de ce qui se passe dans l'application. Selon la nature de l'exploration de données à effectuer, il peut être possible d'utiliser leur API pour extraire les événements agrégés souhaités. Voir http://aws.Amazon.com/blogs/aws/cloudwatch-log-service/

10
smitelli

Je me sers de Loggly et cela semble faire l'affaire

http://loggly.com/

Cela me permet d’envoyer tous mes journaux via TCP à leur service et d’avoir un emplacement central pour surveiller tous mes fichiers journaux,

Cela me permet également d'archiver mes fichiers journaux sur S3, ce qui est bien aussi

7
cloudgroup

Je ne l'ai pas essayé à cette fin, mais Amazon semble recommander l'utilisation de SimpleDB:

http://aws.Amazon.com/simpledb/usecases_logging/

Voici un paquet qui pourrait vous être utile - il est dit que vous pouvez l’utiliser pour capturer stdout/stderr dans SimpleDB:

http://code.google.com/p/simpledb-appender/

6
MB.

Jetez un coup d’œil à la version gratuite de Splunk -, elle gérera la collecte de fichiers journaux à distance et vous fournira également de très bons outils de recherche et d’analyse.

3
gareth_bowles

Utilisez syslog-ng, un outil populaire qui transfère les messages de journal via TCP, éventuellement chiffré.

http://www.balabit.com/network-security/syslog-ng/

3
Shlomo Swidler

Je ne l'ai pas encore implémenté, mais j'ai découvert Facebook Scribe et cela semble être une bonne idée. https://github.com/facebookarchive/scribe

Jusqu'à ce que je commence, je faisais exactement ce que vous avez mentionné pour # 1: j'ai un travail cron qui utilise sftp pour extraire les fichiers. J'ai choisi cela parce que même si je faisais le n ° 2, il est arrivé que la machine ec2 se bloque et que je sois obligé de retirer les fichiers journaux de toute façon. 

1
dar

* Avertissement: je travaille chez Sumo:

Sumo Logic Free est également une option relativement facile:

https://www.sumologic.com/pricing/

0
gigawatts