85 lines
2.7 KiB
Go
85 lines
2.7 KiB
Go
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)
|
|
}
|