【问题标题】:Graph old data using graphite and statsd使用石墨和 statsd 绘制旧数据
【发布时间】:2012-08-16 14:03:33
【问题描述】:

我可以输入时间戳以通过 statsd(javascript statsd) 将数据发送到石墨吗?我需要绘制旧数据。

【问题讨论】:

    标签: graphite statsd


    【解决方案1】:

    不,您不能使用 statsd 做到这一点,但是您可以通过将数据直接发送到接受 tiemstamps 的 carbon 来实现。

    Statsd 只是收集实时数据,并在配置的时间段内汇总或平均在该时间段内收到的每个指标,并将其发送到带有当前时间戳的石墨碳守护程序。

    向 carbon daemon 发送数据非常简单,您只需要打开一个到 carbon 公共端口的套接字(如果您想使用 pickle,还有另一个端口),然后在该套接字上打印每行一个度量值,并具有以下值: metric_name metric_value metric_timestamp

    Carbon 会将该值存储在该时间戳中,您可以使用所需的任何时间戳,只要它在该指标存储配置的范围内即可。

    周围有很多例子,比如this one to send with netcat

    还有一个Graphite client written in C

    【讨论】:

    【解决方案2】:

    我想使用 statsd 但不是实时的,因为我每小时处理一次日志文件。所以我修改了服务器代码以接受时间戳,并修改了客户端代码以发送时间戳。它最终对我有用,尽管它感觉非常“本土化”,而且我无法在没有额外工作的情况下更新到新版本的 statsd。棘手的部分是服务器将一些聚合到 10 秒的存储桶中。实时,这很容易做到,但如果你要接受时间戳,你必须保留更多的数据。对我来说,由于我的数据只能保存一个小时左右,这并不太难,但我的解决方案并不适用于一般情况。

    【讨论】:

    • 你在任何地方开源了吗?我对您的解决方案非常感兴趣,因为我也需要这样做
    • 我还没有开源它。我不介意与特定的人分享它,它只是不是很笼统。除了在 cmets 之外,我不习惯在堆栈溢出时联系人们——有没有办法让我们交换电子邮件地址而不只是在这里打印它们?
    • 你能通过推特联系我吗? @ManuelRauber
    • 您的实现是否有任何更新可以分享,我们希望在项目中使用相同的功能。
    • 对此也感兴趣!
    【解决方案3】:

    看起来有一种方法可以通过 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)})
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多