Skip to content

Commit bd605fd

Browse files
authored
Introduce metrics for seed reconciliation LastOperation state (#146)
* add metricGardenSeedOperationState * add metricGardenSeedOperationState * export operation state metrics for the seed * fix format error * use tab indentation * run gofmt
1 parent ed25bcd commit bd605fd

3 files changed

Lines changed: 60 additions & 5 deletions

File tree

pkg/metrics/metrics.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ func getGardenMetricsDefinitions() map[string]*prometheus.Desc {
104104
nil,
105105
),
106106

107+
metricGardenSeedOperationState: prometheus.NewDesc(
108+
metricGardenSeedOperationState,
109+
"Operation state of a Seed. Possible values: 1=Succeeded|2=Processing|3=Pending|4=Aborted|5=Error|6=Failed. Available operations: 'Create'|'Reconcile'|'Delete'|'Restore'|'Migrate'.",
110+
[]string{
111+
"name",
112+
"operation",
113+
},
114+
nil,
115+
),
116+
107117
metricGardenGardenletCondition: prometheus.NewDesc(
108118
metricGardenGardenletCondition,
109119
"Condition state of a Gardenlet. Possible values: -1=Unknown|0=Unhealthy|1=Healthy|2=Progressing",

pkg/metrics/seed.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ import (
1313
"k8s.io/apimachinery/pkg/labels"
1414
)
1515

16+
var seedOperations = [5]string{
17+
string(gardenv1beta1.LastOperationTypeCreate),
18+
string(gardenv1beta1.LastOperationTypeReconcile),
19+
string(gardenv1beta1.LastOperationTypeDelete),
20+
string(gardenv1beta1.LastOperationTypeMigrate),
21+
string(gardenv1beta1.LastOperationTypeRestore),
22+
}
23+
1624
// collectProjectMetrics collect Seed metrics.
1725
func (c gardenMetricsCollector) collectSeedMetrics(ch chan<- prometheus.Metric) {
1826
seeds, err := c.seedInformer.Lister().List(labels.Everything())
@@ -135,6 +143,42 @@ func (c gardenMetricsCollector) collectSeedMetrics(ch chan<- prometheus.Metric)
135143
}
136144
ch <- metric
137145
}
146+
147+
// Export operation state metrics for the Seed.
148+
if seed.Status.LastOperation != nil {
149+
lastOperation := string(seed.Status.LastOperation.Type)
150+
for _, operation := range seedOperations {
151+
var operationState float64
152+
if operation == lastOperation {
153+
switch seed.Status.LastOperation.State {
154+
case gardenv1beta1.LastOperationStateSucceeded:
155+
operationState = 1
156+
case gardenv1beta1.LastOperationStateProcessing:
157+
operationState = 2
158+
case gardenv1beta1.LastOperationStatePending:
159+
operationState = 3
160+
case gardenv1beta1.LastOperationStateAborted:
161+
operationState = 4
162+
case gardenv1beta1.LastOperationStateError:
163+
operationState = 5
164+
case gardenv1beta1.LastOperationStateFailed:
165+
operationState = 6
166+
}
167+
}
168+
metric, err := prometheus.NewConstMetric(
169+
c.descs[metricGardenSeedOperationState],
170+
prometheus.GaugeValue,
171+
operationState,
172+
seed.Name,
173+
operation,
174+
)
175+
if err != nil {
176+
ScrapeFailures.With(prometheus.Labels{"kind": "seeds"}).Inc()
177+
continue
178+
}
179+
ch <- metric
180+
}
181+
}
138182
}
139183
}
140184

pkg/metrics/types.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ const (
55
metricGardenUsersSum = "garden_users_total"
66

77
// Seed metric
8-
metricGardenManagedSeedInfo = "garden_managed_seed_info"
9-
metricGardenSeedInfo = "garden_seed_info"
10-
metricGardenSeedCondition = "garden_seed_condition"
11-
metricGardenSeedCapacity = "garden_seed_capacity"
12-
metricGardenSeedUsage = "garden_seed_usage"
8+
metricGardenManagedSeedInfo = "garden_managed_seed_info"
9+
metricGardenSeedInfo = "garden_seed_info"
10+
metricGardenSeedCondition = "garden_seed_condition"
11+
metricGardenSeedCapacity = "garden_seed_capacity"
12+
metricGardenSeedUsage = "garden_seed_usage"
13+
metricGardenSeedOperationState = "garden_seed_operation_states"
1314

1415
// Gardenlet metric
1516
metricGardenGardenletCondition = "garden_gardenlet_condition"

0 commit comments

Comments
 (0)