1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package server
- import (
- log "code.google.com/p/log4go"
- "encoding/json"
- gometrics "github.com/rcrowley/go-metrics"
- "time"
- )
- var reportInterval = 30 * time.Second
- var metrics struct {
- windowsCounter gometrics.Counter
- linuxCounter gometrics.Counter
- osxCounter gometrics.Counter
- otherCounter gometrics.Counter
- /*
- bytesInCount gometrics.Counter
- bytesOutCount gometrics.Counter
- */
- /*
- tunnelGauge gometrics.Gauge
- tcpTunnelGauge gometrics.Gauge
- requestGauge gometrics.Gauge
- */
- tunnelMeter gometrics.Meter
- tcpTunnelMeter gometrics.Meter
- requestMeter gometrics.Meter
- lostHeartbeatMeter gometrics.Meter
- requestTimer gometrics.Timer
- }
- func init() {
- metrics.windowsCounter = gometrics.NewCounter()
- metrics.linuxCounter = gometrics.NewCounter()
- metrics.osxCounter = gometrics.NewCounter()
- metrics.otherCounter = gometrics.NewCounter()
- /*
- metrics.bytesInCount = gometrics.NewCounter()
- metrics.bytesOutCount = gometrics.NewCounter()
- */
- /*
- metrics.tunnelGauge = gometrics.NewGauge()
- metrics.tcpTunnelGauge = gometrics.NewGauge()
- metrics.requestGauge = gometrics.NewGauge()
- */
- metrics.tunnelMeter = gometrics.NewMeter()
- metrics.tcpTunnelMeter = gometrics.NewMeter()
- metrics.requestMeter = gometrics.NewMeter()
- metrics.lostHeartbeatMeter = gometrics.NewMeter()
- metrics.requestTimer = gometrics.NewTimer()
- go func() {
- time.Sleep(reportInterval)
- log.Info("Server metrics: %s", MetricsJson())
- }()
- }
- func MetricsJson() []byte {
- buffer, _ := json.Marshal(map[string]interface{}{
- "windows": metrics.windowsCounter.Count(),
- "linux": metrics.linuxCounter.Count(),
- "osx": metrics.osxCounter.Count(),
- "other": metrics.otherCounter.Count(),
- "tunnelMeter.count": metrics.tunnelMeter.Count(),
- "tunnelMeter.m1": metrics.tunnelMeter.Rate1(),
- "requestMeter.count": metrics.requestMeter.Count(),
- "requestMeter.m1": metrics.requestMeter.Rate1(),
- })
- return buffer
- }
|