@@ -33,6 +33,7 @@ type MetricsServer struct {
33
33
syncCounter * prometheus.CounterVec
34
34
kubectlExecCounter * prometheus.CounterVec
35
35
kubectlExecPendingGauge * prometheus.GaugeVec
36
+ orphanedResourcesGauge * prometheus.GaugeVec
36
37
k8sRequestCounter * prometheus.CounterVec
37
38
clusterEventsCounter * prometheus.CounterVec
38
39
redisRequestCounter * prometheus.CounterVec
@@ -144,6 +145,14 @@ var (
144
145
},
145
146
[]string {"hostname" , "initiator" },
146
147
)
148
+
149
+ orphanedResourcesGauge = prometheus .NewGaugeVec (
150
+ prometheus.GaugeOpts {
151
+ Name : "argocd_app_orphaned_resources_count" ,
152
+ Help : "Number of orphaned resources per application" ,
153
+ },
154
+ descAppDefaultLabels ,
155
+ )
147
156
)
148
157
149
158
// NewMetricsServer returns a new prometheus server which collects application metrics
@@ -188,6 +197,7 @@ func NewMetricsServer(addr string, appLister applister.ApplicationLister, appFil
188
197
registry .MustRegister (k8sRequestCounter )
189
198
registry .MustRegister (kubectlExecCounter )
190
199
registry .MustRegister (kubectlExecPendingGauge )
200
+ registry .MustRegister (orphanedResourcesGauge )
191
201
registry .MustRegister (reconcileHistogram )
192
202
registry .MustRegister (clusterEventsCounter )
193
203
registry .MustRegister (redisRequestCounter )
@@ -203,6 +213,7 @@ func NewMetricsServer(addr string, appLister applister.ApplicationLister, appFil
203
213
k8sRequestCounter : k8sRequestCounter ,
204
214
kubectlExecCounter : kubectlExecCounter ,
205
215
kubectlExecPendingGauge : kubectlExecPendingGauge ,
216
+ orphanedResourcesGauge : orphanedResourcesGauge ,
206
217
reconcileHistogram : reconcileHistogram ,
207
218
clusterEventsCounter : clusterEventsCounter ,
208
219
redisRequestCounter : redisRequestCounter ,
@@ -241,6 +252,10 @@ func (m *MetricsServer) DecKubectlExecPending(command string) {
241
252
m .kubectlExecPendingGauge .WithLabelValues (m .hostname , command ).Dec ()
242
253
}
243
254
255
+ func (m * MetricsServer ) SetOrphanedResourcesMetric (app * argoappv1.Application , numOrphanedResources int ) {
256
+ m .orphanedResourcesGauge .WithLabelValues (app .Namespace , app .Name , app .Spec .GetProject ()).Set (float64 (numOrphanedResources ))
257
+ }
258
+
244
259
// IncClusterEventsCount increments the number of cluster events
245
260
func (m * MetricsServer ) IncClusterEventsCount (server , group , kind string ) {
246
261
m .clusterEventsCounter .WithLabelValues (server , group , kind ).Inc ()
@@ -290,6 +305,7 @@ func (m *MetricsServer) SetExpiration(cacheExpiration time.Duration) error {
290
305
m .syncCounter .Reset ()
291
306
m .kubectlExecCounter .Reset ()
292
307
m .kubectlExecPendingGauge .Reset ()
308
+ m .orphanedResourcesGauge .Reset ()
293
309
m .k8sRequestCounter .Reset ()
294
310
m .clusterEventsCounter .Reset ()
295
311
m .redisRequestCounter .Reset ()
0 commit comments