Skip to content

go-runtime-stats - Golang package providing collecting go runtime metrics and sending it to graphite server.

License

Notifications You must be signed in to change notification settings

jtaczanowski/go-runtime-stats

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-runtime-stats Build Status Coverage Status Go Report Card

go-runtime-stats - Golang package providing collecting go runtime stats (runtime.ReadMemStats()) and sending it to graphite server.

Download

go get github.com/jtaczanowski/go-runtime-stats

Example usage (also included in _example catalog):

package main

import (
	"time"

	"github.com/jtaczanowski/go-runtime-stats"
)

func main() {
	goruntimestats.Start(goruntimestats.Config{
		GraphiteHost:     "127.0.0.1",
		GraphitePort:     2003,
		GraphiteProtocol: "udp",
		GraphitePrefix:   "metrics.prefix",
		Interval:         time.Second * 60,
		HTTPOn:           true,
		HTTPPort:         9999,
	})

	// insted of empty select (used for block) put your code
	select {}
}

Example Grafana dashboard (JSON file included in _example catalog):

alt text

Metrics description:

Metric Source Description Unit
cpu.count runtime.runtime.NumCPU() Number of machine CPU number of CPUs
cpu.goroutines_number runtime.NumGoroutine() Number of goroutines number
cpu.cgo_calls_number_delta runtime.NumCgoCall() Delta of Cgo calls from last collect interval number
cpu.cgo_calls_number_total runtime.NumCgoCall() Summ of Cgo calls number
mem.general.alloc_bytes runtime.MemStats.Alloc Alloc is bytes of allocated heap objects. bytes
mem.general.total_bytes runtime.MemStats.TotalAlloc TotalAlloc is cumulative bytes allocated for heap objects. bytes
mem.general.sys_bytes runtime.MemStats.Sys Sys is the total bytes of memory obtained from the OS. bytes
mem.general.lookups_number_delta runtime.MemStats.Lookups Delta of Lookups from last collect interval number
mem.general.mallocs_number_delta runtime.MemStats.Mallocs Delta of Mallocs from last collect interval number
mem.general.frees_number_delta runtime.MemStats.Frees Delta of Frees from last collect interval number
mem.general.lookups_number_total runtime.MemStats.Lookups Lookups is the number of pointer lookups performed by the runtime. number
mem.general.mallocs_number_total runtime.MemStats.Mallocs Mallocs is the cumulative count of heap objects allocated. number
mem.general.frees_number_total runtime.MemStats.Frees Frees is the cumulative count of heap objects freed. number
mem.heap.alloc_bytes runtime.MemStats.HeapAlloc HeapAlloc is bytes of allocated heap objects. bytes
mem.heap.sys_bytes runtime.MemStats.HeapSys HeapSys is bytes of heap memory obtained from the OS. bytes
mem.heap.idle_bytes runtime.MemStats.HeapIdle HeapIdle is bytes in idle (unused) spans. bytes
mem.heap.inuse_bytes runtime.MemStats.HeapInuse HeapInuse is bytes in in-use spans. bytes
mem.heap.released_bytes runtime.MemStats.HeapReleased HeapReleased is bytes of physical memory returned to the OS. bytes
mem.heap.objects_number runtime.MemStats.HeapObjects HeapObjects is the number of allocated heap objects. number
mem.stack.inuse_bytes runtime.MemStats.StackInuse StackInuse is bytes in stack spans. bytes
mem.stack.sys_bytes runtime.MemStats.StackSys StackSys is bytes of stack memory obtained from the OS. bytes
mem.stack.mspan_inuse_bytes runtime.MemStats.MSpanInuse MSpanInuse is bytes of allocated mspan structures. bytes
mem.stack.mspan_sys_bytes runtime.MemStats.MSpanSys MSpanSys is bytes of memory obtained from the OS for mspan structures. bytes
mem.stack.mcache_inuse_bytes runtime.MemStats.MCacheInuse MCacheInuse is bytes of allocated mcache structures. bytes
mem.stack.mcache_sys_bytes runtime.MemStats.MCacheSys MCacheSys is bytes of memory obtained from the OS for mcache structures. bytes
mem.othersys_bytes runtime.MemStats.OtherSys OtherSys is bytes of memory in miscellaneous off-heap runtime allocations. bytes
gc.sys_bytes runtime.MemStats.GCSys GCSys is bytes of memory in garbage collection metadata. bytes
gc.next_bytes runtime.MemStats.NextGC NextGC is the target heap size of the next GC cycle. bytes
gc.between_period_s runtime.MemStats.LastGC Between last two GC period seconds
gc.time_from_last_gc_s runtime.MemStats.LastGC Seconds from last GC seconds
gc.pause_ns_total_delta runtime.MemStats.PauseTotalNs PauseTotalNs delta in last collect interval nanoseconds
gc.pause_ns_total runtime.MemStats.PauseTotalNs PauseTotalNs is the cumulative nanoseconds in GC stop-the-world pauses since the program started. nanosecond
gc.pause_ns runtime.MemStats.PauseNs Last GC pause in last collect interval nanoseconds
gc.pause_last_ns runtime.MemStats.PauseNs Last GC pause nanosecond
gc.number_delta runtime.MemStats.NumGC Delta of GC cycles in last collect interval number
gc.number_total runtime.MemStats.NumGC NumGC is the number of completed GC cycles. number
gc.cpu_fraction_total runtime.MemStats.GCCPUFraction GCCPUFraction is the fraction of this program's available CPU time used by the GC since the program started. number

