// New initializes a new DataDog client and sets it to the Client variable func New() (err error) { // Create our new DataDog statsd client Client, err = statsd.NewBuffered(clientAddress, clientBuffer) if err != nil { return } return }
// NewDatadogCollector creates a collector for a specific circuit with a // "github.com/DataDog/datadog-go/statsd".(*Client). // // addr is in the format "<host>:<port>" (e.g. "localhost:8125") // // prefix may be an empty string // // Example use // package main // // import ( // "github.com/afex/hystrix-go/plugins" // "github.com/afex/hystrix-go/hystrix/metric_collector" // ) // // func main() { // collector, err := plugins.NewDatadogCollector("localhost:8125", "") // if err != nil { // panic(err) // } // metricCollector.Registry.Register(collector) // } func NewDatadogCollector(addr, prefix string) (func(string) metricCollector.MetricCollector, error) { c, err := statsd.NewBuffered(addr, 100) if err != nil { return nil, err } // Prefix every metric with the app name c.Namespace = prefix return NewDatadogCollectorWithClient(c), nil }
// Connect -> Connect to datadog agent func Connect(namespace, host, port string) *Client { addr := host + ":" + port c, err := statsd.NewBuffered(addr, 2) if err != nil { log.Fatalln(err) os.Exit(1) } c.Namespace = namespace cl := Client{ Monitor: c, } return &cl }
func NewClient(ip net.IP, port int32, sleep int32, flows *FlowMap, lookup map[string]string, tags []string) (*Client, error) { cli, err := statsd.NewBuffered(net.JoinHostPort(ip.String(), strconv.Itoa(int(port))), statsdBufflen) if err != nil { cli = nil log.Errorf("Error instantiating stats Statter: %v", err) return nil, err } r := &Client{ client: cli, port: port, sleep: sleep, flows: flows, tags: tags, lookup: lookup, } r.t.Go(r.Report) return r, nil }
func NewFromConfig(conf Config) (ret Server, err error) { ret.Hostname = conf.Hostname ret.Tags = conf.Tags ret.DDHostname = conf.APIHostname ret.DDAPIKey = conf.Key ret.HistogramCounter = conf.HistCounters ret.HistogramPercentiles = conf.Percentiles ret.statsd, err = statsd.NewBuffered(conf.StatsAddr, 1024) if err != nil { return } ret.statsd.Namespace = "veneur." ret.statsd.Tags = ret.Tags // nil is a valid sentry client that noops all methods, if there is no DSN // we can just leave it as nil if conf.SentryDSN != "" { ret.sentry, err = raven.New(conf.SentryDSN) if err != nil { return } } ret.logger = logrus.New() if conf.Debug { ret.logger.Level = logrus.DebugLevel } ret.logger.Hooks.Add(sentryHook{ c: ret.sentry, hostname: ret.Hostname, lv: []logrus.Level{ logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel, }, }) ret.logger.WithField("number", conf.NumWorkers).Info("Starting workers") ret.Workers = make([]*Worker, conf.NumWorkers) for i := range ret.Workers { ret.Workers[i] = NewWorker(i+1, ret.statsd, ret.logger) // do not close over loop index go func(w *Worker) { defer func() { ret.ConsumePanic(recover()) }() w.Work() }(ret.Workers[i]) } ret.UDPAddr, err = net.ResolveUDPAddr("udp", conf.UDPAddr) if err != nil { return } ret.RcvbufBytes = conf.ReadBufferSizeBytes ret.HTTPAddr = conf.HTTPAddr conf.Key = "REDACTED" conf.SentryDSN = "REDACTED" ret.logger.WithField("config", conf).Debug("Initialized server") return }