diff --git a/pom.xml b/pom.xml index 767a05789..f64c18f08 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ 2.1.0 2.1.13 2.1.0 - 11.1.13 + 11.1.62 ${project.version} 21 21 diff --git a/src/main/java/com/uid2/operator/Main.java b/src/main/java/com/uid2/operator/Main.java index 9fb10d1b8..c4fe54c7e 100644 --- a/src/main/java/com/uid2/operator/Main.java +++ b/src/main/java/com/uid2/operator/Main.java @@ -36,6 +36,7 @@ import com.uid2.shared.health.PodTerminationMonitor; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.Meter; +import io.micrometer.core.instrument.Timer; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Metrics; import io.micrometer.core.instrument.config.MeterFilter; @@ -68,6 +69,7 @@ public class Main { private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); + private static volatile Instant startupBeginTime; private final JsonObject config; private final Vertx vertx; private final ApplicationVersion appVersion; @@ -244,7 +246,15 @@ private KeyManager getKeyManager() { return new KeyManager(this.keysetKeyStore, this.keysetProvider); } + public static void recordStartupComplete() { + if (startupBeginTime == null) return; + final Duration d = Duration.between(startupBeginTime, Instant.now()); + Timer.builder("uid2_operator_startup_duration").register(globalRegistry).record(d); + LOGGER.info("Startup in {} ms", d.toMillis()); + } + public static void main(String[] args) throws Exception { + startupBeginTime = Instant.now(); java.security.Security.setProperty("networkaddress.cache.ttl" , "60"); diff --git a/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java b/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java index 8a57d2370..cbaf48a24 100644 --- a/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java +++ b/src/main/java/com/uid2/operator/vertx/UIDOperatorVerticle.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.uid2.operator.Const; +import com.uid2.operator.Main; import com.uid2.operator.model.*; import com.uid2.operator.model.IdentityScope; import com.uid2.operator.monitoring.IStatsCollectorQueue; @@ -219,6 +220,8 @@ public void start(Promise startPromise) throws Exception { .listen(port, result -> { if (result.succeeded()) { this.healthComponent.setHealthStatus(true); + // Record startup completion now that HTTP server is ready + Main.recordStartupComplete(); startPromise.complete(); } else { this.healthComponent.setHealthStatus(false, result.cause().getMessage());