From ebe5d6ebeab65622c6189e3f72bbb9a1328af5b6 Mon Sep 17 00:00:00 2001 From: Magnus Evensberget Date: Fri, 30 Apr 2021 09:34:07 +0200 Subject: [PATCH] Prometheus --- build.gradle.kts | 3 +++ nais-dev.yaml | 20 +++++++++++++- .../kotlin/no/nav/fo/veilarbvarsel/main.kt | 26 ++++++++++++++++--- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index c768b80..f0203fc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,6 +32,7 @@ repositories { } val ktor_version = "1.5.0" +val prometheusVersion = "1.6.6" val exposed_version = "0.17.13" val coroutines_version = "1.4.3" @@ -59,6 +60,8 @@ dependencies { // KTor stuff implementation("io.ktor:ktor-server-core:$ktor_version") implementation("io.ktor:ktor-server-netty:$ktor_version") + implementation("io.ktor", "ktor-metrics-micrometer", ktor_version) + implementation("io.micrometer", "micrometer-registry-prometheus", prometheusVersion) // Database stuff implementation("org.postgresql:postgresql:$postgresql_version") diff --git a/nais-dev.yaml b/nais-dev.yaml index d8b6860..c9633cd 100644 --- a/nais-dev.yaml +++ b/nais-dev.yaml @@ -6,4 +6,22 @@ metadata: labels: team: pto spec: - image: ghcr.io/navikt/veilarbvarsel/veilarbvarsel:{{version}} \ No newline at end of file + image: ghcr.io/navikt/veilarbvarsel/veilarbvarsel:{{version}} + port: 8080 + prometheus: + enabled: true + path: /metrics + liveness: + path: /system/isAlice + port: 8080 + initialDelay: 10 + timeout: 10 + readyness: + path: /system/isReady + port: 8080 + initialDelay: 10 + timeout: 10 + replicas: + min: 1 + max: 2 + cpuThreasholdPercentage: 50 \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbvarsel/main.kt b/src/main/kotlin/no/nav/fo/veilarbvarsel/main.kt index adadc67..e0ff5a3 100644 --- a/src/main/kotlin/no/nav/fo/veilarbvarsel/main.kt +++ b/src/main/kotlin/no/nav/fo/veilarbvarsel/main.kt @@ -1,16 +1,19 @@ package no.nav.fo.veilarbvarsel import io.ktor.application.* +import io.ktor.metrics.micrometer.* +import io.ktor.response.* import io.ktor.routing.* import io.ktor.server.engine.* import io.ktor.server.netty.* +import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics +import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics +import io.micrometer.core.instrument.binder.system.ProcessorMetrics +import io.micrometer.prometheus.PrometheusConfig +import io.micrometer.prometheus.PrometheusMeterRegistry import no.nav.fo.veilarbvarsel.domain.VarselType -import no.nav.fo.veilarbvarsel.features.BackgroundJob import no.nav.fo.veilarbvarsel.kafka.internal.InternalEventProducer -import no.nav.fo.veilarbvarsel.kafka.internal.KafkaInternalConsumer import no.nav.fo.veilarbvarsel.system.systemRouter -import no.nav.fo.veilarbvarsel.varsel.VarselSender -import no.nav.fo.veilarbvarsel.varsel.VarselServiceImpl import org.slf4j.LoggerFactory import java.util.* @@ -23,6 +26,18 @@ fun main() { } fun Application.server() { + val appMicrometerRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT) + + install(MicrometerMetrics) { + registry = appMicrometerRegistry + + meterBinders = listOf( + JvmMemoryMetrics(), + JvmGcMetrics(), + ProcessorMetrics() + ) + } + /* DB.connect() DB.setupSchemas() @@ -40,6 +55,9 @@ fun Application.server() { trace { application.log.debug(it.buildText()) } + get("/metrics") { + call.respond(appMicrometerRegistry.scrape()) + } systemRouter() }