From 8369fe982a994a10a2780845a8bd36ac1d1c65f2 Mon Sep 17 00:00:00 2001 From: Dragutin Vujovic Date: Mon, 9 Sep 2024 22:54:54 +0200 Subject: [PATCH 1/5] Update MetricsReporter to use Prometheus --- .../config/ApplicationConfig.java | 9 - .../service/MetricsReporter.java | 294 +++++++++--------- .../pto/veilarbfilter/config/AppConfig.java | 3 - 3 files changed, 141 insertions(+), 165 deletions(-) diff --git a/src/main/java/no/nav/pto/veilarbfilter/config/ApplicationConfig.java b/src/main/java/no/nav/pto/veilarbfilter/config/ApplicationConfig.java index d40b783a..f6f1e234 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/config/ApplicationConfig.java +++ b/src/main/java/no/nav/pto/veilarbfilter/config/ApplicationConfig.java @@ -10,13 +10,9 @@ import no.nav.common.auth.context.AuthContextHolderThreadLocal; import no.nav.common.job.leader_election.LeaderElectionClient; import no.nav.common.job.leader_election.LeaderElectionHttpClient; -import no.nav.common.metrics.InfluxClient; -import no.nav.common.metrics.MetricsClient; import no.nav.common.rest.client.RestClient; import no.nav.common.token_client.builder.AzureAdTokenClientBuilder; import no.nav.common.token_client.client.AzureAdMachineToMachineTokenClient; -import no.nav.common.utils.EnvironmentUtils; -import no.nav.common.utils.UrlUtils; import no.nav.poao_tilgang.client.*; import no.nav.pto.veilarbfilter.domene.deserializer.DateDeserializer; import no.nav.pto.veilarbfilter.domene.deserializer.DateSerializer; @@ -76,11 +72,6 @@ public ObjectMapper objectMapper() { return mapper; } - @Bean - public MetricsClient metricsClient() { - return new InfluxClient(); - } - @Bean public LeaderElectionClient leaderElectionClient() { return new LeaderElectionHttpClient(); diff --git a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java index 02402eae..b214715d 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java +++ b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java @@ -1,174 +1,162 @@ package no.nav.pto.veilarbfilter.service; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.MultiGauge; +import io.micrometer.core.instrument.Tags; +import io.micrometer.core.instrument.binder.MeterBinder; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.common.metrics.Event; -import no.nav.common.metrics.MetricsClient; +import no.nav.common.job.leader_election.LeaderElectionClient; import no.nav.pto.veilarbfilter.domene.PortefoljeFilter; -import org.apache.commons.codec.digest.DigestUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @Slf4j -public class MetricsReporter { +public class MetricsReporter implements MeterBinder { private final MineLagredeFilterService mineLagredeFilterService; - private final MetricsClient metricsClient; + private final LeaderElectionClient leaderElection; - public void reportLagradeFilter() { - log.info("Reporting metrics..."); + private MultiGauge lagredeFilterStats; - mineLagredeFilterService.hentAllLagredeFilter().forEach(filterModel -> { - Event metrikk = new Event("portefolje.metrikker.lagredefilter.veileder-filter-counter"); - metrikk.addFieldToReport("navn-lengde", filterModel.getFilterNavn().length()); - metrikk.addTagToReport("id", getHash(filterModel.getVeilederId())); - metrikk.addFieldToReport("filterId", filterModel.getFilterId()); - PortefoljeFilter filterValg = filterModel.getFilterValg(); - var antallFiltre = 0; + @Override + public void bindTo(@NotNull MeterRegistry meterRegistry) { + if (lagredeFilterStats == null) { + lagredeFilterStats = MultiGauge.builder("portefolje_lagredefilter") + .description("Stats for lagrede filter") + .register(meterRegistry); + } + } - if (filterValg.getAktiviteter() != null) { - metrikk.addTagToReport("aktiviteter", "1"); - if (!"NA".equals(filterValg.getAktiviteter().getBEHANDLING())) { - metrikk.addTagToReport("BEHANDLING", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getEGEN())) { - metrikk.addTagToReport("EGEN", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getGRUPPEAKTIVITET())) { - metrikk.addTagToReport("GRUPPEAKTIVITET", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getIJOBB())) { - metrikk.addTagToReport("IJOBB", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getMOTE())) { - metrikk.addTagToReport("MOTE", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getSOKEAVTALE())) { - metrikk.addTagToReport("SOKEAVTALE", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getSTILLING())) { - metrikk.addTagToReport("STILLING", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getTILTAK())) { - metrikk.addTagToReport("TILTAK", "1"); - antallFiltre++; - } - if (!"NA".equals(filterValg.getAktiviteter().getUTDANNINGAKTIVITET())) { - metrikk.addTagToReport("UTDANNINGAKTIVITET", "1"); - antallFiltre++; - } - } - if (filterValg.getAlder() != null && !filterValg.getAlder().isEmpty()) { - metrikk.addTagToReport("alder", "1"); - addValuesAsTags(metrikk, filterValg.getAlder()); - antallFiltre += filterValg.getAlder().size(); - } - if (filterValg.getFerdigfilterListe() != null && !filterValg.getFerdigfilterListe().isEmpty()) { - metrikk.addTagToReport("ferdigfilterListe", "1"); - addValuesAsTags(metrikk, filterValg.getFerdigfilterListe()); - antallFiltre += filterValg.getFerdigfilterListe().size(); - } - if (filterValg.getFodselsdagIMnd() != null && !filterValg.getFodselsdagIMnd().isEmpty()) { - metrikk.addTagToReport("fodselsdagIMnd", "1"); - antallFiltre += filterValg.getFodselsdagIMnd().size(); - } - if (filterValg.getFormidlingsgruppe() != null && !filterValg.getFormidlingsgruppe().isEmpty()) { - metrikk.addTagToReport("formidlingsgruppe", "1"); - addValuesAsTags(metrikk, filterValg.getFormidlingsgruppe()); - antallFiltre += filterValg.getFormidlingsgruppe().size(); - } - if (filterValg.getHovedmal() != null && !filterValg.getHovedmal().isEmpty()) { - metrikk.addTagToReport("hovedmal", "1"); - addValuesAsTags(metrikk, filterValg.getHovedmal()); - antallFiltre += filterValg.getHovedmal().size(); - } - if (filterValg.getInnsatsgruppe() != null && !filterValg.getInnsatsgruppe().isEmpty()) { - metrikk.addTagToReport("innsatsgruppe", "1"); - addValuesAsTags(metrikk, filterValg.getInnsatsgruppe()); - antallFiltre += filterValg.getInnsatsgruppe().size(); - } - if (filterValg.getKjonn() != null && !filterValg.getKjonn().isEmpty()) { - metrikk.addTagToReport("kjonn", "1"); - metrikk.addTagToReport(filterValg.getKjonn(), "1"); - antallFiltre++; - } - if (filterValg.getManuellBrukerStatus() != null && !filterValg.getManuellBrukerStatus().isEmpty()) { - metrikk.addTagToReport("manuellBrukerStatus", "1"); - addValuesAsTags(metrikk, filterValg.getManuellBrukerStatus()); - antallFiltre += filterValg.getManuellBrukerStatus().size(); - } - if (filterValg.getRettighetsgruppe() != null && !filterValg.getRettighetsgruppe().isEmpty()) { - metrikk.addTagToReport("rettighetsgruppe", "1"); - addValuesAsTags(metrikk, filterValg.getRettighetsgruppe()); - antallFiltre += filterValg.getRettighetsgruppe().size(); - } - if (filterValg.getServicegruppe() != null && !filterValg.getServicegruppe().isEmpty()) { - metrikk.addTagToReport("servicegruppe", "1"); - addValuesAsTags(metrikk, filterValg.getServicegruppe()); - antallFiltre += filterValg.getServicegruppe().size(); - } - if (filterValg.getTiltakstyper() != null && !filterValg.getTiltakstyper().isEmpty()) { - metrikk.addTagToReport("tiltakstyper", "1"); - addValuesAsTags(metrikk, filterValg.getTiltakstyper()); - antallFiltre += filterValg.getTiltakstyper().size(); - } - if (filterValg.getVeilederNavnQuery() != null && !filterValg.getVeilederNavnQuery().isEmpty()) { - metrikk.addTagToReport("veilederNavnQuery", "1"); - antallFiltre++; - } - if (filterValg.getVeiledere() != null && !filterValg.getVeiledere().isEmpty()) { - metrikk.addTagToReport("veiledere", "1"); - antallFiltre += filterValg.getVeiledere().size(); - } - if (filterValg.getYtelse() != null && !filterValg.getYtelse().isEmpty()) { - metrikk.addTagToReport("ytelse", "1"); - metrikk.addTagToReport(filterValg.getYtelse(), "1"); - antallFiltre++; - } - if (filterValg.getRegistreringstype() != null && !filterValg.getRegistreringstype().isEmpty()) { - metrikk.addTagToReport("registreringstype", "1"); - addValuesAsTags(metrikk, filterValg.getRegistreringstype()); - antallFiltre += filterValg.getRegistreringstype().size(); - } - if (filterValg.getCvJobbprofil() != null && !filterValg.getCvJobbprofil().isEmpty()) { - metrikk.addTagToReport("cvJobbprofil", "1"); - metrikk.addTagToReport(filterValg.getCvJobbprofil(), "1"); - antallFiltre++; - } - if (filterValg.getArbeidslisteKategori() != null && !filterValg.getArbeidslisteKategori().isEmpty()) { - metrikk.addTagToReport("arbeidslisteKategori", "1"); - antallFiltre += filterValg.getArbeidslisteKategori().size(); - } - if (filterValg.getLandgruppe() != null && !filterValg.getLandgruppe().isEmpty()) { - metrikk.addTagToReport("landgruppe", "1"); - addValuesAsTags(metrikk, filterValg.getLandgruppe()); - antallFiltre += filterValg.getLandgruppe().size(); - } - if (filterValg.getTolkebehov() != null && !filterValg.getTolkebehov().isEmpty()) { - metrikk.addTagToReport("tolkbehov", "1"); - addValuesAsTags(metrikk, filterValg.getTolkebehov()); - antallFiltre += filterValg.getTolkebehov().size(); - } - metrikk.addFieldToReport("antallFiltre", antallFiltre); - metricsClient.report(metrikk); + public void reportLagradeFilter() { + try { + Map stats = new HashMap<>(); - }); - } + if (leaderElection.isLeader()) { + log.info("Reporting metrics..."); + + mineLagredeFilterService.hentAllLagredeFilter().forEach(filterModel -> { - private void addValuesAsTags(Event metrikk, List listValues) { - listValues.forEach(x -> metrikk.addTagToReport(x, "1")); + PortefoljeFilter filterValg = filterModel.getFilterValg(); + if (filterValg.getAktiviteter() != null) { + incrementFilterStats(stats, "aktiviteter"); + if (!"NA".equals(filterValg.getAktiviteter().getBEHANDLING())) { + incrementFilterStats(stats, "BEHANDLING"); + } + if (!"NA".equals(filterValg.getAktiviteter().getEGEN())) { + incrementFilterStats(stats, "EGEN"); + } + if (!"NA".equals(filterValg.getAktiviteter().getGRUPPEAKTIVITET())) { + incrementFilterStats(stats, "GRUPPEAKTIVITET"); + } + if (!"NA".equals(filterValg.getAktiviteter().getIJOBB())) { + incrementFilterStats(stats, "IJOBB"); + } + if (!"NA".equals(filterValg.getAktiviteter().getMOTE())) { + incrementFilterStats(stats, "MOTE"); + } + if (!"NA".equals(filterValg.getAktiviteter().getSOKEAVTALE())) { + incrementFilterStats(stats, "SOKEAVTALE"); + } + if (!"NA".equals(filterValg.getAktiviteter().getSTILLING())) { + incrementFilterStats(stats, "STILLING"); + } + if (!"NA".equals(filterValg.getAktiviteter().getTILTAK())) { + incrementFilterStats(stats, "TILTAK"); + } + if (!"NA".equals(filterValg.getAktiviteter().getUTDANNINGAKTIVITET())) { + incrementFilterStats(stats, "UTDANNINGAKTIVITET"); + } + } + if (filterValg.getAlder() != null && !filterValg.getAlder().isEmpty()) { + incrementFilterStats(stats, "alder"); + } + if (filterValg.getFerdigfilterListe() != null && !filterValg.getFerdigfilterListe().isEmpty()) { + incrementFilterStats(stats, "ferdigfilterListe"); + filterValg.getFerdigfilterListe().forEach(x -> incrementFilterStats(stats, x)); + } + if (filterValg.getFodselsdagIMnd() != null && !filterValg.getFodselsdagIMnd().isEmpty()) { + incrementFilterStats(stats, "fodselsdagIMnd"); + } + if (filterValg.getFormidlingsgruppe() != null && !filterValg.getFormidlingsgruppe().isEmpty()) { + incrementFilterStats(stats, "formidlingsgruppe"); + } + if (filterValg.getHovedmal() != null && !filterValg.getHovedmal().isEmpty()) { + incrementFilterStats(stats, "hovedmal"); + } + if (filterValg.getInnsatsgruppe() != null && !filterValg.getInnsatsgruppe().isEmpty()) { + incrementFilterStats(stats, "innsatsgruppe"); + } + if (filterValg.getKjonn() != null && !filterValg.getKjonn().isEmpty()) { + incrementFilterStats(stats, "kjonn"); + } + if (filterValg.getManuellBrukerStatus() != null && !filterValg.getManuellBrukerStatus().isEmpty()) { + incrementFilterStats(stats, "manuellBrukerStatus"); + } + if (filterValg.getRettighetsgruppe() != null && !filterValg.getRettighetsgruppe().isEmpty()) { + incrementFilterStats(stats, "rettighetsgruppe"); + } + if (filterValg.getServicegruppe() != null && !filterValg.getServicegruppe().isEmpty()) { + incrementFilterStats(stats, "servicegruppe"); + } + if (filterValg.getTiltakstyper() != null && !filterValg.getTiltakstyper().isEmpty()) { + incrementFilterStats(stats, "tiltakstyper"); + } + if (filterValg.getVeilederNavnQuery() != null && !filterValg.getVeilederNavnQuery().isEmpty()) { + incrementFilterStats(stats, "veilederNavnQuery"); + } + if (filterValg.getVeiledere() != null && !filterValg.getVeiledere().isEmpty()) { + incrementFilterStats(stats, "veiledere"); + } + if (filterValg.getYtelse() != null && !filterValg.getYtelse().isEmpty()) { + incrementFilterStats(stats, "ytelse"); + } + if (filterValg.getRegistreringstype() != null && !filterValg.getRegistreringstype().isEmpty()) { + incrementFilterStats(stats, "registreringstype"); + } + if (filterValg.getCvJobbprofil() != null && !filterValg.getCvJobbprofil().isEmpty()) { + incrementFilterStats(stats, "cvJobbprofil"); + } + if (filterValg.getArbeidslisteKategori() != null && !filterValg.getArbeidslisteKategori().isEmpty()) { + incrementFilterStats(stats, "arbeidslisteKategori"); + } + if (filterValg.getLandgruppe() != null && !filterValg.getLandgruppe().isEmpty()) { + incrementFilterStats(stats, "landgruppe"); + } + if (filterValg.getFoedeland() != null && !filterValg.getFoedeland().isEmpty()) { + incrementFilterStats(stats, "foedeland"); + } + if (filterValg.getBarnUnder18Aar() != null && !filterValg.getBarnUnder18Aar().isEmpty()) { + incrementFilterStats(stats, "barnUnder18Aar"); + } + if (filterValg.getTolkebehov() != null && !filterValg.getTolkebehov().isEmpty()) { + incrementFilterStats(stats, "tolkbehov"); + } + if (filterValg.getEnsligeForsorgere() != null && !filterValg.getEnsligeForsorgere().isEmpty()) { + incrementFilterStats(stats, "ensligeForsorgere"); + } + if (filterValg.getFargekategorier() != null && !filterValg.getFargekategorier().isEmpty()) { + incrementFilterStats(stats, "fargekategorier"); + } + }); + lagredeFilterStats.register(stats.entrySet().stream().map(entry -> MultiGauge.Row.of(Tags.of("filterNavn", entry.getKey()), entry.getValue())).collect(Collectors.toList()), true); + } + } + catch (Exception e) { + log.error("Can not report metrics " + e, e); + } } - private String getHash(String veilederId) { - return DigestUtils.md5Hex(veilederId); + private void incrementFilterStats(Map stats, String statName){ + if (stats.containsKey(statName)){ + stats.put(statName, stats.get(statName)+1); + }else { + stats.put(statName, 1); + } } } diff --git a/src/test/java/no/nav/pto/veilarbfilter/config/AppConfig.java b/src/test/java/no/nav/pto/veilarbfilter/config/AppConfig.java index 1f05e176..a7d43172 100644 --- a/src/test/java/no/nav/pto/veilarbfilter/config/AppConfig.java +++ b/src/test/java/no/nav/pto/veilarbfilter/config/AppConfig.java @@ -2,7 +2,6 @@ import no.nav.common.auth.context.AuthContextHolder; import no.nav.common.auth.context.AuthContextHolderThreadLocal; -import no.nav.common.metrics.InfluxClient; import no.nav.common.types.identer.EnhetId; import no.nav.poao_tilgang.client.Decision; import no.nav.poao_tilgang.client.PoaoTilgangClient; @@ -38,8 +37,6 @@ OverblikkVisningRepository.class, OverblikkVisningController.class}) public class AppConfig { - @MockBean - public InfluxClient metricsClient; @Bean public AuthContextHolder authContextHolder() { From 4cf469e356d6e828edb06318422881d0ece196ea Mon Sep 17 00:00:00 2001 From: Dragutin Vujovic Date: Mon, 9 Sep 2024 23:03:28 +0200 Subject: [PATCH 2/5] Update metrics reporter config --- .../build-deploy-feature-branch-dev.yaml | 2 +- .../veilarbfilter/config/ScheduleConfig.java | 2 +- .../service/MetricsReporter.java | 223 +++++++++--------- 3 files changed, 112 insertions(+), 115 deletions(-) diff --git a/.github/workflows/build-deploy-feature-branch-dev.yaml b/.github/workflows/build-deploy-feature-branch-dev.yaml index fb4ac3c9..43a26f9c 100644 --- a/.github/workflows/build-deploy-feature-branch-dev.yaml +++ b/.github/workflows/build-deploy-feature-branch-dev.yaml @@ -34,7 +34,7 @@ jobs: uses: nais/docker-build-push@v0 id: docker-build-push with: - team: pto + team: obo identity_provider: ${{ secrets.NAIS_WORKLOAD_IDENTITY_PROVIDER }} project_id: ${{ vars.NAIS_MANAGEMENT_PROJECT_ID }} diff --git a/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java b/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java index 30f2ed04..99ea0cb4 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java +++ b/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java @@ -35,7 +35,7 @@ public void fjernVeilederSomErIkkeAktive() { } } - @Scheduled(fixedDelay = 30, timeUnit = TimeUnit.MINUTES) + @Scheduled(fixedDelay = 2, timeUnit = TimeUnit.MINUTES) public void reportLagradeFilter() { try { if (leaderElectionClient.isLeader()) { diff --git a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java index b214715d..cdc17ad4 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java +++ b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java @@ -37,125 +37,122 @@ public void reportLagradeFilter() { try { Map stats = new HashMap<>(); - if (leaderElection.isLeader()) { - log.info("Reporting metrics..."); + log.info("Reporting metrics..."); - mineLagredeFilterService.hentAllLagredeFilter().forEach(filterModel -> { + mineLagredeFilterService.hentAllLagredeFilter().forEach(filterModel -> { - PortefoljeFilter filterValg = filterModel.getFilterValg(); - if (filterValg.getAktiviteter() != null) { - incrementFilterStats(stats, "aktiviteter"); - if (!"NA".equals(filterValg.getAktiviteter().getBEHANDLING())) { - incrementFilterStats(stats, "BEHANDLING"); - } - if (!"NA".equals(filterValg.getAktiviteter().getEGEN())) { - incrementFilterStats(stats, "EGEN"); - } - if (!"NA".equals(filterValg.getAktiviteter().getGRUPPEAKTIVITET())) { - incrementFilterStats(stats, "GRUPPEAKTIVITET"); - } - if (!"NA".equals(filterValg.getAktiviteter().getIJOBB())) { - incrementFilterStats(stats, "IJOBB"); - } - if (!"NA".equals(filterValg.getAktiviteter().getMOTE())) { - incrementFilterStats(stats, "MOTE"); - } - if (!"NA".equals(filterValg.getAktiviteter().getSOKEAVTALE())) { - incrementFilterStats(stats, "SOKEAVTALE"); - } - if (!"NA".equals(filterValg.getAktiviteter().getSTILLING())) { - incrementFilterStats(stats, "STILLING"); - } - if (!"NA".equals(filterValg.getAktiviteter().getTILTAK())) { - incrementFilterStats(stats, "TILTAK"); - } - if (!"NA".equals(filterValg.getAktiviteter().getUTDANNINGAKTIVITET())) { - incrementFilterStats(stats, "UTDANNINGAKTIVITET"); - } - } - if (filterValg.getAlder() != null && !filterValg.getAlder().isEmpty()) { - incrementFilterStats(stats, "alder"); - } - if (filterValg.getFerdigfilterListe() != null && !filterValg.getFerdigfilterListe().isEmpty()) { - incrementFilterStats(stats, "ferdigfilterListe"); - filterValg.getFerdigfilterListe().forEach(x -> incrementFilterStats(stats, x)); - } - if (filterValg.getFodselsdagIMnd() != null && !filterValg.getFodselsdagIMnd().isEmpty()) { - incrementFilterStats(stats, "fodselsdagIMnd"); - } - if (filterValg.getFormidlingsgruppe() != null && !filterValg.getFormidlingsgruppe().isEmpty()) { - incrementFilterStats(stats, "formidlingsgruppe"); - } - if (filterValg.getHovedmal() != null && !filterValg.getHovedmal().isEmpty()) { - incrementFilterStats(stats, "hovedmal"); - } - if (filterValg.getInnsatsgruppe() != null && !filterValg.getInnsatsgruppe().isEmpty()) { - incrementFilterStats(stats, "innsatsgruppe"); - } - if (filterValg.getKjonn() != null && !filterValg.getKjonn().isEmpty()) { - incrementFilterStats(stats, "kjonn"); - } - if (filterValg.getManuellBrukerStatus() != null && !filterValg.getManuellBrukerStatus().isEmpty()) { - incrementFilterStats(stats, "manuellBrukerStatus"); - } - if (filterValg.getRettighetsgruppe() != null && !filterValg.getRettighetsgruppe().isEmpty()) { - incrementFilterStats(stats, "rettighetsgruppe"); - } - if (filterValg.getServicegruppe() != null && !filterValg.getServicegruppe().isEmpty()) { - incrementFilterStats(stats, "servicegruppe"); - } - if (filterValg.getTiltakstyper() != null && !filterValg.getTiltakstyper().isEmpty()) { - incrementFilterStats(stats, "tiltakstyper"); - } - if (filterValg.getVeilederNavnQuery() != null && !filterValg.getVeilederNavnQuery().isEmpty()) { - incrementFilterStats(stats, "veilederNavnQuery"); - } - if (filterValg.getVeiledere() != null && !filterValg.getVeiledere().isEmpty()) { - incrementFilterStats(stats, "veiledere"); - } - if (filterValg.getYtelse() != null && !filterValg.getYtelse().isEmpty()) { - incrementFilterStats(stats, "ytelse"); - } - if (filterValg.getRegistreringstype() != null && !filterValg.getRegistreringstype().isEmpty()) { - incrementFilterStats(stats, "registreringstype"); - } - if (filterValg.getCvJobbprofil() != null && !filterValg.getCvJobbprofil().isEmpty()) { - incrementFilterStats(stats, "cvJobbprofil"); - } - if (filterValg.getArbeidslisteKategori() != null && !filterValg.getArbeidslisteKategori().isEmpty()) { - incrementFilterStats(stats, "arbeidslisteKategori"); - } - if (filterValg.getLandgruppe() != null && !filterValg.getLandgruppe().isEmpty()) { - incrementFilterStats(stats, "landgruppe"); - } - if (filterValg.getFoedeland() != null && !filterValg.getFoedeland().isEmpty()) { - incrementFilterStats(stats, "foedeland"); - } - if (filterValg.getBarnUnder18Aar() != null && !filterValg.getBarnUnder18Aar().isEmpty()) { - incrementFilterStats(stats, "barnUnder18Aar"); - } - if (filterValg.getTolkebehov() != null && !filterValg.getTolkebehov().isEmpty()) { - incrementFilterStats(stats, "tolkbehov"); - } - if (filterValg.getEnsligeForsorgere() != null && !filterValg.getEnsligeForsorgere().isEmpty()) { - incrementFilterStats(stats, "ensligeForsorgere"); - } - if (filterValg.getFargekategorier() != null && !filterValg.getFargekategorier().isEmpty()) { - incrementFilterStats(stats, "fargekategorier"); - } - }); - lagredeFilterStats.register(stats.entrySet().stream().map(entry -> MultiGauge.Row.of(Tags.of("filterNavn", entry.getKey()), entry.getValue())).collect(Collectors.toList()), true); - } - } - catch (Exception e) { + PortefoljeFilter filterValg = filterModel.getFilterValg(); + if (filterValg.getAktiviteter() != null) { + incrementFilterStats(stats, "aktiviteter"); + if (!"NA".equals(filterValg.getAktiviteter().getBEHANDLING())) { + incrementFilterStats(stats, "BEHANDLING"); + } + if (!"NA".equals(filterValg.getAktiviteter().getEGEN())) { + incrementFilterStats(stats, "EGEN"); + } + if (!"NA".equals(filterValg.getAktiviteter().getGRUPPEAKTIVITET())) { + incrementFilterStats(stats, "GRUPPEAKTIVITET"); + } + if (!"NA".equals(filterValg.getAktiviteter().getIJOBB())) { + incrementFilterStats(stats, "IJOBB"); + } + if (!"NA".equals(filterValg.getAktiviteter().getMOTE())) { + incrementFilterStats(stats, "MOTE"); + } + if (!"NA".equals(filterValg.getAktiviteter().getSOKEAVTALE())) { + incrementFilterStats(stats, "SOKEAVTALE"); + } + if (!"NA".equals(filterValg.getAktiviteter().getSTILLING())) { + incrementFilterStats(stats, "STILLING"); + } + if (!"NA".equals(filterValg.getAktiviteter().getTILTAK())) { + incrementFilterStats(stats, "TILTAK"); + } + if (!"NA".equals(filterValg.getAktiviteter().getUTDANNINGAKTIVITET())) { + incrementFilterStats(stats, "UTDANNINGAKTIVITET"); + } + } + if (filterValg.getAlder() != null && !filterValg.getAlder().isEmpty()) { + incrementFilterStats(stats, "alder"); + } + if (filterValg.getFerdigfilterListe() != null && !filterValg.getFerdigfilterListe().isEmpty()) { + incrementFilterStats(stats, "ferdigfilterListe"); + filterValg.getFerdigfilterListe().forEach(x -> incrementFilterStats(stats, x)); + } + if (filterValg.getFodselsdagIMnd() != null && !filterValg.getFodselsdagIMnd().isEmpty()) { + incrementFilterStats(stats, "fodselsdagIMnd"); + } + if (filterValg.getFormidlingsgruppe() != null && !filterValg.getFormidlingsgruppe().isEmpty()) { + incrementFilterStats(stats, "formidlingsgruppe"); + } + if (filterValg.getHovedmal() != null && !filterValg.getHovedmal().isEmpty()) { + incrementFilterStats(stats, "hovedmal"); + } + if (filterValg.getInnsatsgruppe() != null && !filterValg.getInnsatsgruppe().isEmpty()) { + incrementFilterStats(stats, "innsatsgruppe"); + } + if (filterValg.getKjonn() != null && !filterValg.getKjonn().isEmpty()) { + incrementFilterStats(stats, "kjonn"); + } + if (filterValg.getManuellBrukerStatus() != null && !filterValg.getManuellBrukerStatus().isEmpty()) { + incrementFilterStats(stats, "manuellBrukerStatus"); + } + if (filterValg.getRettighetsgruppe() != null && !filterValg.getRettighetsgruppe().isEmpty()) { + incrementFilterStats(stats, "rettighetsgruppe"); + } + if (filterValg.getServicegruppe() != null && !filterValg.getServicegruppe().isEmpty()) { + incrementFilterStats(stats, "servicegruppe"); + } + if (filterValg.getTiltakstyper() != null && !filterValg.getTiltakstyper().isEmpty()) { + incrementFilterStats(stats, "tiltakstyper"); + } + if (filterValg.getVeilederNavnQuery() != null && !filterValg.getVeilederNavnQuery().isEmpty()) { + incrementFilterStats(stats, "veilederNavnQuery"); + } + if (filterValg.getVeiledere() != null && !filterValg.getVeiledere().isEmpty()) { + incrementFilterStats(stats, "veiledere"); + } + if (filterValg.getYtelse() != null && !filterValg.getYtelse().isEmpty()) { + incrementFilterStats(stats, "ytelse"); + } + if (filterValg.getRegistreringstype() != null && !filterValg.getRegistreringstype().isEmpty()) { + incrementFilterStats(stats, "registreringstype"); + } + if (filterValg.getCvJobbprofil() != null && !filterValg.getCvJobbprofil().isEmpty()) { + incrementFilterStats(stats, "cvJobbprofil"); + } + if (filterValg.getArbeidslisteKategori() != null && !filterValg.getArbeidslisteKategori().isEmpty()) { + incrementFilterStats(stats, "arbeidslisteKategori"); + } + if (filterValg.getLandgruppe() != null && !filterValg.getLandgruppe().isEmpty()) { + incrementFilterStats(stats, "landgruppe"); + } + if (filterValg.getFoedeland() != null && !filterValg.getFoedeland().isEmpty()) { + incrementFilterStats(stats, "foedeland"); + } + if (filterValg.getBarnUnder18Aar() != null && !filterValg.getBarnUnder18Aar().isEmpty()) { + incrementFilterStats(stats, "barnUnder18Aar"); + } + if (filterValg.getTolkebehov() != null && !filterValg.getTolkebehov().isEmpty()) { + incrementFilterStats(stats, "tolkbehov"); + } + if (filterValg.getEnsligeForsorgere() != null && !filterValg.getEnsligeForsorgere().isEmpty()) { + incrementFilterStats(stats, "ensligeForsorgere"); + } + if (filterValg.getFargekategorier() != null && !filterValg.getFargekategorier().isEmpty()) { + incrementFilterStats(stats, "fargekategorier"); + } + }); + lagredeFilterStats.register(stats.entrySet().stream().map(entry -> MultiGauge.Row.of(Tags.of("filterNavn", entry.getKey()), entry.getValue())).collect(Collectors.toList()), true); + } catch (Exception e) { log.error("Can not report metrics " + e, e); } } - private void incrementFilterStats(Map stats, String statName){ - if (stats.containsKey(statName)){ - stats.put(statName, stats.get(statName)+1); - }else { + private void incrementFilterStats(Map stats, String statName) { + if (stats.containsKey(statName)) { + stats.put(statName, stats.get(statName) + 1); + } else { stats.put(statName, 1); } } From e8e214b7a9bb404efc22114df7878e8a63cdde17 Mon Sep 17 00:00:00 2001 From: Dragutin Vujovic Date: Mon, 9 Sep 2024 23:18:16 +0200 Subject: [PATCH 3/5] Update metrics reporter config --- .../java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java b/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java index 99ea0cb4..bcfc1ed7 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java +++ b/src/main/java/no/nav/pto/veilarbfilter/config/ScheduleConfig.java @@ -35,7 +35,7 @@ public void fjernVeilederSomErIkkeAktive() { } } - @Scheduled(fixedDelay = 2, timeUnit = TimeUnit.MINUTES) + @Scheduled(fixedDelay = 60, timeUnit = TimeUnit.MINUTES) public void reportLagradeFilter() { try { if (leaderElectionClient.isLeader()) { From 8ab8b566e6d27f5c40cf8583af6ddca9b7063ea4 Mon Sep 17 00:00:00 2001 From: Dragutin Vujovic Date: Mon, 9 Sep 2024 23:26:38 +0200 Subject: [PATCH 4/5] Remove unused variable --- .../java/no/nav/pto/veilarbfilter/service/MetricsReporter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java index cdc17ad4..583b061d 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java +++ b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java @@ -20,7 +20,6 @@ @Slf4j public class MetricsReporter implements MeterBinder { private final MineLagredeFilterService mineLagredeFilterService; - private final LeaderElectionClient leaderElection; private MultiGauge lagredeFilterStats; From da96196c66081579227547d75ce25c31c82955bd Mon Sep 17 00:00:00 2001 From: Dragutin Vujovic Date: Mon, 9 Sep 2024 23:28:50 +0200 Subject: [PATCH 5/5] Update metrics tag names --- .../service/MetricsReporter.java | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java index 583b061d..d8473272 100644 --- a/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java +++ b/src/main/java/no/nav/pto/veilarbfilter/service/MetricsReporter.java @@ -6,7 +6,6 @@ import io.micrometer.core.instrument.binder.MeterBinder; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import no.nav.common.job.leader_election.LeaderElectionClient; import no.nav.pto.veilarbfilter.domene.PortefoljeFilter; import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; @@ -44,42 +43,42 @@ public void reportLagradeFilter() { if (filterValg.getAktiviteter() != null) { incrementFilterStats(stats, "aktiviteter"); if (!"NA".equals(filterValg.getAktiviteter().getBEHANDLING())) { - incrementFilterStats(stats, "BEHANDLING"); + incrementFilterStats(stats, "behandling"); } if (!"NA".equals(filterValg.getAktiviteter().getEGEN())) { - incrementFilterStats(stats, "EGEN"); + incrementFilterStats(stats, "egen"); } if (!"NA".equals(filterValg.getAktiviteter().getGRUPPEAKTIVITET())) { - incrementFilterStats(stats, "GRUPPEAKTIVITET"); + incrementFilterStats(stats, "gruppeaktivitet"); } if (!"NA".equals(filterValg.getAktiviteter().getIJOBB())) { - incrementFilterStats(stats, "IJOBB"); + incrementFilterStats(stats, "ijobb"); } if (!"NA".equals(filterValg.getAktiviteter().getMOTE())) { - incrementFilterStats(stats, "MOTE"); + incrementFilterStats(stats, "mote"); } if (!"NA".equals(filterValg.getAktiviteter().getSOKEAVTALE())) { - incrementFilterStats(stats, "SOKEAVTALE"); + incrementFilterStats(stats, "sokeavtale"); } if (!"NA".equals(filterValg.getAktiviteter().getSTILLING())) { - incrementFilterStats(stats, "STILLING"); + incrementFilterStats(stats, "stilling"); } if (!"NA".equals(filterValg.getAktiviteter().getTILTAK())) { - incrementFilterStats(stats, "TILTAK"); + incrementFilterStats(stats, "tiltak"); } if (!"NA".equals(filterValg.getAktiviteter().getUTDANNINGAKTIVITET())) { - incrementFilterStats(stats, "UTDANNINGAKTIVITET"); + incrementFilterStats(stats, "utdanningaktivitet"); } } if (filterValg.getAlder() != null && !filterValg.getAlder().isEmpty()) { incrementFilterStats(stats, "alder"); } if (filterValg.getFerdigfilterListe() != null && !filterValg.getFerdigfilterListe().isEmpty()) { - incrementFilterStats(stats, "ferdigfilterListe"); + incrementFilterStats(stats, "ferdigfilterliste"); filterValg.getFerdigfilterListe().forEach(x -> incrementFilterStats(stats, x)); } if (filterValg.getFodselsdagIMnd() != null && !filterValg.getFodselsdagIMnd().isEmpty()) { - incrementFilterStats(stats, "fodselsdagIMnd"); + incrementFilterStats(stats, "fodselsdagimnd"); } if (filterValg.getFormidlingsgruppe() != null && !filterValg.getFormidlingsgruppe().isEmpty()) { incrementFilterStats(stats, "formidlingsgruppe"); @@ -94,7 +93,7 @@ public void reportLagradeFilter() { incrementFilterStats(stats, "kjonn"); } if (filterValg.getManuellBrukerStatus() != null && !filterValg.getManuellBrukerStatus().isEmpty()) { - incrementFilterStats(stats, "manuellBrukerStatus"); + incrementFilterStats(stats, "manuellbrukerstatus"); } if (filterValg.getRettighetsgruppe() != null && !filterValg.getRettighetsgruppe().isEmpty()) { incrementFilterStats(stats, "rettighetsgruppe"); @@ -106,7 +105,7 @@ public void reportLagradeFilter() { incrementFilterStats(stats, "tiltakstyper"); } if (filterValg.getVeilederNavnQuery() != null && !filterValg.getVeilederNavnQuery().isEmpty()) { - incrementFilterStats(stats, "veilederNavnQuery"); + incrementFilterStats(stats, "veiledernavnquery"); } if (filterValg.getVeiledere() != null && !filterValg.getVeiledere().isEmpty()) { incrementFilterStats(stats, "veiledere"); @@ -118,10 +117,10 @@ public void reportLagradeFilter() { incrementFilterStats(stats, "registreringstype"); } if (filterValg.getCvJobbprofil() != null && !filterValg.getCvJobbprofil().isEmpty()) { - incrementFilterStats(stats, "cvJobbprofil"); + incrementFilterStats(stats, "cvjobbprofil"); } if (filterValg.getArbeidslisteKategori() != null && !filterValg.getArbeidslisteKategori().isEmpty()) { - incrementFilterStats(stats, "arbeidslisteKategori"); + incrementFilterStats(stats, "arbeidslistekategori"); } if (filterValg.getLandgruppe() != null && !filterValg.getLandgruppe().isEmpty()) { incrementFilterStats(stats, "landgruppe"); @@ -130,13 +129,13 @@ public void reportLagradeFilter() { incrementFilterStats(stats, "foedeland"); } if (filterValg.getBarnUnder18Aar() != null && !filterValg.getBarnUnder18Aar().isEmpty()) { - incrementFilterStats(stats, "barnUnder18Aar"); + incrementFilterStats(stats, "barnunder18aar"); } if (filterValg.getTolkebehov() != null && !filterValg.getTolkebehov().isEmpty()) { incrementFilterStats(stats, "tolkbehov"); } if (filterValg.getEnsligeForsorgere() != null && !filterValg.getEnsligeForsorgere().isEmpty()) { - incrementFilterStats(stats, "ensligeForsorgere"); + incrementFilterStats(stats, "ensligeforsorgere"); } if (filterValg.getFargekategorier() != null && !filterValg.getFargekategorier().isEmpty()) { incrementFilterStats(stats, "fargekategorier");