All metrics are exposed on HTTP api. Default HTTP server settings: http://localhost:9999

root@alpine(ro):~# curl localhost:9999
{
  "cpu": {
    "cpu.count": 2,
    "cpu.goroutines_number": 6,
    "cpu.cgo_calls_number_delta": 0,
    "cpu.cgo_calls_number_total": 1
  },
  "memory": {
    "mem.general.alloc_bytes": 519688,
    "mem.general.total_bytes": 519688,
    "mem.general.sys_bytes": 69926912,
    "mem.general.lookups_number_delta": 0,
    "mem.general.mallocs_number_delta": 577,
    "mem.general.frees_number_delta": 71,
    "mem.general.lookups_number_total": 0,
    "mem.general.mallocs_number_total": 4277,
    "mem.general.frees_number_total": 489,
    "mem.heap.alloc_bytes": 519688,
    "mem.heap.sys_bytes": 66682880,
    "mem.heap.idle_bytes": 65470464,
    "mem.heap.inuse_bytes": 1212416,
    "mem.heap.released_bytes": 0,
    "mem.heap.objects_number": 3788,
    "mem.stack.inuse_bytes": 425984,
    "mem.stack.sys_bytes": 425984,
    "mem.stack.mspan_inuse_bytes": 19608,
    "mem.stack.mspan_sys_bytes": 32768,
    "mem.stack.mcache_inuse_bytes": 3456,
    "mem.stack.mcache_sys_bytes": 16384,
    "mem.othersys_bytes": 531848
  },
  "gc": {
    "gc.sys_bytes": 2234368,
    "gc.next_bytes": 4473924,
    "gc.between_period_s": 0,
    "gc.time_from_last_gc_s": 0,
    "gc.pause_ns_total_delta": 0,
    "gc.pause_ns_total": 0,
    "gc.pause_ns": 0,
    "gc.pause_last_ns": 0,
    "gc.number_delta": 0,
    "gc.number_total": 0,
    "gc.cpu_fraction_total": 0
  }
}

Inspired by https://github.com/tevjef/go-runtime-metrics and https://github.com/YoSmudge/go-stats

About

go-runtime-stats - Golang package providing collecting go runtime metrics and sending it to graphite server.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages