Prometheus Collector for Ristretto Cache metrics
package main
import (
"github.com/dgraph-io/ristretto/v2"
"github.com/prometheus/client_golang/prometheus"
ristretto_prometheus "github.com/wolfmetr/ristretto-prometheus"
)
func main() {
cache, err := ristretto.NewCache[string, string](&ristretto.Config[string, string]{
NumCounters: 1e3,
MaxCost: 1 << 30,
BufferItems: 64,
Metrics: true, // enable ristretto metrics
})
if err != nil {
panic(err)
}
defer cache.Close()
ristrettoCollector, err := ristretto_prometheus.NewCollector(
cache.Metrics,
ristretto_prometheus.WithNamespace("appname"),
ristretto_prometheus.WithSubsystem("subsystemname"),
ristretto_prometheus.WithConstLabels(prometheus.Labels{"app_version": "v1.2.3"}),
ristretto_prometheus.WithHitsCounterMetric(),
ristretto_prometheus.WithMissesCounterMetric(),
ristretto_prometheus.WithMetric(ristretto_prometheus.Desc{
Name: "ristretto_keys_added_total",
Help: "The number of added keys in the cache.",
ValueType: prometheus.CounterValue,
Extractor: func(m *ristretto.Metrics) float64 { return float64(m.KeysAdded()) },
}),
ristretto_prometheus.WithHitsRatioGaugeMetric(),
)
if err != nil {
panic(err)
}
prometheus.MustRegister(ristrettoCollector)
}