X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4659594d40987a2bab1ff75d015de5d46113692d..2aff408211e84a226af6f74cb9338cbaf3fc4645:/services/keepstore/metrics.go diff --git a/services/keepstore/metrics.go b/services/keepstore/metrics.go index 4a154bd7b7..4638de5444 100644 --- a/services/keepstore/metrics.go +++ b/services/keepstore/metrics.go @@ -2,91 +2,12 @@ // // SPDX-License-Identifier: AGPL-3.0 -package main +package keepstore import ( - "fmt" - - "git.curoverse.com/arvados.git/sdk/go/httpserver" "github.com/prometheus/client_golang/prometheus" ) -type nodeMetrics struct { - reg *prometheus.Registry -} - -func (m *nodeMetrics) setupBufferPoolMetrics(b *bufferPool) { - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: "bufferpool_bytes_allocated", - Help: "Number of bytes allocated to buffers", - }, - func() float64 { return float64(b.Alloc()) }, - )) - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: "bufferpool_buffers_max", - Help: "Maximum number of buffers allowed", - }, - func() float64 { return float64(b.Cap()) }, - )) - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: "bufferpool_buffers_in_use", - Help: "Number of buffers in use", - }, - func() float64 { return float64(b.Len()) }, - )) -} - -func (m *nodeMetrics) setupWorkQueueMetrics(q *WorkQueue, qName string) { - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: fmt.Sprintf("%s_queue_in_progress", qName), - Help: fmt.Sprintf("Number of %s requests in progress", qName), - }, - func() float64 { return float64(getWorkQueueStatus(q).InProgress) }, - )) - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: fmt.Sprintf("%s_queue_queued", qName), - Help: fmt.Sprintf("Number of queued %s requests", qName), - }, - func() float64 { return float64(getWorkQueueStatus(q).Queued) }, - )) -} - -func (m *nodeMetrics) setupRequestMetrics(rc httpserver.RequestCounter) { - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: "requests_current", - Help: "Number of requests in progress", - }, - func() float64 { return float64(rc.Current()) }, - )) - m.reg.MustRegister(prometheus.NewGaugeFunc( - prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "keepstore", - Name: "requests_max", - Help: "Maximum number of concurrent requests", - }, - func() float64 { return float64(rc.Max()) }, - )) -} - type volumeMetricsVecs struct { ioBytes *prometheus.CounterVec errCounters *prometheus.CounterVec @@ -128,3 +49,10 @@ func newVolumeMetricsVecs(reg *prometheus.Registry) *volumeMetricsVecs { return m } + +func (vm *volumeMetricsVecs) getCounterVecsFor(lbls prometheus.Labels) (opsCV, errCV, ioCV *prometheus.CounterVec) { + opsCV = vm.opsCounters.MustCurryWith(lbls) + errCV = vm.errCounters.MustCurryWith(lbls) + ioCV = vm.ioBytes.MustCurryWith(lbls) + return +}