statsviz is a free, open source monitoring & observability project written in Go and released under MIT. It has 3,645 GitHub stars, 124 forks and 10 open issues, and was last pushed 8 hours ago. On this registry it ranks #109 of 191 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available.




Go Reference Latest tag Mentioned in Awesome Go

Linux CI Others CI Codecov

Statsviz

Visualize real time plots of your Go program runtime/metrics including heap, objects, goroutines, GC pauses, scheduler and more.

statsviz ui statsviz ui

Install

Get the latest version:

go get github.com/arl/statsviz@latest

Usage

Register Statsviz HTTP handlers with your application http.ServeMux.

mux := http.NewServeMux()
statsviz.Register(mux)

go func() {
    log.Println(http.ListenAndServe("localhost:8080", mux))
}()

Open your browser at http://localhost:8080/debug/statsviz

Examples

If you check any of the boxes below:

  • you use some HTTP framework
  • you want Statsviz to be located at /my/path/to/statsviz rather than /debug/statsviz
  • you want Statsviz under https:// rather than http://
  • you want Statsviz behind some middleware

Then you should call statsviz.NewServer() (with or without options depending on your use case) in order to access the Index() and Ws() methods.

srv, err := statsviz.NewServer(); // Create server or handle error
if err != nil { /* handle error */ }

// Do something with the handlers.
srv.Index()     // UI (dashboard) handler func
srv.Ws()        // Websocket handler func

Examples for the following cases, and more, are found in the _example directory:

  • use of http.DefaultServeMux or your own http.ServeMux
  • wrap HTTP handler behind a middleware
  • register the web page at /foo/bar instead of /debug/statsviz
  • use https:// rather than http://
  • register Statsviz handlers with various Go HTTP libraries/frameworks:

How Does That Work?

Statsviz is made of two parts:

  • The Ws serves a Websocket endpoint. When a client connects, your program's runtime/metrics are sent to the browser, once per second, via the websocket connection.

  • the Index http handler serves Statsviz user interface at /debug/statsviz at the address served by your program. When served, the UI connects to the Websocket endpoint and starts receiving data points.

Documentation

Go API

Check out the API reference on pkg.go.dev.

Web User Interface

Top Bar
webui-annotated
Category Selector
menu-categories

Each plot belongs to one or more categories. The category selector allows you to filter the visible plots by categories.

Visible Time Range
menu-timerange

Use the time range selector to define the visualized time span.

Show/Hide GC events
menu-gc-events

Show or hide the vertical lines representing garbage collection events.

Pause updates
menu-play

Pause or resume the plot updates.

Plot Controls
webui-annotated

Plots

Which plots are visible depends on:

  • your Go version,since some plots are only available in newer versions.
  • what plot categories are currently selected. By default all plots are shown.
Allocation and Free Rate
alloc-free-rate
CGO Calls
cgo
CPU (GC)
cpu-gc
CPU (Overall)
cpu-overall
CPU (Scavenger)
cpu-scavenger
Garbage Collection
garbage-collection
GC Cycles
gc-cycles
GC Pauses
gc-pauses
GC Scan
gc-scan
GC Stack Size
gc-stack-size
Goroutines
goroutines
Heap (Details)
heap-details
Live Bytes
live-bytes
Live Objects
live-objects
Memory Classes
memory-classes
MSpan/MCache
mspan-mcache
Mutex Wait
mutex-wait
Runnable Time
runnable-time
Scheduling Events
sched-events
Size Classes
size-classes
GC Pauses
gc-pauses

User Plots

Since v0.6 you can add your own plots to Statsviz dashboard, in order to easily visualize your application metrics next to runtime metrics.

Please see the userplots example.

Questions / Troubleshooting

Either use GitHub's discussions or come to say hi and ask a live question on [#statsviz channel on Gopher's slack](https://gophers.slack.com/archi

readme truncated — read the full docs on github

Frequently asked questions

Is statsviz free to use?

statsviz is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does statsviz do?

Visualise Go runtime metrics in real time

What is statsviz written in?

statsviz is primarily written in Go. Its source is publicly available at https://github.com/arl/statsviz, and it has 3,645 GitHub stars.