Skip to content

Commit d005504

Browse files
committed
update metric using timer
1 parent f2032f7 commit d005504

1 file changed

Lines changed: 18 additions & 15 deletions

File tree

src/main/java/com/uid2/operator/Main.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.uid2.shared.health.PodTerminationMonitor;
3737
import io.micrometer.core.instrument.Gauge;
3838
import io.micrometer.core.instrument.Meter;
39+
import io.micrometer.core.instrument.Timer;
3940
import io.micrometer.core.instrument.MeterRegistry;
4041
import io.micrometer.core.instrument.Metrics;
4142
import io.micrometer.core.instrument.config.MeterFilter;
@@ -68,6 +69,7 @@
6869
public class Main {
6970
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
7071

72+
// Startup timing field
7173
private static volatile Instant startupBeginTime;
7274

7375
private final JsonObject config;
@@ -246,28 +248,29 @@ private KeyManager getKeyManager() {
246248
return new KeyManager(this.keysetKeyStore, this.keysetProvider);
247249
}
248250

251+
/**
252+
* Calculate startup duration following established codebase patterns.
253+
* @return Duration from startup begin to completion, or null if timing data is invalid
254+
*/
249255
private static Duration getStartupDuration() {
250-
return startupBeginTime != null ? Duration.between(startupBeginTime, Instant.now()) : null;
256+
if (startupBeginTime == null) {
257+
return null;
258+
}
259+
return Duration.between(startupBeginTime, Instant.now());
251260
}
252261

253262
public static void recordStartupComplete() {
254-
final Duration startupDuration = getStartupDuration();
255-
final String version = Optional.ofNullable(System.getenv("IMAGE_VERSION")).orElse("unknown");
256-
final double durationSeconds = startupDuration != null ? startupDuration.toMillis() / 1000.0 : -1.0;
257-
258-
Gauge.builder("uid2_operator_startup_duration_seconds", () -> durationSeconds)
259-
.description("Time taken for operator to start up and begin serving requests")
260-
.tags("version", version)
261-
.register(globalRegistry);
262-
263-
if (startupDuration != null) {
264-
LOGGER.info("Operator startup completed in {} seconds", String.format("%.3f", durationSeconds));
265-
} else {
266-
LOGGER.warn("Operator startup completed but timing measurement failed");
267-
}
263+
final Duration d = getStartupDuration();
264+
if (d == null) return;
265+
Timer
266+
.builder("uid2_operator_startup_duration")
267+
.register(globalRegistry)
268+
.record(d);
269+
LOGGER.info("Operator startup completed in {} seconds", String.format("%.3f", d.toMillis() / 1000.0));
268270
}
269271

270272
public static void main(String[] args) throws Exception {
273+
// Record startup begin time following established patterns
271274
startupBeginTime = Instant.now();
272275

273276
java.security.Security.setProperty("networkaddress.cache.ttl" , "60");

0 commit comments

Comments
 (0)