This library provides context-driven stats tracker.
- Loosely coupled with underlying implementation.
- Context-driven labels control.
- Zero allocation implementation for Prometheus client.
- A simple interface with variadic number of key-value pairs for labels.
- Easily mockable interface free from 3rd party dependencies.
// Bring your own Prometheus registry.
registry := prometheus.NewRegistry()
tr := prom.Tracker{
Registry: registry,
}
// Add custom Prometheus configuration where necessary.
tr.DeclareHistogram("my_latency_seconds", prometheus.HistogramOpts{
Buckets: []float64{1e-4, 1e-3, 1e-2, 1e-1, 1, 10, 100},
})
ctx := context.Background()
// Add labels to context.
ctx = stats.AddKeysAndValues(ctx, "ctx-label", "ctx-value0")
// Override label values.
ctx = stats.AddKeysAndValues(ctx, "ctx-label", "ctx-value1")
// Collect stats with last mile labels.
tr.Add(ctx, "my_count", 1,
"some-label", "some-value",
)
tr.Add(ctx, "my_latency_seconds", 1.23)
tr.Set(ctx, "temperature", 33.3)
This project adheres to Semantic Versioning.
Before version 1.0.0
, breaking changes are tagged with MINOR
bump, features and fixes are tagged with PATCH
bump.
After version 1.0.0
, breaking changes are tagged with MAJOR
bump.