From f013b49f6e2b0f9e4062e11d667ebe5df0c950e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Str=C3=B8m?= Date: Tue, 14 May 2024 14:37:11 +0200 Subject: [PATCH] =?UTF-8?q?Muligheter=20til=20=C3=A5=20ekskludere=20endepu?= =?UTF-8?q?nkter=20i=20metrikker=20i=20config=20og=20rename=20av=20configv?= =?UTF-8?q?erdi=20(#802)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TellAPIEndepunkterIBrukInitialiserer.kt | 6 +++--- .../TellAPIEndepunkterIBrukInterceptor.kt | 8 ++++---- .../TellAPIEndpunkterIBrukWebConfig.kt | 2 +- .../metrikker/TellAPIEndepunkterIBrukTest.kt | 18 +++++++++++++++--- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInitialiserer.kt b/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInitialiserer.kt index 43457f15..b9bd789b 100644 --- a/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInitialiserer.kt +++ b/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInitialiserer.kt @@ -12,11 +12,11 @@ import org.springframework.web.servlet.mvc.method.RequestMappingInfo import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping @Component -@ConditionalOnProperty("familie.tellAPIEndepunkterIBruk") +@ConditionalOnProperty("familie.tellAPIEndepunkterIBruk.enabled") class TellAPIEndepunkterIBrukInitialiserer( @Value("\${NAIS_APP_NAME}") private val applicationName: String, private val applicationContext: ApplicationContext, - @Value("\${familie.tellAPIEndepunkterIBruk.paths:/api}") private val pathStartWidth: List, + @Value("\${familie.tellAPIEndepunkterIBruk.ekskluder:/internal}") private val ekskludertePaths: List, ) { init { metrikker.clear() @@ -31,7 +31,7 @@ class TellAPIEndepunkterIBrukInitialiserer( requestMappings.forEach { (info, handler) -> info.patternValues.forEach { path -> - if (pathStartWidth.any { path.startsWith(it) }) { + if (ekskludertePaths.none { path.startsWith(it) }) { val metrikknavn = "$applicationName.${info.methodsCondition}$path".tilMetrikknavn() val key = "${info.methodsCondition}$path" metrikker.put( diff --git a/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInterceptor.kt b/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInterceptor.kt index 97554e2c..d203f130 100644 --- a/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInterceptor.kt +++ b/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukInterceptor.kt @@ -8,15 +8,15 @@ import org.springframework.web.servlet.AsyncHandlerInterceptor import org.springframework.web.servlet.HandlerMapping /** - * Sett property familie.tellAPIEndepunkterIBruk: true i application.yaml for å skru + * Sett property familie.tellAPIEndepunkterIBruk.enabled: true i application.yaml for å skru * på metrikker for hvor mange ganger et endepunkt har blitt kalt * - * For å konfigurere andre endepunkter enn de som starter på /api så kan man bruke - * familie.tellAPIEndepunkterIBruk.paths: /foo,/bar + * For å ekskludere endepunkter så kan man bruke + * familie.tellAPIEndepunkterIBruk.ekskluder: /foo,/bar * */ @Component -@ConditionalOnProperty("familie.tellAPIEndepunkterIBruk") +@ConditionalOnProperty("familie.tellAPIEndepunkterIBruk.enabled") class TellAPIEndepunkterIBrukInterceptor : AsyncHandlerInterceptor { override fun preHandle( request: HttpServletRequest, diff --git a/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndpunkterIBrukWebConfig.kt b/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndpunkterIBrukWebConfig.kt index e8b6d1b4..6a00d3be 100644 --- a/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndpunkterIBrukWebConfig.kt +++ b/metrikker/src/main/java/no/nav/familie/metrikker/TellAPIEndpunkterIBrukWebConfig.kt @@ -6,7 +6,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry import org.springframework.web.servlet.config.annotation.WebMvcConfigurer @Configuration -@ConditionalOnProperty("familie.tellAPIEndepunkterIBruk") +@ConditionalOnProperty("familie.tellAPIEndepunkterIBruk.enabled") open class TellAPIEndpunkterIBrukWebConfig : WebMvcConfigurer { override fun addInterceptors(registry: InterceptorRegistry) { registry.addInterceptor(TellAPIEndepunkterIBrukInterceptor()).addPathPatterns("/api/**") diff --git a/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt b/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt index 94278cd9..891a5df4 100644 --- a/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt +++ b/metrikker/src/test/java/no/nav/familie/metrikker/TellAPIEndepunkterIBrukTest.kt @@ -26,7 +26,11 @@ class TellAPIEndepunkterIBrukTest { fun `skal opprette map med key og counter når det finnes en requestmapping`() { settOppTestData("/api/foo", RequestMethod.GET) - TellAPIEndepunkterIBrukInitialiserer("test", applicationContext, listOf("/api")).populerMapMedCountersForRestEndepunkt() + TellAPIEndepunkterIBrukInitialiserer( + "test", + applicationContext, + listOf("/internal"), + ).populerMapMedCountersForRestEndepunkt() assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter).hasSize(1) assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter.containsKey("[GET]/api/foo")).isTrue() @@ -39,7 +43,11 @@ class TellAPIEndepunkterIBrukTest { fun `skal opprette map med key og counter når det finnes en requestmapping med pathParam og navnet på counteren saneres`() { settOppTestData("/api/foo/{fooId}", RequestMethod.POST) - TellAPIEndepunkterIBrukInitialiserer("test", applicationContext, listOf("/api")).populerMapMedCountersForRestEndepunkt() + TellAPIEndepunkterIBrukInitialiserer( + "test", + applicationContext, + listOf("/internal"), + ).populerMapMedCountersForRestEndepunkt() assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter).hasSize(1) assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter.containsKey("[POST]/api/foo/{fooId}")).isTrue() @@ -52,7 +60,11 @@ class TellAPIEndepunkterIBrukTest { fun `skal ikke opprette map med counter for annet enn pathparam som starter med api`() { settOppTestData("/internal/foobar", RequestMethod.POST) - TellAPIEndepunkterIBrukInitialiserer("test", applicationContext, listOf("/api")).populerMapMedCountersForRestEndepunkt() + TellAPIEndepunkterIBrukInitialiserer( + "test", + applicationContext, + listOf("/internal"), + ).populerMapMedCountersForRestEndepunkt() assertThat(TellAPIEndepunkterIBrukInitialiserer.metrikkerForEndepunkter).hasSize(0) }