Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refaktorer metrikkjobb #96

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions src/no/nav/statistikkapi/application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import no.nav.statistikkapi.kafka.*
import no.nav.statistikkapi.kandidatliste.KandidatlisteRepository
import no.nav.statistikkapi.kandidatliste.KandidatlistehendelseLytter
import no.nav.statistikkapi.kandidatutfall.*
import no.nav.statistikkapi.metrikker.AresMetrikkJobb
import no.nav.statistikkapi.metrikker.MetrikkJobb
import no.nav.statistikkapi.stillinger.StillingRepository
import no.nav.statistikkapi.tiltak.TiltakManglerAktørIdLytter
Expand Down Expand Up @@ -69,13 +70,6 @@ fun startApp(
val visningKontaktinfoRepository = VisningKontaktinfoRepository(database.dataSource)
val prometheusMeterRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT)

val metrikkJobb = MetrikkJobb(
kandidatutfallRepository,
kandidatlisteRepository,
visningKontaktinfoRepository,
prometheusMeterRegistry
)

val rapid = RapidApplication.Builder(
RapidApplication.RapidApplicationConfig.fromEnv(
System.getenv()
Expand Down Expand Up @@ -157,7 +151,12 @@ fun startApp(
TiltakManglerAktørIdLytter(this)
}

metrikkJobb.start()
AresMetrikkJobb(
kandidatutfallRepository,
kandidatlisteRepository,
visningKontaktinfoRepository,
prometheusMeterRegistry
).start()
rapid.start()
}

Expand Down
161 changes: 161 additions & 0 deletions src/no/nav/statistikkapi/metrikker/AresMetrikkJobb.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
package no.nav.statistikkapi.metrikker

import io.micrometer.core.instrument.Tags
import io.micrometer.prometheus.PrometheusMeterRegistry
import no.nav.statistikkapi.kandidatliste.KandidatlisteRepository
import no.nav.statistikkapi.kandidatutfall.KandidatutfallRepository
import no.nav.statistikkapi.logging.log
import no.nav.statistikkapi.visningkontaktinfo.VisningKontaktinfoRepository
import java.util.concurrent.Executors
import java.util.concurrent.ScheduledExecutorService
import java.util.concurrent.TimeUnit.MINUTES

class AresMetrikkJobb(
private val kandidatutfallRepository: KandidatutfallRepository,
private val kandidatlisteRepository: KandidatlisteRepository,
private val visningKontaktinfoRepository: VisningKontaktinfoRepository,
private val prometheusMeterRegistry: PrometheusMeterRegistry
) {
private val executor: ScheduledExecutorService = Executors.newSingleThreadScheduledExecutor()

fun start() {
executor.scheduleWithFixedDelay(this::lesFraDbOgSkrivTilPrometheus, 1, 5, MINUTES)
}

private fun lesFraDbOgSkrivTilPrometheus() {
try {
lesOgSkriv()
} catch (e: Exception) {
log.error("Forsøkte å lese statistikk fra DB og skrive metrikk til Prometheus", e)
}

}

private fun lesOgSkriv() {
prometheusMeterRegistry.gauge(
"antall_presenterte_kandidater",
kandidatutfallRepository.hentAntallPresentertForAlleNavKontor()
)

prometheusMeterRegistry.gauge(
"antall_fått_jobben",
kandidatutfallRepository.hentAntallFåttJobbenForAlleNavKontor()
)

prometheusMeterRegistry.gauge(
"antall_kandidatlister_tilknyttet_stilling",
kandidatlisteRepository.hentAntallKandidatlisterForOpprettedeStillinger()
)

prometheusMeterRegistry.gauge(
"antall_kandidatlister_tilknyttet_direktemeldt_stilling",
kandidatlisteRepository.hentAntallKandidatlisterTilknyttetDirektemeldteStillinger()
)

prometheusMeterRegistry.gauge(
"antall_kandidatlister_tilknyttet_ekstern_stilling",
kandidatlisteRepository.hentAntallKandidatlisterTilknyttetEksterneStillinger()
)

prometheusMeterRegistry.gauge(
"antall_stillinger_for_eksterne_stillingsannonser_med_kandidatliste",
kandidatlisteRepository.hentAntallStillingerForEksterneStillingsannonserMedKandidatliste()
)

prometheusMeterRegistry.gauge(
"antall_stillinger_for_direktemeldte_stillingsannonser",
kandidatlisteRepository.hentAntallStillingerForDirektemeldteStillingsannonser()
)

prometheusMeterRegistry.gauge(
"antall_stillinger_for_stillingsannonser_med_kandidatliste",
kandidatlisteRepository.hentAntallStillingerForStillingsannonserMedKandidatliste()
)

prometheusMeterRegistry.gauge(
"antall_direktemeldte_stillinger_med_minst_en_presentert_kandidat",
kandidatlisteRepository.hentAntallDirektemeldteStillingerMedMinstEnPresentertKandidat()
)

prometheusMeterRegistry.gauge(
"antall_kandidater_i_prioritert_malgruppe_som_har_fatt_vist_sin_kontaktinfo",
visningKontaktinfoRepository.hentAntallKandidaterIPrioritertMålgruppeSomHarFåttVistSinKontaktinfo()
)

prometheusMeterRegistry.gauge(
"antall_kandidatlister_med_minst_en_kandidat_i_prioritert_maalgruppe_som_har_faatt_vist_sin_kontaktinfo",
visningKontaktinfoRepository.hentAntallKandidatlisterMedMinstEnKandidatIPrioritertMålgruppeSomHarFåttVistSinKontaktinfo()
)

prometheusMeterRegistry.gauge(
"antall_kandidatlister_der_minst_en_kandidat_i_prioritert_maalgruppe_fikk_jobben",
kandidatlisteRepository.hentAntallKandidatlisterDerMinstEnKandidatIPrioritertMålgruppeFikkJobben()
)

prometheusMeterRegistry.gauge(
"antall_direktemeldte_stillinger_som_har_tom_kandidatliste",
kandidatlisteRepository.hentAntallDirektemeldteStillingerSomHarTomKandidatliste()
)

prometheusMeterRegistry.gauge(
"antall_unike_arbeidsgivere_for_direktemeldte_stillinger",
kandidatlisteRepository.hentAntallUnikeArbeidsgivereForDirektemeldteStillinger()
)

prometheusMeterRegistry.gauge(
"antall_kandidatlister_tilknyttet_direktemeldt_stilling_der_minst_en_kandidat_fikk_jobben",
kandidatlisteRepository.hentAntallKandidatlisterTilknyttetDirektemeldtStillingDerMinstEnKandidatFikkJobben()
)

kandidatlisteRepository.hentAntallKandidatlisterTilknyttetStillingPerMåned().forEach {
prometheusMeterRegistry.gauge(
"antall_kandidatlister_tilknyttet_stilling_per_maaned",
Tags.of("maaned", it.key),
it.value
)
}

kandidatlisteRepository.hentAntallKandidatlisterTilknyttetDirektemeldtStillingPerMåned().forEach {
prometheusMeterRegistry.gauge(
"antall_kandidatlister_tilknyttet_direktemeldt_stilling_per_maaned",
Tags.of("maaned", it.key),
it.value
)
}

kandidatlisteRepository.hentAntallDirektemeldteStillingerMedMinstEnPresentertKandidatPerMåned().forEach {
prometheusMeterRegistry.gauge(
"antall_direktemeldte_stillinger_med_minst_en_presentert_kandidat_per_maaned",
Tags.of("maaned", it.key),
it.value
)
}

visningKontaktinfoRepository.hentAntallKandidatlisterMedMinstEnKandidatIPrioritertMålgruppeSomHarFåttVistSinKontaktinfoPerMåned()
.forEach {
prometheusMeterRegistry.gauge(
"antall_kandidatlister_med_minst_en_kandidat_i_prioritert_maalgruppe_som_har_faatt_vist_sin_kontaktinfo_per_maaned",
Tags.of("maaned", it.key),
it.value
)
}

visningKontaktinfoRepository.hentAntallKandidatlisterMedMinstEnKandidatSomHarFåttVistSinKontaktinfoPerMåned()
.forEach {
prometheusMeterRegistry.gauge(
"antall_kandidatlister_med_minst_en_kandidat_som_har_faatt_vist_sin_kontaktinfo_per_maaned",
Tags.of("maaned", it.key),
it.value
)
}

kandidatlisteRepository.hentAntallKandidatlisterDerMinstEnKandidatIPrioritertMålgruppeFikkJobbenPerMåned()
.forEach {
prometheusMeterRegistry.gauge(
"antall_kandidatlister_der_minst_en_kandidat_i_prioritert_maalgruppe_fikk_jobben_per_maaned",
Tags.of("maaned", it.key),
it.value
)
}
}
}
3 changes: 2 additions & 1 deletion src/no/nav/statistikkapi/metrikker/MetrikkJobb.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicLong

// TODO Are: Slett hele klassen, erstattes av AresMetrikkJobb
class MetrikkJobb(
private val kandidatutfallRepository: KandidatutfallRepository,
private val kandidatlisteRepository: KandidatlisteRepository,
Expand Down Expand Up @@ -279,4 +280,4 @@ class MetrikkJobb(
}
}
}
}
}