2009-11-19 99 views
34

我的應用程序託管在Amazon EC2集羣上。每個實例都將事件寫入日誌文件。我需要在每天結束時收集(和數據挖掘)這些日誌。在中央位置收集這些日誌的建議方法是什麼?我想到了幾個選項,不知道該往哪個方向走:從Amazon EC2實例收集日誌的好方法是什麼?

  1. SCP他們一個實例使用cron作業
  2. 登錄TCP/IP上的所有事件以一個實例

回答

1

我的天堂目前尚未實現,但我遇到了Facebook Scribe,這似乎是一個好主意。 https://github.com/facebookarchive/scribe

直到我明白了,我一直在做你剛剛提到的#1 - 我有一個使用sftp來提取文件的cron作業。我之所以選擇這個,是因爲即使我做了#2,我也遇到過ec2機器崩潰的情況,最後我不得不把日誌文件關掉。

3

查看Splunk的免費版本 - 它將處理遠程日誌文件集合,並且還爲您提供一些非常好的搜索和分析工具。

7

我一直在使用Loggly,似乎這樣的伎倆

http://loggly.com/

這使我可以通過TCP發送我的所有日​​志到他們的服務,並有一箇中心位置監控我的所有日​​志文件,

它還允許我對我的日誌文件歸檔到S3這是很好過

+0

「這也讓我對我的日誌文件歸檔到S3其中太好了「,這是否意味着loggly是你的第一個目的地點?,日誌文件被髮送到那裏,然後你將日誌文件發送壓縮存檔到S3? 我想要獲得此設置,我對所有日誌文件進行了集中式監視,但我仍然可以將存檔的.gz文件保留在s3 – Donna

21

我們使用Logstash每個主機(通過木偶部署)上收集和船舶日誌事件到消息隊列(RabbitMQ的,但可能是Redis的)在中央主機上。另一個Logstash實例檢索事件,處理它們並將結果填入ElasticSearch。 A Kibana Web界面用於搜索此數據庫。

這是非常有能力,容易擴展和非常靈活。 Logstash擁有大量過濾器來處理來自各種輸入的事件,並且可以輸出許多服務,ElasticSearch就是其中之一。我們目前每天從我們的EC2實例,在輕型硬件上發送大約1,200萬次日誌事件。從事件到可搜索的日誌事件的延遲在我們的設置中大約爲1秒。

下面是關於這種設置的一些文檔:https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html,以及帶有一些實時數據的Kibana搜索界面演示。

+0

要添加到此,如果發現主機上的logstash性能過於苛刻你可能想看看https://github.com/elasticsearch/logstash-forwarder。它是用golang編寫的,比整個logstash項目的開銷小得多,但是有足夠的輸入來完成將日誌從主機和日誌系統中取出(然後可以使用logstash的各種輸入插件對它們進行打包)。 – semi

+2

我建議將日誌傳送到S3,然後使用logstash + elasticsearch從s3中拖尾記錄日誌。 (使用校驗和生成彈性搜索標識來重新刪除由logstash重新處理重新加載的文件引起的日誌條目)。通過這種方式,您不必擔心丟失Elasticsearch集羣,並且可以更輕鬆,更清潔地重新定位ES集羣。它還爲您提供了更多更重的分析工具,如EMR和Redshift。 –

+1

現在,Logstash-forwarder已被各種Beats(https://www.elastic.co/products/beats)取代。用於日誌文件的Filebeat,用於指標的Metricbeat,用於網絡流量記錄的Packetbeat等。它們非常輕便。 此外,Logstash 5.4還具有稱爲Persistent Queue的功能,可減少對單獨消息隊列的需求,從而使部署更容易。 –

10

這個問題現在已經很老了(2014年12月),但在谷歌搜索這個主題時仍然排名很高。

亞馬遜現在提供了一種通過CloudWatch執行某些操作的方法。它能夠對日誌消息進行模式匹配,並根據應用程序中發生的事件觸發警報。根據需要完成的數據挖掘的性質,可以使用它們的API來獲取所需的聚合事件。見http://aws.amazon.com/blogs/aws/cloudwatch-log-service/