使用Graphite和Statsd绘制旧数据的图表

15

我可以通过使用JavaScript StatsD将时间戳输入以发送数据到Graphite吗?我需要绘制旧的数据。

3个回答

12
不,你不能用statsd做到这一点,但是你可以通过直接将数据发送到carbon来实现相同的功能,carbon接受时间戳。
Statsd只是收集实时数据,并在配置周期内对收到的每个指标求和或平均值,然后使用当前时间戳将其发送到graphite carbon守护程序。
向carbon守护程序发送数据非常简单,只需要打开一个套接字以连接carbon通用端口(如果要使用pickle,则有其他端口),然后在该套接字上按行打印一个度量指标,包括以下值: metric_name metric_value metric_timestamp Carbon将在那个时间戳中存储该值,只要它在该度量的存储范围内并且您可以使用任何您想要的时间戳。
有许多示例可供参考,例如使用netcat发送的此示例 还有一个用C编写的Graphite客户端

发送旧时间戳数据的完整示例。首先,您需要更改您的时间,然后使用以下命令:echo "stats.gauges.asdf.qwer.zxc 0.55 date +%s" | nc -q0 100.100.100.100 2003。阅读此处:http://graphite.readthedocs.org/en/1.0/feeding-carbon.html - Bob

2
我想使用statsd,但不是实时的,因为我每小时处理一次日志文件。所以我修改了服务器代码来接受时间戳,并修改了客户端代码来发送时间戳。虽然这种方法感觉很“自制”,而且不能轻松更新到新版本的statsd,但它对我来说很有效。棘手的部分在于服务器会将数据聚合成10秒钟的桶。实时情况下,这很容易做到,但如果您要接受时间戳,则必须保留更多的数据。对于我来说,由于我的数据只能保留一个小时左右,所以并不太难,但我的解决方案并不适用于一般情况。

你有在任何地方开源这个吗?我对你的解决方案非常感兴趣,因为我也需要做同样的事情。 - Manuel Rauber
我还没有开源它。我不介意与特定的人分享它,只是不太普遍。我不习惯在 stack overflow 上联系人,除非是在评论中--我们有没有办法在这里印出来之外交换电子邮件地址? - jfrank
你能通过 Twitter 联系我吗?@ManuelRauber - Manuel Rauber
你们的实现有什么更新可以分享吗?我们想在项目中使用相同的功能。 - Lukie
也对此很感兴趣! - Patrick Wolf
@所有评论的人.. 与直接将数据发送到Graphite相比,通过statsd进行处理的好处是什么? - eugene

0

看起来有一种方法可以通过STATSD发送原始数据,但它不会被聚合:

def send(self, subname, value, timestamp=None):
    '''Send the data to statsd via self.connection
    :keyword subname: The subname to report the data to (appended to the
        client name)
    :keyword value: The raw value to send
    '''
    name = self._get_name(self.name, subname)
    return statsd.Client._send(self, {name: '%s|r|%s' % (value, ts)})

see: http://python-statsd.readthedocs.org/en/latest/_modules/statsd/raw.html https://github.com/chuyskywalker/statsd/blob/master/README.md


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接