这是我的第一篇帖子,请温柔一点!我在 Ubuntu 16.04 服务器上安装并运行了 graphite。(版本 0.10)
我正在发送指标,一切正常,但我一次发送了多个时间戳。就像我每分钟发送一次数据,每 10 秒发送一个时间戳。每分钟都有新数据进来。可能会发生这种情况,具有相应时间戳(与之前相同)的密钥会在一分钟后重新发送。因此,由于 graphite 的工作方式,新值被保存,最后一个值丢失。所以我把一个 carbon-aggregator 放在 carbon-cache 前面,以为它会聚合每个时间戳的值。但事实并非如此。它会聚合在时间间隔内收到的所有值,忽略时间戳。
我发现 statsd 具有相同的功能。我想要的是聚合器按时间戳聚合值。例如,保留数据 1 分钟,然后查看是否收到相同键和时间戳的数据点。如果是,则将它们相加。如果没有收到此类数据,则将原始数据转发到 carbon-cache。
有没有办法用 graphite 或 statsd 来实现这一点,或者我必须在 carbon-cache(而不是 carbon-aggregator)前面编写自己的小缓冲区来实现这一点?它可以是 C 语言中自制结构的链接列表,大约需要 150 行代码,但这会浪费宝贵的时间。
肯定有人遇到过同样的问题,但有人找到解决方案吗?
顶一下:真的没人遇到过这个问题吗?
提前致谢!
答案1
Logstash可能是一个解决方案。
它可以接收/理解碳指标(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-graphite.html),并且可以生成指标,这似乎可以做所有事情除了你提到的总结(https://www.elastic.co/guide/en/logstash/current/plugins-filters-metrics.html)。它还可以以 graphite 能够理解的格式重新发出指标(https://www.elastic.co/guide/en/logstash/current/plugins-outputs-graphite.html)。
你也可以用聚合插件做一些聪明的事情(https://www.elastic.co/guide/en/logstash/current/plugins-filters-aggregate.html)。
不过,听起来,如果你能够首先对统计数据/指标的生成方式做些什么,这可能是解决问题的更简单的方法。