2009-11-19 23 views
34

Meine App wird auf einem Amazon EC2-Cluster gehostet. Jede Instanz schreibt Ereignisse in Protokolldateien. Ich muss über diese Protokolle am Ende jeden Tages sammeln (und Daten meins). Was ist eine empfohlene Methode zum Sammeln dieser Protokolle an einem zentralen Ort? Ich habe von mehreren Optionen gedacht, nicht sicher, welcher Weg zu gehen:Was ist eine gute Möglichkeit, Protokolle von Amazon EC2 Instanzen zu sammeln?

  1. scp sie zu einer Instanz zu einer Instanz einen cron-Job
  2. Log alle Ereignisse über TCP/IP mit

Antwort

1

I haven Ich habe es noch nicht implementiert, aber ich bin auf Facebook Scribe gestoßen, und es scheint eine gute Idee zu sein. https://github.com/facebookarchive/scribe

Bis ich das mache, habe ich gerade getan, was Sie für # 1 erwähnen - Ich habe einen Cron-Job, der sftp verwendet, um die Dateien zu ziehen. Ich entschied mich dafür, denn selbst wenn ich # 2 gemacht hatte, hatte ich Fälle, in denen der ec2-Rechner abstürzte und ich die Logfiles sowieso abziehen musste.

3

Werfen Sie einen Blick auf die kostenlose Version von Splunk - es wird die Remote-Protokolldatei Sammlung behandeln und Ihnen auch einige wirklich schöne Such-und Analyse-Tools.

7

Ich habe Loggly benutze und es scheint, den Trick

http://loggly.com/

Es erlaubt, zu tun mir alle meine Protokolle durch tcp auf ihren Dienst zu senden und einen zentralen Platz alle Dateien mein Protokoll zu überwachen haben,

Es erlaubt mir, auch meine Logfiles S3 zu archivieren, die

auch schön ist
+0

„Es ermöglicht auch mir meine Logfiles S3 zu archivieren die ist auch nett ", bedeutet dies, dass Loggly ist Ihr erster Zielpunkt ?, Logdateien werden dort gesendet und dann loggly Sie senden komprimierte Archive zu S3? Ich versuche, diese Einstellung zu erhalten, wo ich eine zentralisierte Überwachung für alle meine Protokolldateien habe, aber ich kann immer noch die archivierten .gz-Dateien auf s3 – Donna

21

Wir verwenden Logstash auf jedem Host (über Puppet eingesetzt) ​​zu sammeln und an eine Nachrichtenwarteschlange Protokollereignisse Schiff (RabbitMQ, aber Redis sein könnte) auf einem zentralen Host. Eine andere Logstash-Instanz ruft die Ereignisse ab, verarbeitet sie und stopft das Ergebnis in ElasticSearch. Eine Kibana Webschnittstelle wird verwendet, um diese Datenbank zu durchsuchen.

Es ist sehr leistungsfähig, skaliert leicht und ist sehr flexibel. Logstash hat Tonnen von Filtern, um Ereignisse von verschiedenen Eingaben zu verarbeiten, und kann zu vielen Diensten ausgeben, ElasticSearch ist einer von ihnen. Wir versenden derzeit etwa 1,2 Millionen Log-Ereignisse pro Tag von unseren EC2-Instanzen auf leichter Hardware. Die Latenzzeit für ein Protokollereignis von Ereignis zu durchsuchbar beträgt ca. 1 Sekunde in unserem Setup.

Hier finden Sie einige Dokumentation zu dieser Art von Setup: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html, und eine Demo der Kibana Suchoberfläche mit einigen Live-Daten.

+0

hinzufügen hinzufügen, wenn Sie die Leistung von Logstash auf Ihrem Host zu anspruchsvoll finden Vielleicht möchten Sie in https://github.com/elasticsearch/logstash-forwarder schauen. Es ist in Golang geschrieben und hat viel weniger Overhead als das gesamte Logstash-Projekt, hat aber genügend Eingaben, um die Logs von Ihrem Host und Ihrem Logging-System zu holen (wo Sie sie dann mit Logstashs verschiedenen Input-Plugins zerlegen können). – semi

+2

Ich würde empfehlen, die Protokolle zu S3 zu versenden und dann das Protokoll von s3 mit logstash + elasticsearch zu verfolgen. (Verwenden Sie die Prüfsumme, um die Elasticsearch-ID zu generieren, um Protokolleinträge zu deduplizieren, die durch erneutes Laden von Dateien verursacht wurden). Auf diese Weise müssen Sie sich keine Gedanken über den Verlust des Elasticsearch-Clusters machen und machen die Neupositionierung Ihres ES-Clusters einfacher und sauberer. Es öffnet sich Ihnen auch für weitere schwerere Analysetools wie EMR und Redshift. –

+1

In diesen Tagen wurde Logstash-Forwarder durch verschiedene Beats ersetzt (https://www.elastic.co/products/beats). Filebeat für Logfiles, Metricbeat für Metriken, Packetbeat für Netzwerkverkehrsprotokollierung, etc. Sie sind sehr leicht. Logstash 5.4 verfügt außerdem über eine Funktion namens Persistente Warteschlange, die die Notwendigkeit einer separaten Nachrichtenwarteschlange verringert und die Bereitstellung vereinfacht. –

10

Diese Frage ist jetzt alt (Dezember 2014), steht aber bei einer Google-Suche zu diesem Thema immer noch an erster Stelle.

Amazon bietet jetzt eine Möglichkeit, etwas durch CloudWatch zu tun. Es ist in der Lage, die Log-Nachricht zu pattern-match und Alarme basierend auf den Ereignissen in der Anwendung auszulösen. Abhängig von der Art des Data Mining, das durchgeführt werden muss, kann es möglicherweise möglich sein, die API zum Abrufen der gewünschten aggregierten Ereignisse zu verwenden. Siehe http://aws.amazon.com/blogs/aws/cloudwatch-log-service/

Verwandte Themen