diff --git a/monitor/self.go b/monitor/self.go index 49317d52..28dccb28 100644 --- a/monitor/self.go +++ b/monitor/self.go @@ -8,21 +8,35 @@ import ( ) type selfCollector struct { - allocDescr *metric.Description - recycleDescr *metric.Description - dumpDescr *metric.Description - defaultSizeDescr *metric.Description - maxSizeDescr *metric.Description + bufferAllocDescr *metric.Description + bufferRecycleDescr *metric.Description + bufferDumpDescr *metric.Description + bufferDefaultSizeDescr *metric.Description + bufferMaxSizeDescr *metric.Description + + heapAllocDescr *metric.Description + totalAllocDescr *metric.Description + heapSysDescr *metric.Description + heapIdleDescr *metric.Description + heapInuseDescr *metric.Description + heapObjectsDescr *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) + c.bufferAllocDescr = metric.NewDesc("self_bufferpool_alloc", "Number of buffer allocations", nil) + c.bufferRecycleDescr = metric.NewDesc("self_bufferpool_recycle", "Number of buffer recycles", nil) + c.bufferDumpDescr = metric.NewDesc("self_bufferpool_dump", "Number of buffer dumps", nil) + c.bufferDefaultSizeDescr = metric.NewDesc("self_bufferpool_default_size", "Default buffer size", nil) + c.bufferMaxSizeDescr = metric.NewDesc("self_bufferpool_max_size", "Max. buffer size for recycling", nil) + + c.heapAllocDescr = metric.NewDesc("self_mem_heap_alloc_bytes", "Number of bytes allocated on the heap", nil) + c.totalAllocDescr = metric.NewDesc("self_mem_total_alloc_bytes", "Number of bytes allocated since start", nil) + c.heapSysDescr = metric.NewDesc("self_mem_heap_sys_bytes", "Number of bytes obtained from OS", nil) + c.heapIdleDescr = metric.NewDesc("self_mem_heap_idle_bytes", "Number of unused bytes", nil) + c.heapInuseDescr = metric.NewDesc("self_mem_heap_inuse_bytes", "Number of used bytes", nil) + c.heapObjectsDescr = metric.NewDesc("self_mem_heap_objects", "Number of objects in heap", nil) return c } @@ -35,29 +49,40 @@ func (c *selfCollector) Prefix() string { func (c *selfCollector) Describe() []*metric.Description { return []*metric.Description{ - c.allocDescr, - c.recycleDescr, - c.dumpDescr, - c.defaultSizeDescr, - c.maxSizeDescr, + c.bufferAllocDescr, + c.bufferRecycleDescr, + c.bufferDumpDescr, + c.bufferDefaultSizeDescr, + c.bufferMaxSizeDescr, + c.heapAllocDescr, + c.totalAllocDescr, + c.heapSysDescr, + c.heapIdleDescr, + c.heapInuseDescr, + c.heapObjectsDescr, } } func (c *selfCollector) Collect() metric.Metrics { - stats := mem.Stats() + bufferstats := 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))) + metrics.Add(metric.NewValue(c.bufferAllocDescr, float64(bufferstats.Alloc))) + metrics.Add(metric.NewValue(c.bufferRecycleDescr, float64(bufferstats.Recycle))) + metrics.Add(metric.NewValue(c.bufferDumpDescr, float64(bufferstats.Dump))) + metrics.Add(metric.NewValue(c.bufferDefaultSizeDescr, float64(bufferstats.DefaultSize))) + metrics.Add(metric.NewValue(c.bufferMaxSizeDescr, float64(bufferstats.MaxSize))) memstats := runtime.MemStats{} runtime.ReadMemStats(&memstats) - //metrics.Add(metric.NewValue()) + metrics.Add(metric.NewValue(c.heapAllocDescr, float64(memstats.HeapAlloc))) + metrics.Add(metric.NewValue(c.totalAllocDescr, float64(memstats.TotalAlloc))) + metrics.Add(metric.NewValue(c.heapSysDescr, float64(memstats.HeapSys))) + metrics.Add(metric.NewValue(c.heapIdleDescr, float64(memstats.HeapIdle))) + metrics.Add(metric.NewValue(c.heapInuseDescr, float64(memstats.HeapInuse))) + metrics.Add(metric.NewValue(c.heapObjectsDescr, float64(memstats.Mallocs-memstats.Frees))) return metrics }