用于采集数据的工具——StatsD

Posted 短暂又灿烂的

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于采集数据的工具——StatsD相关的知识,希望对你有一定的参考价值。

StatsD 最早是 2008 年 Flickr 公司用 Perl 写的针对 Graphite、datadog 等监控数据后端存储开发的前端网络应用,2011 年 Etsy 公司用 node.js 重构。后来其他语言也开发了此功能,它收集数据时基于两大功能:Counting & Timing

StatsD 其实就是一个监听UDP(默认)或者TCP的守护程序,根据简单的协议收集statsd客户端发送来的数据,聚合之后,定时推送给后端,如graphite和influxdb等,再通过grafana等展示。

现在通常指StatsD系统,包括客户端(client)、服务器(server)和后端(backend)三部分。客户端植入于应用代码中,将相应的metrics上报给StatsD server。

下面是 GitHub - alexcesaro/statsd: An efficient Statsd Go client.105 实现的例子:

c, err := statsd.New() // Connect to the UDP port 8125 by default.
if err != nil {
    // If nothing is listening on the target port, an error is returned and
    // the returned client does nothing but is still usable. So we can
    // just log the error and go on.
    log.Print(err)
}
defer c.Close()

// Increment a counter.
c.Increment("foo.counter")

// Gauge something.
c.Gauge("num_goroutine", runtime.NumGoroutine())

// Time something.
t := c.NewTiming()
ping("http://example.com/")
t.Send("homepage.response_time")

// It can also be used as a one-liner to easily time a function.
pingHomepage := func() {
    defer c.NewTiming().Send("homepage.response_time")

    ping("http://example.com/")
}
pingHomepage()

// Cloning a Client allows using different parameters while still using the
// same connection.
// This is way cheaper and more efficient than using New().
stat := c.Clone(statsd.Prefix("http"), statsd.SampleRate(0.2))
stat.Increment("view") // Increments http.view

下面几个是StatsD go 实现

以上是关于用于采集数据的工具——StatsD的主要内容,如果未能解决你的问题,请参考以下文章

使用 statsd-bridge 将数据从 statsd 推送到 prometheus

使用石墨和 statsd 绘制旧数据

使用 statsD 时,有啥方法可以填补石墨中缺失的数据?

ThinkPHP Http工具类(用于远程采集 远程下载) phpSimpleHtmlDom采集类库_Jquery筛选方式 使用phpQuery轻松采集网页内容

Statsd & Graphite - 以 CSV 格式获取数据

Es数据采集工具之filebeat安装和使用