|
@@ -4,6 +4,7 @@ import (
|
|
|
"runtime"
|
|
"runtime"
|
|
|
"runtime/pprof"
|
|
"runtime/pprof"
|
|
|
"time"
|
|
"time"
|
|
|
|
|
+ "sync"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
var (
|
|
@@ -50,6 +51,7 @@ var (
|
|
|
numCgoCalls int64
|
|
numCgoCalls int64
|
|
|
|
|
|
|
|
threadCreateProfile = pprof.Lookup("threadcreate")
|
|
threadCreateProfile = pprof.Lookup("threadcreate")
|
|
|
|
|
+ registerRuntimeMetricsOnce = sync.Once{}
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
// Capture new values for the Go runtime statistics exported in
|
|
// Capture new values for the Go runtime statistics exported in
|
|
@@ -146,67 +148,69 @@ func CaptureRuntimeMemStatsOnce(r Registry) {
|
|
|
// specifically runtime.MemStats. The runtimeMetrics are named by their
|
|
// specifically runtime.MemStats. The runtimeMetrics are named by their
|
|
|
// fully-qualified Go symbols, i.e. runtime.MemStats.Alloc.
|
|
// fully-qualified Go symbols, i.e. runtime.MemStats.Alloc.
|
|
|
func RegisterRuntimeMemStats(r Registry) {
|
|
func RegisterRuntimeMemStats(r Registry) {
|
|
|
- runtimeMetrics.MemStats.Alloc = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.BuckHashSys = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.DebugGC = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.EnableGC = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.Frees = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.HeapAlloc = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.HeapIdle = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.HeapInuse = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.HeapObjects = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.HeapReleased = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.HeapSys = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.LastGC = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.Lookups = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.Mallocs = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.MCacheInuse = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.MCacheSys = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.MSpanInuse = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.MSpanSys = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.NextGC = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.NumGC = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.GCCPUFraction = NewGaugeFloat64()
|
|
|
|
|
- runtimeMetrics.MemStats.PauseNs = NewHistogram(NewExpDecaySample(1028, 0.015))
|
|
|
|
|
- runtimeMetrics.MemStats.PauseTotalNs = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.StackInuse = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.StackSys = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.Sys = NewGauge()
|
|
|
|
|
- runtimeMetrics.MemStats.TotalAlloc = NewGauge()
|
|
|
|
|
- runtimeMetrics.NumCgoCall = NewGauge()
|
|
|
|
|
- runtimeMetrics.NumGoroutine = NewGauge()
|
|
|
|
|
- runtimeMetrics.NumThread = NewGauge()
|
|
|
|
|
- runtimeMetrics.ReadMemStats = NewTimer()
|
|
|
|
|
|
|
+ registerRuntimeMetricsOnce.Do(func() {
|
|
|
|
|
+ runtimeMetrics.MemStats.Alloc = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.BuckHashSys = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.DebugGC = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.EnableGC = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.Frees = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.HeapAlloc = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.HeapIdle = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.HeapInuse = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.HeapObjects = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.HeapReleased = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.HeapSys = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.LastGC = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.Lookups = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.Mallocs = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.MCacheInuse = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.MCacheSys = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.MSpanInuse = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.MSpanSys = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.NextGC = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.NumGC = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.GCCPUFraction = NewGaugeFloat64()
|
|
|
|
|
+ runtimeMetrics.MemStats.PauseNs = NewHistogram(NewExpDecaySample(1028, 0.015))
|
|
|
|
|
+ runtimeMetrics.MemStats.PauseTotalNs = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.StackInuse = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.StackSys = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.Sys = NewGauge()
|
|
|
|
|
+ runtimeMetrics.MemStats.TotalAlloc = NewGauge()
|
|
|
|
|
+ runtimeMetrics.NumCgoCall = NewGauge()
|
|
|
|
|
+ runtimeMetrics.NumGoroutine = NewGauge()
|
|
|
|
|
+ runtimeMetrics.NumThread = NewGauge()
|
|
|
|
|
+ runtimeMetrics.ReadMemStats = NewTimer()
|
|
|
|
|
|
|
|
- r.Register("runtime.MemStats.Alloc", runtimeMetrics.MemStats.Alloc)
|
|
|
|
|
- r.Register("runtime.MemStats.BuckHashSys", runtimeMetrics.MemStats.BuckHashSys)
|
|
|
|
|
- r.Register("runtime.MemStats.DebugGC", runtimeMetrics.MemStats.DebugGC)
|
|
|
|
|
- r.Register("runtime.MemStats.EnableGC", runtimeMetrics.MemStats.EnableGC)
|
|
|
|
|
- r.Register("runtime.MemStats.Frees", runtimeMetrics.MemStats.Frees)
|
|
|
|
|
- r.Register("runtime.MemStats.HeapAlloc", runtimeMetrics.MemStats.HeapAlloc)
|
|
|
|
|
- r.Register("runtime.MemStats.HeapIdle", runtimeMetrics.MemStats.HeapIdle)
|
|
|
|
|
- r.Register("runtime.MemStats.HeapInuse", runtimeMetrics.MemStats.HeapInuse)
|
|
|
|
|
- r.Register("runtime.MemStats.HeapObjects", runtimeMetrics.MemStats.HeapObjects)
|
|
|
|
|
- r.Register("runtime.MemStats.HeapReleased", runtimeMetrics.MemStats.HeapReleased)
|
|
|
|
|
- r.Register("runtime.MemStats.HeapSys", runtimeMetrics.MemStats.HeapSys)
|
|
|
|
|
- r.Register("runtime.MemStats.LastGC", runtimeMetrics.MemStats.LastGC)
|
|
|
|
|
- r.Register("runtime.MemStats.Lookups", runtimeMetrics.MemStats.Lookups)
|
|
|
|
|
- r.Register("runtime.MemStats.Mallocs", runtimeMetrics.MemStats.Mallocs)
|
|
|
|
|
- r.Register("runtime.MemStats.MCacheInuse", runtimeMetrics.MemStats.MCacheInuse)
|
|
|
|
|
- r.Register("runtime.MemStats.MCacheSys", runtimeMetrics.MemStats.MCacheSys)
|
|
|
|
|
- r.Register("runtime.MemStats.MSpanInuse", runtimeMetrics.MemStats.MSpanInuse)
|
|
|
|
|
- r.Register("runtime.MemStats.MSpanSys", runtimeMetrics.MemStats.MSpanSys)
|
|
|
|
|
- r.Register("runtime.MemStats.NextGC", runtimeMetrics.MemStats.NextGC)
|
|
|
|
|
- r.Register("runtime.MemStats.NumGC", runtimeMetrics.MemStats.NumGC)
|
|
|
|
|
- r.Register("runtime.MemStats.GCCPUFraction", runtimeMetrics.MemStats.GCCPUFraction)
|
|
|
|
|
- r.Register("runtime.MemStats.PauseNs", runtimeMetrics.MemStats.PauseNs)
|
|
|
|
|
- r.Register("runtime.MemStats.PauseTotalNs", runtimeMetrics.MemStats.PauseTotalNs)
|
|
|
|
|
- r.Register("runtime.MemStats.StackInuse", runtimeMetrics.MemStats.StackInuse)
|
|
|
|
|
- r.Register("runtime.MemStats.StackSys", runtimeMetrics.MemStats.StackSys)
|
|
|
|
|
- r.Register("runtime.MemStats.Sys", runtimeMetrics.MemStats.Sys)
|
|
|
|
|
- r.Register("runtime.MemStats.TotalAlloc", runtimeMetrics.MemStats.TotalAlloc)
|
|
|
|
|
- r.Register("runtime.NumCgoCall", runtimeMetrics.NumCgoCall)
|
|
|
|
|
- r.Register("runtime.NumGoroutine", runtimeMetrics.NumGoroutine)
|
|
|
|
|
- r.Register("runtime.NumThread", runtimeMetrics.NumThread)
|
|
|
|
|
- r.Register("runtime.ReadMemStats", runtimeMetrics.ReadMemStats)
|
|
|
|
|
|
|
+ r.Register("runtime.MemStats.Alloc", runtimeMetrics.MemStats.Alloc)
|
|
|
|
|
+ r.Register("runtime.MemStats.BuckHashSys", runtimeMetrics.MemStats.BuckHashSys)
|
|
|
|
|
+ r.Register("runtime.MemStats.DebugGC", runtimeMetrics.MemStats.DebugGC)
|
|
|
|
|
+ r.Register("runtime.MemStats.EnableGC", runtimeMetrics.MemStats.EnableGC)
|
|
|
|
|
+ r.Register("runtime.MemStats.Frees", runtimeMetrics.MemStats.Frees)
|
|
|
|
|
+ r.Register("runtime.MemStats.HeapAlloc", runtimeMetrics.MemStats.HeapAlloc)
|
|
|
|
|
+ r.Register("runtime.MemStats.HeapIdle", runtimeMetrics.MemStats.HeapIdle)
|
|
|
|
|
+ r.Register("runtime.MemStats.HeapInuse", runtimeMetrics.MemStats.HeapInuse)
|
|
|
|
|
+ r.Register("runtime.MemStats.HeapObjects", runtimeMetrics.MemStats.HeapObjects)
|
|
|
|
|
+ r.Register("runtime.MemStats.HeapReleased", runtimeMetrics.MemStats.HeapReleased)
|
|
|
|
|
+ r.Register("runtime.MemStats.HeapSys", runtimeMetrics.MemStats.HeapSys)
|
|
|
|
|
+ r.Register("runtime.MemStats.LastGC", runtimeMetrics.MemStats.LastGC)
|
|
|
|
|
+ r.Register("runtime.MemStats.Lookups", runtimeMetrics.MemStats.Lookups)
|
|
|
|
|
+ r.Register("runtime.MemStats.Mallocs", runtimeMetrics.MemStats.Mallocs)
|
|
|
|
|
+ r.Register("runtime.MemStats.MCacheInuse", runtimeMetrics.MemStats.MCacheInuse)
|
|
|
|
|
+ r.Register("runtime.MemStats.MCacheSys", runtimeMetrics.MemStats.MCacheSys)
|
|
|
|
|
+ r.Register("runtime.MemStats.MSpanInuse", runtimeMetrics.MemStats.MSpanInuse)
|
|
|
|
|
+ r.Register("runtime.MemStats.MSpanSys", runtimeMetrics.MemStats.MSpanSys)
|
|
|
|
|
+ r.Register("runtime.MemStats.NextGC", runtimeMetrics.MemStats.NextGC)
|
|
|
|
|
+ r.Register("runtime.MemStats.NumGC", runtimeMetrics.MemStats.NumGC)
|
|
|
|
|
+ r.Register("runtime.MemStats.GCCPUFraction", runtimeMetrics.MemStats.GCCPUFraction)
|
|
|
|
|
+ r.Register("runtime.MemStats.PauseNs", runtimeMetrics.MemStats.PauseNs)
|
|
|
|
|
+ r.Register("runtime.MemStats.PauseTotalNs", runtimeMetrics.MemStats.PauseTotalNs)
|
|
|
|
|
+ r.Register("runtime.MemStats.StackInuse", runtimeMetrics.MemStats.StackInuse)
|
|
|
|
|
+ r.Register("runtime.MemStats.StackSys", runtimeMetrics.MemStats.StackSys)
|
|
|
|
|
+ r.Register("runtime.MemStats.Sys", runtimeMetrics.MemStats.Sys)
|
|
|
|
|
+ r.Register("runtime.MemStats.TotalAlloc", runtimeMetrics.MemStats.TotalAlloc)
|
|
|
|
|
+ r.Register("runtime.NumCgoCall", runtimeMetrics.NumCgoCall)
|
|
|
|
|
+ r.Register("runtime.NumGoroutine", runtimeMetrics.NumGoroutine)
|
|
|
|
|
+ r.Register("runtime.NumThread", runtimeMetrics.NumThread)
|
|
|
|
|
+ r.Register("runtime.ReadMemStats", runtimeMetrics.ReadMemStats)
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|