in backend/operations_scanner.go [102:182]
func NewOperationsScanner(dbClient database.DBClient, ocmConnection *ocmsdk.Connection) *OperationsScanner {
s := &OperationsScanner{
dbClient: dbClient,
lockClient: dbClient.GetLockClient(),
clusterService: ocm.ClusterServiceClient{Conn: ocmConnection},
notificationClient: http.DefaultClient,
subscriptions: make([]string, 0),
leaderGauge: promauto.With(prometheus.DefaultRegisterer).NewGauge(
prometheus.GaugeOpts{
Name: "backend_leader_election_state",
Help: "Leader election state (1 when leader).",
},
),
workerGauge: promauto.With(prometheus.DefaultRegisterer).NewGauge(
prometheus.GaugeOpts{
Name: "backend_workers",
Help: "Number of concurrent workers.",
},
),
operationsCount: promauto.With(prometheus.DefaultRegisterer).NewCounterVec(
prometheus.CounterOpts{
Name: "backend_operations_total",
Help: "Total count of operations.",
},
[]string{"type"},
),
operationsFailedCount: promauto.With(prometheus.DefaultRegisterer).NewCounterVec(
prometheus.CounterOpts{
Name: "backend_failed_operations_total",
Help: "Total count of failed operations.",
},
[]string{"type"},
),
operationsDuration: promauto.With(prometheus.DefaultRegisterer).NewHistogramVec(
prometheus.HistogramOpts{
Name: "backend_operations_duration_seconds",
Help: "Histogram of operation latencies.",
Buckets: []float64{.25, .5, 1, 2, 5},
NativeHistogramBucketFactor: 1.1,
NativeHistogramMaxBucketNumber: 100,
NativeHistogramMinResetDuration: 1 * time.Hour,
},
[]string{"type"},
),
lastOperationTimestamp: promauto.With(prometheus.DefaultRegisterer).NewGaugeVec(
prometheus.GaugeOpts{
Name: "backend_last_operation_timestamp_seconds",
Help: "Timestamp of the last operation.",
},
[]string{"type"},
),
subscriptionsByState: promauto.With(prometheus.DefaultRegisterer).NewGaugeVec(
prometheus.GaugeOpts{
Name: "backend_subscriptions",
Help: "Number of subscriptions by state.",
},
[]string{"state"},
),
}
// Initialize the counter and histogram metrics.
for _, v := range []string{
collectSubscriptionsLabel,
processSubscriptionsLabel,
processOperationsLabel,
pollClusterOperationLabel,
pollNodePoolOperationLabel,
} {
s.operationsCount.WithLabelValues(v)
s.operationsFailedCount.WithLabelValues(v)
s.operationsDuration.WithLabelValues(v)
s.lastOperationTimestamp.WithLabelValues(v)
}
for subscriptionState := range arm.ListSubscriptionStates() {
s.subscriptionsByState.WithLabelValues(string(subscriptionState))
}
return s
}