golang-stats-api-handler ======================== Golang cpu, memory, gc, etc information api handler. ## Install go get github.com/fukata/golang-stats-api-handler ## Example ```go import ( "net/http" "log" "github.com/fukata/golang-stats-api-handler" ) func main() { http.HandleFunc("/api/stats", stats_api.Handler) log.Fatal( http.ListenAndServe(":8080", nil) ) } ``` ## Response $ curl -i http://localhost:8080/api/stats/ HTTP/1.1 200 OK Content-Length: 712 Content-Type: application/json Date: Sun, 23 Aug 2015 16:52:13 GMT { "time": 1440348733548339479, "go_version": "go1.5", "go_os": "darwin", "go_arch": "amd64", "cpu_num": 8, "goroutine_num": 24, "gomaxprocs": 8, "cgo_call_num": 9, "memory_alloc": 3974536, "memory_total_alloc": 12857888, "memory_sys": 12871928, "memory_lookups": 52, "memory_mallocs": 144922, "memory_frees": 118936, "memory_stack": 688128, "heap_alloc": 3974536, "heap_sys": 8028160, "heap_idle": 2170880, "heap_inuse": 5857280, "heap_released": 0, "heap_objects": 25986, "gc_next": 4833706, "gc_last": 1440348732827834419, "gc_num": 4, "gc_per_second": 0, "gc_pause_per_second": 0, "gc_pause": [ 0.196828, 2.027442, 0.181887, 0.312866 ] } |Key |Value| |-------------------|----------------| |time |unix timestamp as nano-seconds| |go_version |runtime.Version()| |go_os |runtime.GOOS| |go_arch |runtime.GOARCH| |cpu_num |number of CPUs| |goroutine_num |number of goroutines| |gomaxprocs |runtime.GOMAXRPOCS(0)| |cgo_call_num |runtime.NumCgoCall()| |memory_alloc |bytes allocated and not yet freed| |memory_total_alloc |bytes allocated (even if freed)| |memory_sys |bytes obtained from system| |memory_lookups |number of pointer lookups| |memory_mallocs |number of mallocs| |memory_frees |number of frees| |memory_stack |bytes used by stack allocator| |heap_alloc |bytes allocated and not yet freed (same as memory_alloc above)| |heap_sys |bytes obtained from system (not same as memory_sys)| |heap_idle |bytes in idle spans| |heap_inuse |bytes in non-idle span| |heap_released |bytes released to the OS| |heap_objects |total number of allocated objects| |gc_next |next collection will happen when HeapAlloc ≥ this amount| |gc_last |end time of last collection| |gc_num |number of GC-run| |gc_per_second |number of GC-run per second| |gc_pause_per_second|pause duration by GC per seconds| |gc_pause |pause durations by GC| ## Plugins - Zabbix: [fukata/golang-stats-api-handler-zabbix-userparameter](https://github.com/fukata/golang-stats-api-handler-zabbix-userparameter) - Munin: [fukata/golang-stats-api-handler-munin-plugin](https://github.com/fukata/golang-stats-api-handler-munin-plugin)