@@ -78,9 +78,6 @@ func (j *Janitor) runRule(ctx context.Context, logger *slogger.Logger, rule *Con
7878 rule .Id ,
7979 ttl ,
8080 metricList ,
81- prometheus.Labels {
82- "rule" : rule .String (),
83- },
8481 )
8582 })
8683 if err != nil {
@@ -95,13 +92,15 @@ func (j *Janitor) runRule(ctx context.Context, logger *slogger.Logger, rule *Con
9592}
9693
9794// checkResourceTtlAndTriggerDeleteIfExpired checks the resource against the defined TTL and deletes if the resource is expired
98- func (j * Janitor ) checkResourceTtlAndTriggerDeleteIfExpired (ctx context.Context , logger * slogger.Logger , resourceConfig * ConfigResource , resource unstructured.Unstructured , ruleId string , ttlValue string , metricResourceTtl * prometheusCommon.MetricList , labels prometheus. Labels ) error {
95+ func (j * Janitor ) checkResourceTtlAndTriggerDeleteIfExpired (ctx context.Context , logger * slogger.Logger , resourceConfig * ConfigResource , resource unstructured.Unstructured , ruleId string , ttlValue string , metricResourceTtl * prometheusCommon.MetricList ) error {
9996 resourceLogger := logger .WithGroup ("resource" ).With (
10097 slog .String ("namespace" , resource .GetNamespace ()),
10198 slog .String ("name" , resource .GetName ()),
10299 slog .String ("ttl" , ttlValue ),
103100 )
104101
102+ groupVersionKind := resource .GroupVersionKind ()
103+
105104 // no ttl, no processing
106105 // better safe than sorry
107106 if ttlValue == "" {
@@ -143,13 +142,6 @@ func (j *Janitor) checkResourceTtlAndTriggerDeleteIfExpired(ctx context.Context,
143142 return nil
144143 }
145144
146- labels ["version" ] = resource .GetAPIVersion ()
147- labels ["kind" ] = resource .GetKind ()
148- labels ["namespace" ] = resource .GetNamespace ()
149- labels ["name" ] = resource .GetName ()
150- labels ["ttl" ] = ttlValue
151- metricResourceTtl .AddTime (labels , * parsedDate )
152-
153145 resourceLogger .Debug ("found resource with valid TTL" , slog .Time ("expiry" , * parsedDate ))
154146
155147 if expired {
@@ -162,6 +154,15 @@ func (j *Janitor) checkResourceTtlAndTriggerDeleteIfExpired(ctx context.Context,
162154 return err
163155 }
164156
157+ // increase deleted counter
158+ j .prometheus .deleted .With (
159+ prometheus.Labels {
160+ "rule" : ruleId ,
161+ "groupVersionKind" : fmt .Sprintf ("%s/%s/%s" , groupVersionKind .Group , groupVersionKind .Version , groupVersionKind .Kind ),
162+ "namespace" : resource .GetNamespace (),
163+ },
164+ ).Inc ()
165+
165166 reason := "TimeToLiveExpired"
166167 message := fmt .Sprintf (`TTL of "%v" is expired and resource is being deleted (%s)` , ttlValue , ruleId )
167168
@@ -170,6 +171,20 @@ func (j *Janitor) checkResourceTtlAndTriggerDeleteIfExpired(ctx context.Context,
170171 resourceLogger .Error ("unable to create Kubernetes Event" , slog .Any ("error" , err ))
171172 }
172173 }
174+ } else {
175+ // resource not yet expired, but add expiry as metric
176+
177+ metricResourceTtl .AddTime (
178+ prometheus.Labels {
179+ "rule" : ruleId ,
180+ "groupVersionKind" : fmt .Sprintf ("%s/%s/%s" , groupVersionKind .Group , groupVersionKind .Version , groupVersionKind .Kind ),
181+ "namespace" : resource .GetNamespace (),
182+ "name" : resource .GetName (),
183+ "ttl" : ttlValue ,
184+ },
185+ * parsedDate ,
186+ )
187+
173188 }
174189
175190 return nil
0 commit comments