我想监控很多机器上的大量指标,从 Graphite 网站,我注意到 ganglia 的 RRD 组件可能会带来可扩展性问题,这是以下常见问题解答中解释 whisper 最初被发明的原因。如果问题尚未解决(我喜欢 ganglia2 的 webapp),我想知道是否有办法使用 gweb2 读取 whisper 数据。
“编写 whisper 的第二个原因是性能。RRDtool 非常快,实际上比 whisper 快得多。但 RRD 的问题(在编写 whisper 时)是 RRD 只允许您一次将单个值插入数据库,而 whisper 允许一次插入多个数据点,将它们压缩为单个写入操作。这在高负载下大幅提高性能的原因是因为 Graphite 操作许多文件,并且执行如此小的操作(在这里写入几个字节,在那里写入几个字节等)瓶颈是由I/O 操作数。考虑一下 Graphite 每分钟接收 100,000 个不同指标值的场景,为了维持该负载,Graphite 必须能够每分钟将那么多数据点写入磁盘。但假设您的底层存储每分钟只能处理 20,000 次 I/O 操作。使用 RRD(在编写 whisper 时),根本无法跟上。但使用 whisper,我们可以继续缓存传入的数据,直到我们为给定指标积累了 10 分钟的数据,然后 whisper 可以在 1 次操作中完成,而不是执行 10 次 I/O 操作来写入这 10 个数据点。我一直提到“在编写 whisper 时”的原因是因为 RRD 现在支持这种行为。但是,只要第一个问题仍然存在,Graphite 将继续使用 whisper。”
答案1
whisper FAQ 中提到的已解决的问题称为“RRDCacheD”。是的,ganglia 可以配置为使用它,如下所示http://sourceforge.net/apps/trac/ganglia/wiki/rrdcached_integration,这将大大提高 Ganglia 的 I/O 性能。