• Stars
    star
    35
  • Rank 725,064 (Top 15 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 6 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Provide Go Statistics Handler, Struct, Measure Method

Go Statistics Handler

GitHub Actions codecov Go Report Card GoDoc GitHub license

About

  • 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.

Install

$ go get github.com/osamingo/gosh@latest

Usage

Example

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)
	}
}

Output

$ 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": []
}

License

Released under the MIT License.