99
99
},
100
100
problemsMetricsLabels ,
101
101
)
102
+
103
+ problemEnvironmentMetricsLabels = []string {"namespace" , "name" }
104
+ problemEnvironmentsReady = prometheus .NewGaugeVec (
105
+ prometheus.GaugeOpts {
106
+ Namespace : namespace ,
107
+ Name : "problem_environments_ready" ,
108
+ },
109
+ problemEnvironmentMetricsLabels ,
110
+ )
102
111
)
103
112
104
113
var _ manager.Runnable = & MetricsExporter {}
@@ -118,6 +127,7 @@ func (me *MetricsExporter) Start(ctx context.Context) error {
118
127
problemEnvironmentsTotal ,
119
128
problemEnvironmentsReadyTotal ,
120
129
problemEnvironmentsAssignedTotal ,
130
+ problemEnvironmentsReady ,
121
131
} {
122
132
if err := metrics .Registry .Register (collector ); err != nil {
123
133
return err
@@ -160,6 +170,7 @@ func (me *MetricsExporter) collect(ctx context.Context) error {
160
170
161
171
workersReady .Reset ()
162
172
workersSchedulable .Reset ()
173
+ workersScheduledProblemEnvironmentsTotal .Reset ()
163
174
for _ , worker := range workers .Items {
164
175
labels := []string {worker .Namespace , worker .Name }
165
176
@@ -190,12 +201,17 @@ func (me *MetricsExporter) collect(ctx context.Context) error {
190
201
191
202
// Problems-related metrics
192
203
problemsTotal .Set (float64 (len (problems .Items )))
204
+ problemsAssignableReplicasTotal .Reset ()
193
205
for _ , problem := range problems .Items {
194
206
labels := []string {problem .Namespace , problem .Name }
195
207
problemsAssignableReplicasTotal .WithLabelValues (labels ... ).Set (float64 (problem .Spec .AssignableReplicas ))
196
208
}
197
209
198
210
// ProblemEnvironments-related metrics
211
+ problemEnvironmentsTotal .Reset ()
212
+ problemEnvironmentsReadyTotal .Reset ()
213
+ problemEnvironmentsAssignedTotal .Reset ()
214
+ problemEnvironmentsReady .Reset ()
199
215
for _ , problem := range problems .Items {
200
216
labels := []string {problem .Namespace , problem .Name }
201
217
@@ -230,5 +246,20 @@ func (me *MetricsExporter) collect(ctx context.Context) error {
230
246
problemEnvironmentsAssignedTotal .WithLabelValues (labels ... ).Set (float64 (assignedTotal ))
231
247
}
232
248
249
+ for _ , problemEnvironment := range problemEnvironments .Items {
250
+ isReady := util .GetProblemEnvironmentCondition (
251
+ & problemEnvironment ,
252
+ netconv1alpha1 .ProblemEnvironmentConditionReady ,
253
+ ) == metav1 .ConditionTrue
254
+
255
+ labels := []string {problemEnvironment .Namespace , problemEnvironment .Name }
256
+ if isReady {
257
+ problemEnvironmentsReady .WithLabelValues (labels ... ).Set (float64 (1 ))
258
+ } else {
259
+ problemEnvironmentsReady .WithLabelValues (labels ... ).Set (float64 (0 ))
260
+ }
261
+
262
+ }
263
+
233
264
return nil
234
265
}
0 commit comments