2222import java .util .concurrent .TimeUnit ;
2323import java .util .concurrent .atomic .AtomicInteger ;
2424
25+ import org .jspecify .annotations .NonNull ;
26+
2527import io .fabric8 .kubernetes .api .model .HasMetadata ;
2628import io .javaoperatorsdk .operator .OperatorException ;
2729import io .javaoperatorsdk .operator .api .monitoring .Metrics ;
3739import io .micrometer .core .instrument .Tag ;
3840import io .micrometer .core .instrument .Timer ;
3941
40- import static io .javaoperatorsdk .operator .api .reconciler .Constants .CONTROLLER_NAME ;
41-
4242public class MicrometerMetrics implements Metrics {
4343
4444 private static final String PREFIX = "operator.sdk." ;
@@ -48,8 +48,8 @@ public class MicrometerMetrics implements Metrics {
4848 private static final String RECONCILIATIONS_RETRIES_LAST = RECONCILIATIONS + "retries.last" ;
4949 private static final String RECONCILIATIONS_RETRIES_NUMBER = RECONCILIATIONS + "retries.number" ;
5050 private static final String RECONCILIATIONS_STARTED = RECONCILIATIONS + "started" ;
51- private static final String RECONCILIATIONS_EXECUTIONS = PREFIX + RECONCILIATIONS + "executions. " ;
52- private static final String RECONCILIATIONS_QUEUE_SIZE = PREFIX + RECONCILIATIONS + "queue.size. " ;
51+ private static final String RECONCILIATIONS_EXECUTIONS = PREFIX + RECONCILIATIONS + "executions" ;
52+ private static final String RECONCILIATIONS_QUEUE_SIZE = PREFIX + RECONCILIATIONS + "queue.size" ;
5353 private static final String NAME = "name" ;
5454 private static final String NAMESPACE = "namespace" ;
5555 private static final String GROUP = "group" ;
@@ -59,6 +59,7 @@ public class MicrometerMetrics implements Metrics {
5959 private static final String METADATA_PREFIX = "resource." ;
6060 private static final String CONTROLLERS_EXECUTION = "controllers.execution." ;
6161 private static final String CONTROLLER = "controller" ;
62+ private static final String CONTROLLER_NAME = CONTROLLER + ".name" ;
6263 private static final String SUCCESS_SUFFIX = ".success" ;
6364 private static final String FAILURE_SUFFIX = ".failure" ;
6465 private static final String TYPE = "type" ;
@@ -130,18 +131,27 @@ private MicrometerMetrics(
130131 public void controllerRegistered (Controller <? extends HasMetadata > controller ) {
131132 final var configuration = controller .getConfiguration ();
132133 final var name = configuration .getName ();
133- final var executingThreadsName = RECONCILIATIONS_EXECUTIONS + name ;
134+ final var executingThreadsRefName = reconciliationExecutionGaugeRefName ( name ) ;
134135 final var resourceClass = configuration .getResourceClass ();
135- final var tags = new ArrayList <Tag >(3 );
136+ final var tags = new ArrayList <Tag >();
137+ tags .add (Tag .of (CONTROLLER_NAME , name ));
136138 addGVKTags (GroupVersionKind .gvkFor (resourceClass ), tags , false );
137139 AtomicInteger executingThreads =
138- registry .gauge (executingThreadsName , tags , new AtomicInteger (0 ));
139- gauges .put (executingThreadsName , executingThreads );
140+ registry .gauge (RECONCILIATIONS_EXECUTIONS , tags , new AtomicInteger (0 ));
141+ gauges .put (executingThreadsRefName , executingThreads );
140142
141- final var controllerQueueName = RECONCILIATIONS_QUEUE_SIZE + name ;
143+ final var controllerQueueRefName = controllerQueueSizeGaugeRefName ( name ) ;
142144 AtomicInteger controllerQueueSize =
143- registry .gauge (controllerQueueName , tags , new AtomicInteger (0 ));
144- gauges .put (controllerQueueName , controllerQueueSize );
145+ registry .gauge (RECONCILIATIONS_QUEUE_SIZE , tags , new AtomicInteger (0 ));
146+ gauges .put (controllerQueueRefName , controllerQueueSize );
147+ }
148+
149+ private static @ NonNull String reconciliationExecutionGaugeRefName (String controllerName ) {
150+ return RECONCILIATIONS_EXECUTIONS + "." + controllerName ;
151+ }
152+
153+ private static @ NonNull String controllerQueueSizeGaugeRefName (String controllerName ) {
154+ return RECONCILIATIONS_QUEUE_SIZE + "." + controllerName ;
145155 }
146156
147157 @ Override
@@ -223,7 +233,7 @@ public void reconcileCustomResource(
223233 String .valueOf (retryInfo .map (RetryInfo ::isLastAttempt ).orElse (true ))));
224234
225235 var controllerQueueSize =
226- gauges .get (RECONCILIATIONS_QUEUE_SIZE + metadata .get (CONTROLLER_NAME ));
236+ gauges .get (controllerQueueSizeGaugeRefName ( metadata .get (CONTROLLER_NAME ). toString () ));
227237 controllerQueueSize .incrementAndGet ();
228238 }
229239
@@ -235,18 +245,18 @@ public void finishedReconciliation(HasMetadata resource, Map<String, Object> met
235245 @ Override
236246 public void reconciliationExecutionStarted (HasMetadata resource , Map <String , Object > metadata ) {
237247 var reconcilerExecutions =
238- gauges .get (RECONCILIATIONS_EXECUTIONS + metadata .get (CONTROLLER_NAME ));
248+ gauges .get (reconciliationExecutionGaugeRefName ( metadata .get (CONTROLLER_NAME ). toString () ));
239249 reconcilerExecutions .incrementAndGet ();
240250 }
241251
242252 @ Override
243253 public void reconciliationExecutionFinished (HasMetadata resource , Map <String , Object > metadata ) {
244254 var reconcilerExecutions =
245- gauges .get (RECONCILIATIONS_EXECUTIONS + metadata .get (CONTROLLER_NAME ));
255+ gauges .get (reconciliationExecutionGaugeRefName ( metadata .get (CONTROLLER_NAME ). toString () ));
246256 reconcilerExecutions .decrementAndGet ();
247257
248258 var controllerQueueSize =
249- gauges .get (RECONCILIATIONS_QUEUE_SIZE + metadata .get (CONTROLLER_NAME ));
259+ gauges .get (controllerQueueSizeGaugeRefName ( metadata .get (CONTROLLER_NAME ). toString () ));
250260 controllerQueueSize .decrementAndGet ();
251261 }
252262
0 commit comments