StatsD 和 Riemann 有什么区别?哪一个在大规模分布式系统上表现更好?我们有一个基于 Java 构建的分布式平台,我们希望监控应用程序指标,也许还有一些警报。我们知道检测不是免费的,所以理想情况下,我们正在寻找一个高度可扩展的应用程序监控框架,它可以为我们的平台/应用程序增加最少的检测成本,并能够进行各种聚合等。我也知道我们可以构建两者结合的东西,但我想不出为什么?因为两者似乎都进行了聚合等等,但我无法确定哪一个更合适,或者为什么一个比另一个表现更好。如果有人可以分享他们对行业中这些工具的经验,那将是一个很大的帮助。
2 回答
我没有关于 statsd 的确切数字,但 Github 的 Brubeck 帖子表明他们正在失去大约 40% 的 statsd 事件——我猜这些图表以秒为单位——25,000 个事件/秒。他们在 C 中替代 statsd 正在推动 430 万个事件/秒。http://githubengineering.com/brubeck/
Riemann 不会在每个数据包的基础上与之竞争,但是在批量中,比如 10-100 个指标/消息,我听说多个生产用户报告了 1000 万个事件/秒。与 statsd 不同,Riemann 将扩展到所有可用的内核——我已经在测试中饱和了网络接口和我的盒子上的所有 48 个内核——但实际性能会因争用和你对流的处理方式而异。可能会慢很多。一切都取决于。
与 statsd 相比,Riemann 的事件模型更加丰富,可以进行任意计算。一个小的 Riemann 配置可以复制 statsd 的功能——但是当您需要多维汇总、状态转换检测、与各种其他存储和警报服务的集成、襟翼抑制、流量控制等等等时,Riemann 真的很出色。
这样做的代价是使用您的团队可能不熟悉的编程语言 - Clojure,并且必须更仔细地推理范围、状态,以及如果您正在编写自己的流,并发性。Riemann 也没有被广泛部署,这在图书馆支持和招聘人员方面可能是一个缺点。
The best performer would be Brubeck which is a Statsd compatible (written in C) and therefore you can use the same Statsd client libraries to connect to it.
Brubeck is written in C, Statsd is written in Node.js. And as Github explained in their article, they consider Node.js a foreign technology and they gradually replaced any Node.js services they had. One of them was statsd due to performance issues.
The second best in performance would be Riemann (however, it needs its own client libraries). Statsd would be the slowest.