- The
gosh
is an abbreviation for Go Statistics Handler. - This Repository is provided following functions.
- Go runtime statistics struct.
- Go runtime statistics API handler.
- Go runtime measure method.
- You can specify the favorite JSON encoder.
encoding/json
package.goccy/go-json
package.- The original package you created, and so on.
$ go get github.com/osamingo/gosh@latest
package main
import (
"encoding/json"
"io"
"log"
"net/http"
"github.com/osamingo/gosh"
)
func main() {
h, err := gosh.NewStatisticsHandler(func(w io.Writer) gosh.JSONEncoder {
return json.NewEncoder(w)
})
if err != nil {
log.Fatalln(err)
}
mux := http.NewServeMux()
mux.Handle("/healthz", h)
if err := http.ListenAndServe(":8080", mux); err != nil {
log.Fatalln(err)
}
}
$ curl "localhost:8080/healthz" | jq .
{
"timestamp": 1527317620,
"go_version": "go1.10.2",
"go_os": "darwin",
"go_arch": "amd64",
"cpu_num": 8,
"goroutine_num": 6,
"gomaxprocs": 8,
"cgo_call_num": 1,
"memory_alloc": 422272,
"memory_total_alloc": 422272,
"memory_sys": 3084288,
"memory_lookups": 6,
"memory_mallocs": 4720,
"memory_frees": 71,
"stack_inuse": 491520,
"heap_alloc": 422272,
"heap_sys": 1605632,
"heap_idle": 401408,
"heap_inuse": 1204224,
"heap_released": 0,
"heap_objects": 4649,
"gc_next": 4473924,
"gc_last": 0,
"gc_num": 0,
"gc_per_second": 0,
"gc_pause_per_second": 0,
"gc_pause": []
}
Released under the MIT License.