Skip to content

Commit 6efffd6

Browse files
committed
improve: micrometer metrics improvements
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent b40766e commit 6efffd6

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.concurrent.TimeUnit;
2323
import java.util.concurrent.atomic.AtomicInteger;
2424

25+
import org.jspecify.annotations.NonNull;
26+
2527
import io.fabric8.kubernetes.api.model.HasMetadata;
2628
import io.javaoperatorsdk.operator.OperatorException;
2729
import io.javaoperatorsdk.operator.api.monitoring.Metrics;
@@ -37,8 +39,6 @@
3739
import io.micrometer.core.instrument.Tag;
3840
import io.micrometer.core.instrument.Timer;
3941

40-
import static io.javaoperatorsdk.operator.api.reconciler.Constants.CONTROLLER_NAME;
41-
4242
public 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

Comments
 (0)