wangming1993 / issues

记录学习中的一些问题,体会与心得 https://wangming1993.github.io/issues
8 stars 4 forks source link

go-metrics + influxDB的使用 #36

Open wangming1993 opened 7 years ago

wangming1993 commented 7 years ago
package main

import (
    "fmt"
    "github.com/rcrowley/go-metrics"
    "github.com/vrischmann/go-metrics-influxdb"
    //"reflect"
    "math/rand"
    "time"
)

var (
    database = "local"
    url      = "http://127.0.0.1:8086"
)

var (
    registry       = metrics.DefaultRegistry
    defaultCounter = metrics.NewCounter()
    defaultMeter   = metrics.NewMeter()
    defaultGuage   = metrics.NewGauge()
    defaultTimer   = metrics.NewTimer()
)

func main() {
    go push(registry)

    produce(registry)
}

func push(registry metrics.Registry) {
    duration := time.Second * 5
    influxdb.InfluxDB(registry, duration, url, database, "", "")
}

func produce(registry metrics.Registry) {
    intervalTicker := time.Tick(time.Second * 1)
    var times int64
    for {
        if times > 10 {
            //break
        }
        select {
        case <-intervalTicker:
            times++
            fmt.Println("Time comes...")
            counter(registry)
            meter(registry)
            gauge(registry)
            timer(registry)
        }
    }
    fmt.Println("Done...")
}

func counter(registry metrics.Registry) {
    registry.GetOrRegister("counert", defaultCounter)
    incr := random(100)
    if incr%2 == 0 {
        incr = 0 - incr
    }
    defaultCounter.Inc(incr)
}

func meter(registry metrics.Registry) {
    registry.GetOrRegister("meter", defaultMeter)
    defaultMeter.Mark(random(100))
}

func gauge(registry metrics.Registry) {
    registry.GetOrRegister("gauge", defaultGuage)
    defaultGuage.Update(random(100))
}

func timer(registry metrics.Registry) {
    registry.GetOrRegister("timer", defaultTimer)
    defaultTimer.Time(func() {})
    defaultTimer.Update(time.Second)
}

func random(n int) int64 {
    n = rand.Intn(n)
    return int64(n)
}