32 lines
749 B
Go
32 lines
749 B
Go
package metrics
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
// MarshalJSON returns a byte slice containing a JSON representation of all
|
|
// the metrics in the Registry.
|
|
func (r *StandardRegistry) MarshalJSON() ([]byte, error) {
|
|
return json.Marshal(r.GetAll())
|
|
}
|
|
|
|
// WriteJSON writes metrics from the given registry periodically to the
|
|
// specified io.Writer as JSON.
|
|
func WriteJSON(r Registry, d time.Duration, w io.Writer) {
|
|
for range time.Tick(d) {
|
|
WriteJSONOnce(r, w)
|
|
}
|
|
}
|
|
|
|
// WriteJSONOnce writes metrics from the given registry to the specified
|
|
// io.Writer as JSON.
|
|
func WriteJSONOnce(r Registry, w io.Writer) {
|
|
json.NewEncoder(w).Encode(r)
|
|
}
|
|
|
|
func (p *PrefixedRegistry) MarshalJSON() ([]byte, error) {
|
|
return json.Marshal(p.GetAll())
|
|
}
|