64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
package monitor
|
|
|
|
import (
|
|
"runtime"
|
|
|
|
"github.com/datarhei/core/v16/mem"
|
|
"github.com/datarhei/core/v16/monitor/metric"
|
|
)
|
|
|
|
type selfCollector struct {
|
|
allocDescr *metric.Description
|
|
recycleDescr *metric.Description
|
|
dumpDescr *metric.Description
|
|
defaultSizeDescr *metric.Description
|
|
maxSizeDescr *metric.Description
|
|
}
|
|
|
|
func NewSelfCollector() metric.Collector {
|
|
c := &selfCollector{}
|
|
|
|
c.allocDescr = metric.NewDesc("bufferpool_alloc", "Number of buffer allocations", nil)
|
|
c.recycleDescr = metric.NewDesc("bufferpool_recycle", "Number of buffer recycles", nil)
|
|
c.dumpDescr = metric.NewDesc("bufferpool_dump", "Number of buffer dumps", nil)
|
|
c.defaultSizeDescr = metric.NewDesc("bufferpool_default_size", "Default buffer size", nil)
|
|
c.maxSizeDescr = metric.NewDesc("bufferpool_max_size", "Max. buffer size for recycling", nil)
|
|
|
|
return c
|
|
}
|
|
|
|
func (c *selfCollector) Stop() {}
|
|
|
|
func (c *selfCollector) Prefix() string {
|
|
return "bufferpool"
|
|
}
|
|
|
|
func (c *selfCollector) Describe() []*metric.Description {
|
|
return []*metric.Description{
|
|
c.allocDescr,
|
|
c.recycleDescr,
|
|
c.dumpDescr,
|
|
c.defaultSizeDescr,
|
|
c.maxSizeDescr,
|
|
}
|
|
}
|
|
|
|
func (c *selfCollector) Collect() metric.Metrics {
|
|
stats := mem.Stats()
|
|
|
|
metrics := metric.NewMetrics()
|
|
|
|
metrics.Add(metric.NewValue(c.allocDescr, float64(stats.Alloc)))
|
|
metrics.Add(metric.NewValue(c.recycleDescr, float64(stats.Recycle)))
|
|
metrics.Add(metric.NewValue(c.dumpDescr, float64(stats.Dump)))
|
|
metrics.Add(metric.NewValue(c.defaultSizeDescr, float64(stats.DefaultSize)))
|
|
metrics.Add(metric.NewValue(c.maxSizeDescr, float64(stats.MaxSize)))
|
|
|
|
memstats := runtime.MemStats{}
|
|
runtime.ReadMemStats(&memstats)
|
|
|
|
//metrics.Add(metric.NewValue())
|
|
|
|
return metrics
|
|
}
|