本文整理汇总了Golang中github.com/quipo/statsd.NewStatsdClient函数的典型用法代码示例。如果您正苦于以下问题:Golang NewStatsdClient函数的具体用法?Golang NewStatsdClient怎么用?Golang NewStatsdClient使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewStatsdClient函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
// Initialize the StatsD client
prefix := "test.rob-egan."
statsdclient := statsd.NewStatsdClient(agentServer, prefix)
err := statsdclient.CreateSocket()
if err != nil {
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()
// Handler functions
http.HandleFunc("/", handler)
http.HandleFunc("/lissajous", func(w http.ResponseWriter, r *http.Request) {
lissajous(w)
})
http.HandleFunc("/debug", debug)
http.HandleFunc("/count", counter)
http.HandleFunc("/help", help)
// The actual web server
log.Print("Starting web server...\n")
log.Print("Point your browser to http://", webServerHost, "/help for more info...\n")
log.Fatal(http.ListenAndServe(webServerHost, nil))
}
示例2: runLoop
func runLoop(redisHost string, redisPort int64, redisDb int64, statsdHost string, statsdPort int64, statsPrefix string, interval int64, queues []string) {
client := redis.NewClient(&redis.Options{
Addr: fmt.Sprintf("%s:%d", redisHost, redisPort),
DB: redisDb,
})
_, connErr := client.Ping().Result()
fmt.Println("connection errors? ", connErr)
statsdClient := statsd.NewStatsdClient(
fmt.Sprintf("%s:%d", statsdHost, statsdPort),
fmt.Sprintf("%s.", statsPrefix),
)
statsdClient.CreateSocket()
stats := statsd.NewStatsdBuffer(time.Second*2, statsdClient)
defer stats.Close()
timeoutInterval := time.Duration(interval) * time.Millisecond
for true {
for _, name := range queues {
go func(oneName string) {
listLength, err := client.LLen(oneName).Result()
stats.Gauge(oneName, listLength)
fmt.Println(oneName, listLength, err)
}(name)
}
time.Sleep(timeoutInterval)
}
}
示例3: Connect
func (varnishncsa *Varnishncsa) Connect() {
statsdclient := statsd.NewStatsdClient(varnishncsa.StatsdServer, varnishncsa.StatsdPrefix)
statsdclient.CreateSocket()
interval := time.Duration(int(time.Millisecond) * varnishncsa.StatsdSendInterval)
stats := statsd.NewStatsdBuffer(interval, statsdclient)
defer stats.Close()
cmd := exec.Command("varnishncsa", "-F", `%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i" %{Varnish:time_firstbyte}x`)
stdout, outerr := cmd.StdoutPipe()
if outerr != nil {
log.Fatal(outerr)
}
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
r := Record{scanner.Text(), stats, varnishncsa.RecordRegex}
r.Process()
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "There was an error with the scanner attached to varnishncsa", err)
}
cmd.Wait()
}
示例4: CreateStatsdClient
// CreateStatsdClient creates a local instances of a statsd client. Any errors will be logged to
// console and ignored.
func CreateStatsdClient(statsdURL, statsdPrefix string) error {
lock.Lock()
defer lock.Unlock()
if stats != noopClient {
// Already initialized. Don't overwrite
return nil
}
if statsdURL != "" {
hostname, err := os.Hostname()
if err != nil {
log.Printf("Could not read hostname. Using default noop statsd client: %s", err)
return err
}
prefix := fmt.Sprintf("%s.%s.artifacts.", statsdPrefix, hostname)
statsdClient := statsd.NewStatsdClient(statsdURL, prefix)
if statsdClient != nil {
stats = statsd.NewStatsdBuffer(updateInterval, statsdClient)
}
} else {
log.Println("No statsd URL provided. Using default noop statsd client")
}
return nil
}
示例5: InitStatsd
func InitStatsd(ch chan *map[string]map[string]int64, conf *StatsdConfig) error {
go func() {
statsdclient := statsd.NewStatsdClient(conf.Host, conf.Prefix)
statsdclient.CreateSocket()
interval, err := time.ParseDuration(conf.Interval)
if err != nil {
Conf.Logger.Fatalf("can't parse interval %+v", err)
}
stats := statsd.NewStatsdBuffer(interval, statsdclient)
defer stats.Close()
for data := range statsdCh {
for op, values := range *data {
for key, val := range values {
switch op {
case "increment":
debug("send incr", key, val)
go stats.Incr(key, val)
case "timing":
debug("send timing", key, val)
go stats.Timing(key, val)
case "gauge":
debug("send gauge", key, val)
go stats.Gauge(key, val)
}
}
}
}
}()
return nil
}
示例6: initStatsd
func initStatsd(address string, prefix string) *statsd.StatsdBuffer {
statsdclient := statsd.NewStatsdClient(address, prefix)
statsdclient.CreateSocket()
interval := time.Second * 10 // aggregate stats and flush every 2 seconds
stats := statsd.NewStatsdBuffer(interval, statsdclient)
return stats
}
示例7: mustStartStatsd
func mustStartStatsd(host string, prefix string, frequency time.Duration) *statsd.StatsdBuffer {
sClient := statsd.NewStatsdClient(opts.StatsDHost, opts.StatsDPrefix)
if err := sClient.CreateSocket(); err != nil {
log.WithField("error", err).Fatal("could not open socket to statsd")
}
return statsd.NewStatsdBuffer(opts.statsdFrequency, sClient)
}
示例8: main
func main() {
setupHTTP()
uaaURL, err := url.Parse(uaa)
if nil != err {
panic("Failed to parse uaa url!")
}
creds, err := uaaclientcredentials.New(uaaURL, true, clientID, clientSecret)
if nil != err {
panic("Failed to obtain creds!")
}
consumer := noaa.NewConsumer(dopplerAddress, &tls.Config{InsecureSkipVerify: true}, nil)
httpStartStopProcessor := processors.NewHttpStartStopProcessor()
sender := statsd.NewStatsdClient(statsdAddress, statsdPrefix)
sender.CreateSocket()
var processedMetrics []metrics.Metric
msgChan := make(chan *events.Envelope)
go func() {
defer close(msgChan)
errorChan := make(chan error)
token, err := creds.GetBearerToken()
if nil != err {
panic(err)
}
go consumer.Firehose(firehoseSubscriptionID, token, msgChan, errorChan, nil)
for err := range errorChan {
fmt.Fprintf(os.Stderr, "%v\n", err.Error())
}
}()
for msg := range msgChan {
eventType := msg.GetEventType()
switch eventType {
case events.Envelope_HttpStartStop:
processedMetrics = httpStartStopProcessor.Process(msg)
default:
atomic.AddUint64(&count, 1)
// do nothing
}
if len(processedMetrics) > 0 {
for _, metric := range processedMetrics {
metric.Send(sender)
}
}
processedMetrics = nil
}
}
示例9: getStatsdBuffer
func getStatsdBuffer(host string) (*statsd.StatsdBuffer, error) {
statsdclient := statsd.NewStatsdClient(host, "aws.sqs.")
if err := statsdclient.CreateSocket(); err != nil {
log.WithField("error", err).Warn("unable to open socket for statsd")
return nil, err
}
return statsd.NewStatsdBuffer(time.Minute, statsdclient), nil
}
示例10: NewStatsdClient
func NewStatsdClient(simulationPrefix string) *StatsdClient {
statsdClient := statsd.NewStatsdClient("localhost:8125", simulationPrefix)
statsdClient.CreateSocket()
interval := time.Second * 2
stats := statsd.NewStatsdBuffer(interval, statsdClient)
return &StatsdClient{
Stats: stats,
}
}
示例11: ConnectToURL
func ConnectToURL(s string, prefix string) (c *statsd.StatsdClient, err error) {
statsdUrl, err := url.Parse(s)
if err != nil {
return nil, err
}
c = statsd.NewStatsdClient(statsdUrl.Host, prefix)
err = c.CreateSocket()
return c, err
}
示例12: main
func main() {
consumer := noaa.NewConsumer(DopplerAddress, &tls.Config{InsecureSkipVerify: true}, nil)
httpStartStopProcessor := processors.NewHttpStartStopProcessor()
valueMetricProcessor := processors.NewValueMetricProcessor()
containerMetricProcessor := processors.NewContainerMetricProcessor()
heartbeatProcessor := processors.NewHeartbeatProcessor()
counterProcessor := processors.NewCounterProcessor()
sender := statsd.NewStatsdClient(statsdAddress, statsdPrefix)
sender.CreateSocket()
var processedMetrics []metrics.Metric
msgChan := make(chan *events.Envelope)
go func() {
defer close(msgChan)
errorChan := make(chan error)
go consumer.Firehose(firehoseSubscriptionId, authToken, msgChan, errorChan, nil)
for err := range errorChan {
fmt.Fprintf(os.Stderr, "%v\n", err.Error())
}
}()
for msg := range msgChan {
eventType := msg.GetEventType()
// graphite-nozzle can handle CounterEvent, ContainerMetric, Heartbeat,
// HttpStartStop and ValueMetric events
switch eventType {
case events.Envelope_ContainerMetric:
processedMetrics = containerMetricProcessor.Process(msg)
case events.Envelope_CounterEvent:
processedMetrics = counterProcessor.Process(msg)
case events.Envelope_Heartbeat:
processedMetrics = heartbeatProcessor.Process(msg)
case events.Envelope_HttpStartStop:
processedMetrics = httpStartStopProcessor.Process(msg)
case events.Envelope_ValueMetric:
processedMetrics = valueMetricProcessor.Process(msg)
default:
// do nothing
}
if len(processedMetrics) > 0 {
for _, metric := range processedMetrics {
metric.Send(sender)
}
}
processedMetrics = nil
}
}
示例13: Initialize
func (driver *QuipoStatsdDriver) Initialize(connectionString string) error {
client := quipo.NewStatsdClient(connectionString, "")
err := client.CreateSocket()
if err != nil {
return err
}
driver.conn = client
driver.connectionString = connectionString
return nil
}
示例14: main
func main() {
fmt.Println("Starting eISCP (ethernet Integra Serial Communication Protocol) Gateway")
// Command line options
flag.BoolVar(&debug, "debug", false, "enable verbose debugging")
flag.BoolVar(&statsEnabled, "stats", false, "enable stats collecting")
flag.StringVar(&defaultDevice, "device", "192.168.2.143", "IP address of device to connect to")
flag.IntVar(&devicePort, "port", 60128, "port on device to commmunicate with")
flag.IntVar(&defaultPort, "serve", 3000, "port to host REST API on")
flag.StringVar(&statsdAddress, "statsd", "localhost:8125", "IP and Port of Statsd server")
flag.StringVar(&statsdPrefix, "prefix", "eiscp", "A prefix prepended to all stats")
// Now that we've defined our flags, parse them
flag.Parse()
if debug {
fmt.Println("Displaying debug output.")
}
// init
statsdclient := statsd.NewStatsdClient(statsdAddress, statsdPrefix)
if statsEnabled {
if debug {
fmt.Println("Attempting connection to statsd")
}
statsdclient.CreateSocket()
interval := time.Second * 2 // aggregate stats and flush every 2 seconds
stats = statsd.NewStatsdBuffer(interval, statsdclient)
defer stats.Close()
}
fmt.Println("Searching for device on port", devicePort, "at", defaultDevice)
// Do our device stuff here
go func() {
for true {
deviceLoop()
}
}()
r := mux.NewRouter()
r.HandleFunc("/kill", HandleKill) //Debug Function
r.HandleFunc("/status/", GetStatus).Methods("GET")
r.HandleFunc("/device/", DeleteDevice).Methods("DELETE")
r.HandleFunc("/device/{ip}/{port}", PutDevice).Methods("PUT")
r.HandleFunc("/device/{property}", GetProperty).Methods("GET")
r.HandleFunc("/device/{property}/{value}", PostProperty).Methods("POST")
http.Handle("/", r)
fmt.Println("REST API listening on port", strconv.Itoa(defaultPort))
http.ListenAndServe(":"+strconv.Itoa(defaultPort), nil)
}
示例15: TestMain
func TestMain(m *testing.M) {
var statsdHost = flag.String("test_statsd_host", "", "Statsd server hostname or IP")
var statsdInterval = flag.Int("test_statsd_interval", 3, "Seconds between metric flush")
var statsdPrefix = flag.String("test_statsd_prefix", "gopassivedns", "statsd metric prefix")
flag.Parse()
if *statsdHost != "" {
statsdclient := statsd.NewStatsdClient(*statsdHost, *statsdPrefix)
stats = statsd.NewStatsdBuffer(time.Duration(*statsdInterval)*time.Second, statsdclient)
}
os.Exit(m.Run())
}