NoSQL解决方案最适合存储Apache error_log和access_log? Cassandra或MongoDB?

时间:2010-07-27 14:58:29

标签: mongodb logging cassandra nosql

我们为PHP开发了PaaS解决方案。作为其中的一部分,我们为开发人员提供了通过我们的API查看Apache error_log和access_log文件。

目前,我们将日志写入每个部署(vhost)分离的磁盘上的文件。

由于对于更多的节点和部署,这不能很好地扩展,即使文件在分布式文件系统(GlusterFS)上,我们也希望切换到更好的状态。

特别是出于计费和统计原因,我们不希望每次都解析日志文件。

由于MongoDBs的copped集合看起来很棒,因此我们希望使用它。但事实证明它们似乎不适用于自动分片,因为我们期望更多的写入然后读取,这会破坏我们的观点。

另一个选择是Cassandra,我喜欢它,因为它的每个节点都是平等的方法,但它们没有像封顶集合那样的东西。

原来这两种解决方案都没有提供一个独特的功能,可以帮助我做出决定,或者我没有看到它。

所以我想知道的是,之前有人使用过这两个系统中的一个进行记录吗?你有什么经历,能给我一些提示吗?还是有其他解决方案可以更好地满足我们的需求吗?

2 个答案:

答案 0 :(得分:5)

如果您正在考虑使用Cloudkick4 Months with Cassandra, a love story,可以从Cassandra查看此文章。

他们使用Cassandra为他们的系统存储不同的指标,这有点类似于存储日志文件。

修改

如果您还没有决定使用什么,这里使用MongoDB作为后端是一个很好的解决方案:

  

Graylog2是一个开源的syslog实现,它将您的日志存储在MongoDB中。它由一个用Java编写的服务器组成,该服务器通过TCP或UDP接受您的系统日志消息并将其存储在数据库中。第二部分是Ruby on Rails Web界面,允许您查看日志消息。

答案 1 :(得分:5)

  

原来这两种解决方案都没有提供一个独特的功能,可以帮助我做出决定,或者我没有看到它。

老实说,我们现在正在通过一些严肃的日志数据进行此测试。 (现在,我的意思是,我们中的一些人昨晚进行了这些测试。)

对我而言,以下是两个显着特征:易用性经过验证的扩展

易于使用

  • MongoDB 很简单。几个小时后,我从空白计算机转到一个活跃的Mongo实例,使用MySQL导入的数据和一些已完成的map-reduced。
  • 在同一时期,团队 Cassandra 坐着重新编译Java文件,试图让Hadoop配置为在现有的Cassandra实现上运行,这样他们甚至可以运行map-reduce。 / LI>

经验证的缩放

  • MongoDB分片仍处于测试阶段。它将在未来几周推出。那非常紧张。
  • Cassandra分片已在一些非常大的实例中得到证明。

所以我认为答案真的是针对你的个人品味。老实说,我认为Cassandra可能更稳定。经验证的产品,但我也从经验中知道,学习和设置曲线要陡峭得多。所以可能值得尝试两者兼而有之。