Provisioning: Add metrics for repo controller (#111450)
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/utils"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
type finalizerMetrics struct {
|
||||
registry prometheus.Registerer
|
||||
finalizerProcessedTotal *prometheus.CounterVec
|
||||
finalizerDuration *prometheus.HistogramVec
|
||||
}
|
||||
|
||||
func registerFinalizerMetrics(registry prometheus.Registerer) finalizerMetrics {
|
||||
finalizerProcessedTotal := prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Name: "grafana_provisioning_finalizers_processed_total",
|
||||
Help: "Total number of finalizers processed",
|
||||
},
|
||||
[]string{"finalizer_type", "outcome"},
|
||||
)
|
||||
registry.MustRegister(finalizerProcessedTotal)
|
||||
|
||||
finalizerDuration := prometheus.NewHistogramVec(
|
||||
prometheus.HistogramOpts{
|
||||
Name: "grafana_provisioning_finalizers_duration_seconds",
|
||||
Help: "Duration of processing the finalizers",
|
||||
Buckets: []float64{0.5, 1.0, 2.0, 5.0, 10.0, 30.0},
|
||||
},
|
||||
[]string{"finalizer_type", "resource_count_bucket"},
|
||||
)
|
||||
registry.MustRegister(finalizerDuration)
|
||||
|
||||
return finalizerMetrics{
|
||||
registry: registry,
|
||||
finalizerProcessedTotal: finalizerProcessedTotal,
|
||||
finalizerDuration: finalizerDuration,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *finalizerMetrics) RecordFinalizer(finalizerType string, outcome string, resourceCountChanged int, duration float64) {
|
||||
m.finalizerProcessedTotal.WithLabelValues(finalizerType, outcome).Inc()
|
||||
if outcome == utils.SuccessOutcome {
|
||||
m.finalizerDuration.WithLabelValues(finalizerType, utils.GetResourceCountBucket(resourceCountChanged)).Observe(duration)
|
||||
}
|
||||
}
|
||||
|
||||
type healthMetrics struct {
|
||||
registry prometheus.Registerer
|
||||
healthCheckedTotal *prometheus.CounterVec
|
||||
healthCheckedDuration *prometheus.HistogramVec
|
||||
}
|
||||
|
||||
func registerHealthMetrics(registry prometheus.Registerer) healthMetrics {
|
||||
healthCheckedTotal := prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Name: "grafana_provisioning_health_checked_total",
|
||||
Help: "Total number of health checks performed",
|
||||
},
|
||||
[]string{"outcome"},
|
||||
)
|
||||
registry.MustRegister(healthCheckedTotal)
|
||||
|
||||
healthCheckedDuration := prometheus.NewHistogramVec(
|
||||
prometheus.HistogramOpts{
|
||||
Name: "grafana_provisioning_health_checked_duration_seconds",
|
||||
Help: "Duration of health checks",
|
||||
Buckets: []float64{0.1, 0.2, 0.5, 1.0, 2.0, 5.0},
|
||||
},
|
||||
[]string{},
|
||||
)
|
||||
registry.MustRegister(healthCheckedDuration)
|
||||
|
||||
return healthMetrics{
|
||||
registry: registry,
|
||||
healthCheckedTotal: healthCheckedTotal,
|
||||
healthCheckedDuration: healthCheckedDuration,
|
||||
}
|
||||
}
|
||||
|
||||
func (m *healthMetrics) RecordHealthCheck(outcome string, duration float64) {
|
||||
m.healthCheckedTotal.WithLabelValues(outcome).Inc()
|
||||
m.healthCheckedDuration.WithLabelValues().Observe(duration)
|
||||
}
|
||||
Reference in New Issue
Block a user