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.