StatsD与Riemann有什么区别?哪一个在大型分布式系统上表现更好?我们有一个基于Java的分布式平台,我们希望监控应用程序指标和一些警报。我们知道仪器不是免费的,所以理想情况下我们正在寻找一种高度可扩展的应用程序监控框架,它可以为我们的平台/应用程序增加最少的仪表成本,并能够进行各种聚合等等。我也明白我们可以建立两者兼而有之的东西,但我想不出原因?因为两者似乎都在进行聚合等等,但是我无法确定哪一个更合适,或者为什么一个比另一个更好。如果有人可以分享他们在这个行业中使用这些工具的经验,那将是一个很大的帮助。
答案 0 :(得分:6)
我没有关于statsd的硬数据,但是Github的Brubeck帖子表明他们正在失去大约40%的统计事件 - 我猜这些图表是在几秒钟内 - -25,000次/秒。他们用C替换statsd,每秒推动430万次事件。 http://githubengineering.com/brubeck/
Riemann在每个数据包的基础上不会与之竞争,但是在10-100个指标/消息的批量中,我听说多个生产用户报告了1000万个事件/秒。与statsd不同,Riemann将扩展到所有可用的核心 - 我已经在测试中使网络接口和我的盒子上的所有48个核心饱和 - 但实际性能将根据争用和您对流的处理方式而有所不同。可能要慢得多。一切都取决于。
与statsd相比,Riemann拥有更丰富的事件模型并执行任意计算。一个小的Riemann配置可以复制statsd的功能 - 但是当你需要多维汇总,状态转换检测,与各种其他存储和警报服务集成,襟翼抑制,流量控制等等时,Riemann真的很闪耀。
它的成本是使用编程语言 - Clojure - 您的团队可能不熟悉,并且必须更加谨慎地对范围,状态进行推理,如果您正在编写自己的流,并发。黎曼也没有广泛部署,这在图书馆支持和招聘人员方面可能是一个缺点。
答案 1 :(得分:0)
表现最佳的是Brubeck,这是兼容的Statsd(用C语言编写),因此您可以使用相同的Statsd客户端库连接到它。
Brubeck是用C语言编写的,Statsd是用Node.js编写的。正如Github在their article中解释的那样,他们认为Node.js是一种外国技术,他们逐渐取代了他们拥有的任何Node.js服务。由于性能问题,其中一个是统计数据。
表现第二好的是Riemann(但是,它需要自己的客户端库)。 Statsd将是最慢的。