我的应用程序托管在 Amazon EC2 集群上。每个实例将事件写入日志文件。我需要在每天结束时收集(和数据挖掘)这些日志。在中央位置收集这些日志的推荐方法是什么?我想了几种选择,不知道该走哪条路:
- 使用 cron 作业将它们发送到实例
- 通过 TCP/IP 将所有事件记录到实例
最佳答案
我们使用Logstash在每个主机上(通过 Puppet 部署)收集日志事件并将其发送到中央主机上的消息队列(RabbitMQ,但可以是 Redis)。另一个 Logstash 实例检索事件,处理它们并将结果填充到 ElasticSearch 。一个Kibana Web 界面用于搜索该数据库。
它的功能非常强大,可以轻松扩展并且非常灵活。 Logstash 有大量的过滤器来处理来自各种输入的事件,并且可以输出到许多服务,ElasticSearch 就是其中之一。目前,我们每天从 EC2 实例在轻型硬件上发送约 120 万个日志事件。在我们的设置中,日志事件从事件到可搜索的延迟约为 1 秒。
以下是有关此类设置的一些文档:https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html以及带有一些实时数据的 Kibana 搜索界面演示。
关于logging - 从 Amazon EC2 实例收集日志的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761609/