Go to file
Aliaksandr Valialkin adb3c38465 Add FAQ section
2019-04-10 16:16:34 +03:00
go.mod Initial commit 2019-04-08 16:29:16 +03:00
go.sum Initial commit 2019-04-08 16:29:16 +03:00
LICENSE Initial commit 2019-04-08 16:29:16 +03:00
metrics.go Return gauge object from NewGauge to be consistent with NewCounter and NewSummary 2019-04-10 15:14:47 +03:00
README.md Add FAQ section 2019-04-10 16:16:34 +03:00
summary.go Initial commit 2019-04-08 16:29:16 +03:00
validator_test.go Initial commit 2019-04-08 16:29:16 +03:00
validator.go Initial commit 2019-04-08 16:29:16 +03:00

GoDoc Go Report

metrics - lightweight package for exporting metrics in Prometheus format

Features

  • Lightweight. Has minimal number of third-party dependencies and all these deps are small. See this article for details.
  • Easy to use. See the API docs.
  • Fast.

Limitations

Usage

import "github.com/VictoriaMetrics/metrics"

// Register various time series.
// Time series name may contain labels in Prometheus format - see below.
var (
	// Register counter without labels.
	requestsTotal = metrics.NewCounter("requests_total")

	// Register summary with a single label.
	requestDuration = metrics.NewSummary(`requests_duration_seconds{handler="/my/super/handler"}`)

	// Register gauge with two labels.
	queueSize = metrics.NewGauge(`queue_size{queue="foobar",topic="baz"}`, func() float64 {
		return float64(foobarQueue.Len())
	})
)

// ...
func requestHandler() {
	startTime := time.Now()
	// ...
	requestsTotal.Inc()
	requestDuration.UpdateDuration(startTime)
}
// ...

// `/metrics` handler for exposing the registered metrics.
http.HandleFunc("/metrics", func(w http.ResponseWriter, req *http.Request) {
	metrics.WritePrometheus(w, true)
})

See docs for more info.

Users

FAQ

Why the metrics API isn't compatible with github.com/prometheus/client_golang?

Because the github.com/prometheus/client_golang is too complex and is hard to use.

Why the metrics.WritePrometheus doesn't expose documentation for each metric?

Because this documentation is ignored by Prometheus. The documentation is for users. Just add comments in the source code or in other suitable place explaining each metric exposed from your application.