diff --git a/Dockerfile b/Dockerfile index cd5c7b21..0e87c205 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ -FROM amazoncorretto:21 AS build_stage +FROM amazoncorretto:23 AS build_stage WORKDIR /build COPY . . RUN ./gradlew --no-daemon clean test shadowJar --stacktrace -FROM amazoncorretto:21 +FROM amazoncorretto:23 WORKDIR /awg2 COPY --from=build_stage /build/build/libs/wow-pla.jar wow-pla.jar -EXPOSE 9000 5006 +EXPOSE 9000 9400 CMD java \ -jar \ --add-opens java.base/java.lang=ALL-UNNAMED \ diff --git a/build.gradle b/build.gradle index 384cab21..5661d5ec 100644 --- a/build.gradle +++ b/build.gradle @@ -44,6 +44,10 @@ dependencies { implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' implementation 'org.ocpsoft.prettytime:prettytime:5.0.6.Final' implementation group: 'org.javatuples', name: 'javatuples', version: '1.2' + // metrics + implementation group : 'io.prometheus', name : 'prometheus-metrics-core', version : prometheusVersion + implementation group : 'io.prometheus', name : 'prometheus-metrics-instrumentation-jvm', version : prometheusVersion + implementation group : 'io.prometheus', name : 'prometheus-metrics-exporter-httpserver', version : prometheusVersion // test testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.3' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.3' diff --git a/frontend/src/constants/filterSchema.ts b/frontend/src/constants/filterSchema.ts index aeeab5e0..30b47ae8 100644 --- a/frontend/src/constants/filterSchema.ts +++ b/frontend/src/constants/filterSchema.ts @@ -23,7 +23,7 @@ export const SEARCH_PARAM_TO_SPEC = { 'frostmage': 'frostm', 'armswarrior': 'arms', 'furywarrior': 'fury', - 'protectionwarrior': 'protection', + 'protectionwarrior': 'protectionwarrior', 'assassinationrogue': 'assassination', 'outlawrogue': 'outlaw', 'subtletyrogue': 'subtlety', @@ -44,7 +44,7 @@ export const SEARCH_PARAM_TO_SPEC = { 'enhancementshaman': 'enhancement', 'restorationshaman': 'restosham', 'holypaladin': 'holypala', - 'protectionpaladin': 'protection', + 'protectionpaladin': 'protectionpaladin', 'retributionpaladin': 'retribution', 'brewmastermonk': 'brewmaster', 'windwalkermonk': 'windwalker', diff --git a/gradle.properties b/gradle.properties index 6facb706..3d954f34 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,3 @@ -vertxVersion=4.4.3 -luceneVersion=9.6.0 \ No newline at end of file +vertxVersion=4.5.11 +luceneVersion=9.6.0 +prometheusVersion=1.3.5 diff --git a/src/io/github/sammers/pla/Main.java b/src/io/github/sammers/pla/Main.java index e5a05003..32107b05 100644 --- a/src/io/github/sammers/pla/Main.java +++ b/src/io/github/sammers/pla/Main.java @@ -8,6 +8,8 @@ import io.github.sammers.pla.logic.CharacterCache; import io.github.sammers.pla.logic.Ladder; import io.github.sammers.pla.logic.Refs; +import io.prometheus.metrics.exporter.httpserver.HTTPServer; +import io.prometheus.metrics.instrumentation.jvm.JvmMetrics; import io.reactivex.Scheduler; import io.reactivex.plugins.RxJavaPlugins; import io.reactivex.schedulers.Schedulers; @@ -19,7 +21,10 @@ import io.vertx.reactivex.ext.mongo.MongoClient; import io.vertx.reactivex.ext.web.client.WebClient; import org.ocpsoft.prettytime.PrettyTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.IOException; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.util.Locale; @@ -35,6 +40,7 @@ public class Main { public static final Executor VTHREAD_EXECUTOR = Executors.newVirtualThreadPerTaskExecutor(); public static final Scheduler VTHREAD_SCHEDULER = Schedulers.from(VTHREAD_EXECUTOR); + private static final Logger log = LoggerFactory.getLogger(Main.class); public static PrettyTime PRETTY_TIME = new PrettyTime(new Locale("en")); public static DateTimeFormatter DATA_TIME = ISO_DATE_TIME; public static DateTimeFormatter DATA_TIME_WITH_WEEKDAY = new DateTimeFormatterBuilder() @@ -42,7 +48,12 @@ public class Main { .append(ISO_DATE_TIME) .toFormatter(); - public static void main(String[] args) { + public static void main(String[] args) throws IOException { + JvmMetrics.builder().register(); + HTTPServer.builder() + .port(9400) + .buildAndStart(); + log.info("Starting Metrics server on port 9400"); final Vertx vertx = Vertx.vertx(new VertxOptions() .setBlockedThreadCheckInterval(10) .setBlockedThreadCheckIntervalUnit(TimeUnit.SECONDS)