statsviz icon indicating copy to clipboard operation
statsviz copied to clipboard

Dynamic graphs registration

Open AlekSi opened this issue 6 months ago • 2 comments

It would be nice to be able to add graphs dynamically. For example, we wanted to convert Prometheus metrics to Statsviz graphs, with one graph per Prometheus label value. But the full set of values is not known in advance, so it is not possible to pass all options to statsviz.Register.

It is almost possible to do now by creating Statsviz HTTP handler on the fly in the other HTTP handler:

// pseudocode
http.HandleFunc("/debug/graphs", func(rw http.ResponseWriter, req *http.Request) {
	s, _ := statsviz.NewServer()
	s.Index().ServeHTTP(rw, req)
})

Unfortunately, there are two handlers: Index() and Ws(). Maybe it is possible to create a single handler that would route to one or another based on, say, HTTP headers?

AlekSi avatar Dec 21 '23 07:12 AlekSi