Skip to content
Snippets Groups Projects
Commit d5f1daad authored by ensiouel's avatar ensiouel
Browse files

добавлена обертка для Cache, которая собирает метрики

parent 93764675
No related branches found
No related tags found
No related merge requests found
package cache
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
var (
cacheRequestsTotal = promauto.With(prometheus.DefaultRegisterer).NewCounterVec(prometheus.CounterOpts{
Name: "cache_requests_total",
Help: "Количество обращений к кэшу",
}, []string{"cache_id"})
cacheHitsTotal = promauto.With(prometheus.DefaultRegisterer).NewCounterVec(prometheus.CounterOpts{
Name: "cache_hits_total",
Help: "Количество попаданий в кэш",
}, []string{"cache_id"})
cacheMissesTotal = promauto.With(prometheus.DefaultRegisterer).NewCounterVec(prometheus.CounterOpts{
Name: "cache_misses_total",
Help: "Количество пропусков в кэш",
}, []string{"cache_id"})
)
var _ Cache = &MetricsCache{}
type MetricsCache struct {
cacheID string
cache Cache
}
func WrapMetrics(cacheID string, cache Cache) *MetricsCache {
return &MetricsCache{
cacheID: cacheID,
cache: cache,
}
}
func (c *MetricsCache) Set(key, value any) error {
return c.cache.Set(key, value)
}
func (c *MetricsCache) Get(key any) (any, error) {
cacheRequestsTotal.WithLabelValues(c.cacheID).Inc()
value, err := c.cache.Get(key)
if err != nil {
cacheMissesTotal.WithLabelValues(c.cacheID).Inc()
return nil, err
}
cacheHitsTotal.WithLabelValues(c.cacheID).Inc()
return value, nil
}
func (c *MetricsCache) Remove(key any) error {
return c.cache.Remove(key)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment