使用AWS作为应用程序日志数据库

时间:2012-10-03 15:34:18

标签: logging amazon-web-services error-logging

我目前正在开发一个生成大量日志数据的大型Web应用程序。因为我们没有将所有事件记录到数据库的基础结构,所以我们将它们写入文件。不幸的是,这使得在日志中搜索特定事件非常困难,并且无法生成频率报告。

在试图找出如何实现更好的数据库日志记录时,我找到了亚马逊的服务。具体为SimpleDBDynamoDB。 SimpleDB的一个用例是logging,但后来它说明了

  

Amazon SimpleDB旨在存储相对少量的数据......

这似乎是矛盾的。以下是我的问题:

  1. 这些数据库服务是否适合记录应用程序事件?
  2. 是否适合从日志数据生成报告?
  3. 我会使用时间戳作为主键吗?
  4. 这种服务有什么缺点或我应该考虑的其他事情吗?
  5. 更新2018-06-13:我已经使用SimpleDB在大型应用程序上记录应用程序数据。关键是将日志划分为与其生成时间段相对应的域(例如每天),以确保它们不会超出其限制。然后设置CRON作业以定期删除旧域。该解决方案运行良好,易于搜索。

2 个答案:

答案 0 :(得分:5)

我的回答是基于我在生产环境中使用SimpleDB的经验。

  1. 我每天将数千个应用程序事件记录到SimpleDB。
  2. 我们有研究人员定期从SimpleDB中提取日志数据,但他们从未抱怨过。我不确定在SimpleDB本身上运行报表查询,但我不明白为什么这会出现问题,当我运行查询时,它们对我来说总是很快。
  3. SimpleDB索引所有列,没有“主键”。
  4. 我个人不喜欢使用为与SimpleDB交互而构建的第三方工具。另外,根据您将使用的数据和处理量来考虑价格。

答案 1 :(得分:3)

SimpleDB 旨在存储相对的少量数据。如果您有“大量日志数据”并且您想“搜索特定事件的日志”和“生成频率报告”,那么您肯定希望使用DynamoDB。

DynamoDB具有“哈希键”(例如索引)和“范围键”,允许您以各种方式对数据进行排序。例如:“显示从上周到现在的所有INFO日志。”

此外,如果您查看official DynamoDB forum,开发人员和支持人员非常擅长跟进并确保您的问题得到解答。