quipo / statsd

Golang StatsD client
MIT License
164 stars 51 forks source link

StatsD client (Golang)

Build Status GoDoc

Introduction

Go Client library for StatsD. Contains a direct and a buffered client. The buffered version will hold and aggregate values for the same key in memory before flushing them at the defined frequency.

This client library was inspired by the one embedded in the Bit.ly NSQ project, and extended to support some extra custom events used at DataSift.

Installation

go get github.com/quipo/statsd

Supported event types

Sample usage

package main

import (
    "log"
    "os"
    "time"

    "github.com/quipo/statsd"
)

func main() {
    // init
    prefix := "myproject."
    statsdclient := statsd.NewStatsdClient("localhost:8125", prefix)
    err := statsdclient.CreateSocket()
    if nil != err {
        log.Println(err)
        os.Exit(1)
    }
    interval := time.Second * 2 // aggregate stats and flush every 2 seconds
    stats := statsd.NewStatsdBuffer(interval, statsdclient)
    defer stats.Close()

    // not buffered: send immediately
    statsdclient.Incr("mymetric", 4)

    // buffered: aggregate in memory before flushing
    stats.Incr("mymetric", 1)
    stats.Incr("mymetric", 3)
    stats.Incr("mymetric", 1)
    stats.Incr("mymetric", 1)
}

The string %HOST% in the metric name will automatically be replaced with the hostname of the server the event is sent from.

Changelog

Author

Lorenzo Alberton

Copyright

See LICENSE document