forked from grafana/loki
/
metrics.go
41 lines (37 loc) · 1.34 KB
/
metrics.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package queue
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
type Metrics struct {
queueLength *prometheus.GaugeVec // Per tenant
discardedRequests *prometheus.CounterVec // Per tenant
enqueueCount *prometheus.CounterVec // Per tenant and level
}
func NewMetrics(subsystem string, registerer prometheus.Registerer) *Metrics {
return &Metrics{
queueLength: promauto.With(registerer).NewGaugeVec(prometheus.GaugeOpts{
Namespace: "cortex",
Subsystem: subsystem,
Name: "queue_length",
Help: "Number of queries in the queue.",
}, []string{"user"}),
discardedRequests: promauto.With(registerer).NewCounterVec(prometheus.CounterOpts{
Namespace: "cortex",
Subsystem: subsystem,
Name: "discarded_requests_total",
Help: "Total number of query requests discarded.",
}, []string{"user"}),
enqueueCount: promauto.With(registerer).NewCounterVec(prometheus.CounterOpts{
Namespace: "loki",
Subsystem: subsystem,
Name: "enqueue_count",
Help: "Total number of enqueued (sub-)queries.",
}, []string{"user", "level"}),
}
}
func (m *Metrics) Cleanup(user string) {
m.queueLength.DeleteLabelValues(user)
m.discardedRequests.DeleteLabelValues(user)
m.enqueueCount.DeletePartialMatch(prometheus.Labels{"user": user})
}