从Amazon EC2实例收集日志的好方法是什么?

时间:2009-11-19 07:53:28

标签: logging amazon-s3 amazon-ec2

我的应用程序托管在Amazon EC2群集上。每个实例都将事件写入日志文件。我需要在每天结束时收集(和数据挖掘)这些日志。在中心位置收集这些日志的推荐方法是什么?我想到了几个选项,不知道要走哪条路:

  1. 使用cron作业将它们scp到实例
  2. 通过TCP / IP将所有事件记录到实例

8 个答案:

答案 0 :(得分:22)

我们在每台主机(通过Puppet部署)上使用Logstash来收集日志事件并将其发送到中央主机上的消息队列(RabbitMQ,但可能是Redis)。另一个Logstash实例检索事件,处理它们并将结果填入ElasticSearchKibana Web界面用于搜索此数据库。

它功能强大,易于扩展且非常灵活。 Logstash有大量的过滤器来处理来自各种输入的事件,并且可以输出到许多服务,ElasticSearch就是其中之一。我们目前每天从轻型硬件上的EC2实例发送大约1,200万个日志事件。从事件到可搜索的日志事件的延迟在我们的设置中大约是1秒。

以下是有关此类设置的一些文档:https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html,以及带有一些实时数据的Kibana搜索界面演示。

答案 1 :(得分:10)

这个问题现已陈旧(2014年12月),但在谷歌搜索此主题时仍然排名很高。

亚马逊现在提供了一种通过CloudWatch执行此操作的方法。它具有模式匹配日志消息的能力,并根据应用程序中发生的事情触发警报。根据需要完成的数据挖掘的性质,可以使用其API来获取所需的聚合事件。见http://aws.amazon.com/blogs/aws/cloudwatch-log-service/

答案 2 :(得分:7)

我一直在使用Loggly,似乎可以解决这个问题

http://loggly.com/

它允许我通过tcp将我的所有日​​志发送到他们的服务,并有一个中央位置来监控我的所有日​​志文件,

它还允许我将我的日志文件存档到S3,这很不错

答案 3 :(得分:6)

我没有尝试过这个目的,但亚马逊似乎建议使用SimpleDB:

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

这是一个你可能会觉得有用的软件包 - 它说你可以用它来将stdout / stderr捕获到SimpleDB中:

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

答案 4 :(得分:3)

查看Splunk的免费版本 - 它将处理远程日志文件集合,并为您提供一些非常好的搜索和分析工具。

答案 5 :(得分:3)

使用syslog-ng,这是一种通过TCP传输日志消息的流行工具,可选择加密。

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

答案 6 :(得分:1)

我还没有实现它,但我遇到了Facebook Scribe,这似乎是一个好主意。 https://github.com/facebookarchive/scribe

直到我实现这一目标,我一直在做你提到的#1 - 我有一个使用sftp来提取文件的cron作业。我之所以选择这个,是因为即使我做了#2,我也遇到了ec2机器崩溃的情况,我最终还是不得不拔掉日志文件。

答案 7 :(得分:0)

*免责声明:我在相扑工作:

Sumo Logic Free也是一个相对简单的选择:

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