diff --git a/build.gradle b/build.gradle index f80ae2b..1804db3 100644 --- a/build.gradle +++ b/build.gradle @@ -60,6 +60,7 @@ dependencies { implementation 'no.fintlabs:fint-kafka:2.3.0' compileOnly 'org.projectlombok:lombok' + implementation 'io.micrometer:micrometer-core' runtimeOnly 'io.micrometer:micrometer-registry-prometheus' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' annotationProcessor 'org.projectlombok:lombok' diff --git a/kustomize/base/flais.yaml b/kustomize/base/flais.yaml index b688513..a5f255a 100644 --- a/kustomize/base/flais.yaml +++ b/kustomize/base/flais.yaml @@ -21,4 +21,8 @@ spec: requests: memory: 512Mi cpu: 250m + prometheus: + enabled: true + port: '8080' + path: /actuator/prometheus diff --git a/src/main/java/no/fintlabs/portal/model/client/CreateClientHandler.java b/src/main/java/no/fintlabs/portal/model/client/CreateClientHandler.java index 7c76141..7ab1b2d 100644 --- a/src/main/java/no/fintlabs/portal/model/client/CreateClientHandler.java +++ b/src/main/java/no/fintlabs/portal/model/client/CreateClientHandler.java @@ -8,6 +8,7 @@ import no.fintlabs.portal.model.component.Component; import no.fintlabs.portal.model.component.ComponentService; import no.fintlabs.portal.model.organisation.Organisation; +import no.fintlabs.portal.utilities.MetricService; import org.apache.kafka.clients.consumer.ConsumerRecord; @Slf4j @@ -19,13 +20,16 @@ public class CreateClientHandler extends FintCustomerObjectWithSecretsHandler consumerRecord, Organisation organisation) { Client client = getOrCreateClient(consumerRecord, organisation); send(client); + metricService.registerClientCreate(); return client; } diff --git a/src/main/java/no/fintlabs/portal/model/client/DeleteClientHandler.java b/src/main/java/no/fintlabs/portal/model/client/DeleteClientHandler.java index 3f23c3a..7ab59b8 100644 --- a/src/main/java/no/fintlabs/portal/model/client/DeleteClientHandler.java +++ b/src/main/java/no/fintlabs/portal/model/client/DeleteClientHandler.java @@ -6,16 +6,19 @@ import no.fintlabs.portal.model.FintCustomerObjectEvent; import no.fintlabs.portal.model.FintCustomerObjectWithSecretsHandler; import no.fintlabs.portal.model.organisation.Organisation; +import no.fintlabs.portal.utilities.MetricService; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.stereotype.Component; @Slf4j @Component public class DeleteClientHandler extends FintCustomerObjectWithSecretsHandler { + private final MetricService metricService; protected DeleteClientHandler(EntityTopicService entityTopicService, EntityProducerFactory entityProducerFactory, - ClientService clientService) { + ClientService clientService, MetricService metricService) { super(entityTopicService, entityProducerFactory, Client.class, clientService); + this.metricService = metricService; } @Override @@ -31,6 +34,7 @@ public Client apply(ConsumerRecord consumerRecord, Organisa .orElseThrow(() -> new RuntimeException("Unable to find client with dn: " + consumerRecord.value().getObject().getDn())); sendDelete(client.getDn()); + metricService.registerClientDelete(); return client; } diff --git a/src/main/java/no/fintlabs/portal/utilities/MetricService.java b/src/main/java/no/fintlabs/portal/utilities/MetricService.java new file mode 100644 index 0000000..a70fbd7 --- /dev/null +++ b/src/main/java/no/fintlabs/portal/utilities/MetricService.java @@ -0,0 +1,29 @@ +package no.fintlabs.portal.utilities; + + +import io.micrometer.core.instrument.Counter; +import io.micrometer.core.instrument.MeterRegistry; +import org.springframework.stereotype.Service; + +@Service +public class MetricService { + + private final MeterRegistry meterRegistry; + private final Counter clientCreateCounter; + private final Counter clientDeleteCounter; + + public MetricService(MeterRegistry meterRegistry) { + this.meterRegistry = meterRegistry; + + clientCreateCounter = Counter.builder("fint.cog.client.create").register(meterRegistry); + clientDeleteCounter = Counter.builder("fint.cog.client.delete").register(meterRegistry); + } + + public void registerClientCreate() { + clientCreateCounter.increment(); + } + + public void registerClientDelete() { + clientDeleteCounter.increment(); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 1578171..a809ba4 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -18,6 +18,12 @@ spring: include: - db +management: + endpoints: + web: + exposure: + include: prometheus, health + logging: level: org.apache.kafka: WARN