Skip to content

Commit 2841718

Browse files
committed
Utvidet metrics
1 parent d08808e commit 2841718

File tree

4 files changed

+119
-76
lines changed

4 files changed

+119
-76
lines changed

apps/min-side-varsler/src/main/kotlin/no/nav/paw/arbeidssoekerregisteret/service/VarselService.kt

+57-42
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,26 @@ import no.nav.paw.arbeidssoekerregisteret.repository.EksterntVarselRepository
2323
import no.nav.paw.arbeidssoekerregisteret.repository.PeriodeRepository
2424
import no.nav.paw.arbeidssoekerregisteret.repository.VarselRepository
2525
import no.nav.paw.arbeidssoekerregisteret.utils.Action
26-
import no.nav.paw.arbeidssoekerregisteret.utils.action
2726
import no.nav.paw.arbeidssoekerregisteret.utils.bekreftelseHendelseCounter
27+
import no.nav.paw.arbeidssoekerregisteret.utils.deleteAction
28+
import no.nav.paw.arbeidssoekerregisteret.utils.deleteBekreftelseHendelseCounter
2829
import no.nav.paw.arbeidssoekerregisteret.utils.eventName
29-
import no.nav.paw.arbeidssoekerregisteret.utils.eventType
30-
import no.nav.paw.arbeidssoekerregisteret.utils.periodeCounter
30+
import no.nav.paw.arbeidssoekerregisteret.utils.failAction
31+
import no.nav.paw.arbeidssoekerregisteret.utils.failBekreftelseHendelseCounter
32+
import no.nav.paw.arbeidssoekerregisteret.utils.failVarselHendelseCounter
33+
import no.nav.paw.arbeidssoekerregisteret.utils.ignoreAction
34+
import no.nav.paw.arbeidssoekerregisteret.utils.ignoreBekreftelseHendelseCounter
35+
import no.nav.paw.arbeidssoekerregisteret.utils.ignorePeriodeCounter
36+
import no.nav.paw.arbeidssoekerregisteret.utils.ignoreVarselHendelseCounter
37+
import no.nav.paw.arbeidssoekerregisteret.utils.insertAction
38+
import no.nav.paw.arbeidssoekerregisteret.utils.insertBekreftelseHendelseCounter
39+
import no.nav.paw.arbeidssoekerregisteret.utils.insertPeriodeCounter
40+
import no.nav.paw.arbeidssoekerregisteret.utils.insertVarselHendelseCounter
41+
import no.nav.paw.arbeidssoekerregisteret.utils.readAction
3142
import no.nav.paw.arbeidssoekerregisteret.utils.removeAll
32-
import no.nav.paw.arbeidssoekerregisteret.utils.varselHendelseCounter
43+
import no.nav.paw.arbeidssoekerregisteret.utils.updateAction
44+
import no.nav.paw.arbeidssoekerregisteret.utils.updatePeriodeCounter
45+
import no.nav.paw.arbeidssoekerregisteret.utils.updateVarselHendelseCounter
3346
import no.nav.paw.arbeidssokerregisteret.api.v1.Periode
3447
import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelse
3548
import no.nav.paw.bekreftelse.internehendelser.BekreftelseMeldingMottatt
@@ -70,24 +83,25 @@ class VarselService(
7083
val eventName = periode.eventName
7184
try {
7285
mdc.eventName(eventName)
73-
logger.debug("Prosesserer hendelse {}", eventName)
86+
mdc.readAction()
87+
logger.info("Prosesserer hendelse {}", eventName)
7488
val periodeRow = periodeRepository.findByPeriodeId(periode.id)
7589
if (periodeRow != null) {
7690
if (periodeRow.avsluttetTimestamp != null) {
77-
mdc.action(Action.IGNORE)
91+
mdc.ignoreAction()
7892
logger.warn("Ignorerer allerede avluttet periode {}", periode.id)
79-
meterRegistry.periodeCounter(Action.IGNORE, periode)
93+
meterRegistry.ignorePeriodeCounter(periode)
8094
} else {
81-
mdc.action(Action.UPDATE)
95+
mdc.updateAction()
8296
logger.debug("Oppdaterer periode {}", periode.id)
83-
meterRegistry.periodeCounter(Action.UPDATE, periode)
97+
meterRegistry.updatePeriodeCounter(periode)
8498
val updatePeriodeRow = periode.asUpdatePeriodeRow()
8599
periodeRepository.update(updatePeriodeRow)
86100
}
87101
} else {
88-
mdc.action(Action.INSERT)
102+
mdc.insertAction()
89103
logger.debug("Oppretter periode {}", periode.id)
90-
meterRegistry.periodeCounter(Action.INSERT, periode)
104+
meterRegistry.insertPeriodeCounter(periode)
91105
val insertPeriodeRow = periode.asInsertPeriodeRow()
92106
periodeRepository.insert(insertPeriodeRow)
93107
}
@@ -96,14 +110,14 @@ class VarselService(
96110
if (applicationConfig.periodeVarslerEnabled) {
97111
val varselRow = varselRepository.findByVarselId(periode.id)
98112
if (varselRow != null) {
99-
mdc.action(Action.IGNORE)
113+
mdc.ignoreAction()
100114
logger.debug(
101115
"Varsel eksisterer allerede for avsluttet periode {}",
102116
periode.id
103117
)
104118
emptyList()
105119
} else {
106-
mdc.action(Action.INSERT)
120+
mdc.insertAction()
107121
logger.debug(
108122
"Oppretter og bestiller varsel for avsluttet periode {}",
109123
periode.id
@@ -115,7 +129,7 @@ class VarselService(
115129
listOf(varsel)
116130
}
117131
} else {
118-
mdc.action(Action.IGNORE)
132+
mdc.ignoreAction()
119133
logger.warn("Utsendelse av varsler ved avsluttet periode er deaktivert")
120134
emptyList()
121135
}
@@ -131,15 +145,15 @@ class VarselService(
131145
fun mottaBekreftelseHendelse(value: Pair<Periode?, BekreftelseHendelse?>): List<VarselMelding> = transaction {
132146
try {
133147
val (periode, hendelse) = value
134-
val eventType = hendelse.eventType
135148
val eventName = hendelse.eventName
136149
mdc.eventName(eventName)
137-
logger.debug("Prosesserer hendelse {}", eventName)
150+
mdc.readAction()
151+
logger.info("Prosesserer hendelse {}", eventName)
138152

139153
if (periode == null) {
140-
mdc.action(Action.FAIL)
154+
mdc.failAction()
141155
logger.warn("Ingen periode mottatt for hendelse {}", eventName)
142-
meterRegistry.bekreftelseHendelseCounter(Action.FAIL, eventType, eventName)
156+
meterRegistry.failBekreftelseHendelseCounter(hendelse)
143157
throw PeriodeIkkeFunnetException("Ingen periode mottatt for hendelse $eventName")
144158
}
145159

@@ -162,29 +176,29 @@ class VarselService(
162176
private fun mottaBekreftelseTilgjengelig(periode: Periode, hendelse: BekreftelseTilgjengelig): List<VarselMelding> {
163177
val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
164178
if (varselRow != null) {
165-
mdc.action(Action.IGNORE)
179+
mdc.ignoreAction()
166180
logger.warn(
167181
"Ignorerer siden varsel allerede finnes for hendelse {} og periode {}",
168182
hendelse.hendelseType,
169183
hendelse.periodeId
170184
)
171-
meterRegistry.bekreftelseHendelseCounter(Action.IGNORE, hendelse)
185+
meterRegistry.ignoreBekreftelseHendelseCounter(hendelse)
172186
return emptyList()
173187
} else {
174188
if (applicationConfig.bekreftelseVarslerEnabled) {
175-
mdc.action(Action.INSERT)
189+
mdc.insertAction()
176190
logger.debug(
177191
"Oppretter og bestiller varsel for hendelse {} og periode {}",
178192
hendelse.hendelseType,
179193
hendelse.periodeId
180194
)
181-
meterRegistry.bekreftelseHendelseCounter(Action.INSERT, hendelse)
195+
meterRegistry.insertBekreftelseHendelseCounter(hendelse)
182196
val insertVarselRow = hendelse.asInsertVarselRow()
183197
varselRepository.insert(insertVarselRow)
184198
val varsel = varselMeldingBygger.opprettBekreftelseTilgjengeligOppgave(periode, hendelse)
185199
return listOf(varsel)
186200
} else {
187-
mdc.action(Action.IGNORE)
201+
mdc.ignoreAction()
188202
logger.warn("Utsendelse av varsler ved tilgjengelig bekreftelse er deaktivert")
189203
return emptyList()
190204
}
@@ -194,23 +208,23 @@ class VarselService(
194208
private fun mottaBekreftelseMeldingMottatt(hendelse: BekreftelseMeldingMottatt): List<VarselMelding> {
195209
val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
196210
if (varselRow != null) {
197-
mdc.action(Action.DELETE)
211+
mdc.deleteAction()
198212
logger.debug(
199213
"Avslutter og sletter varsel for hendelse {} og periode {}",
200214
hendelse.hendelseType,
201215
hendelse.periodeId
202216
)
203-
meterRegistry.bekreftelseHendelseCounter(Action.DELETE, hendelse)
217+
meterRegistry.deleteBekreftelseHendelseCounter(hendelse)
204218
//varselRepository.deleteByVarselId(hendelse.bekreftelseId) TODO: Disablet sletting
205219
return listOf(varselMeldingBygger.avsluttVarsel(hendelse.bekreftelseId))
206220
} else {
207-
mdc.action(Action.FAIL)
221+
mdc.failAction()
208222
logger.warn(
209223
"Fant ingen varsel for hendelse {} og periode {}",
210224
hendelse.hendelseType,
211225
hendelse.periodeId
212226
)
213-
meterRegistry.bekreftelseHendelseCounter(Action.FAIL, hendelse)
227+
meterRegistry.failBekreftelseHendelseCounter(hendelse)
214228
return emptyList()
215229
}
216230
}
@@ -221,7 +235,7 @@ class VarselService(
221235
varselKilde = VarselKilde.BEKREFTELSE_TILGJENGELIG
222236
)
223237
if (varselRows.isEmpty()) {
224-
mdc.action(Action.FAIL)
238+
mdc.failAction()
225239
logger.warn(
226240
"Fant ingen varsler for hendelse {} og periode {}",
227241
hendelse.hendelseType,
@@ -230,7 +244,7 @@ class VarselService(
230244
meterRegistry.bekreftelseHendelseCounter(Action.FAIL, hendelse)
231245
return emptyList()
232246
} else {
233-
mdc.action(Action.DELETE)
247+
mdc.deleteAction()
234248
logger.debug(
235249
"Avlutter og sletter alle varsler for hendelse {} og periode {}",
236250
hendelse.hendelseType,
@@ -251,7 +265,7 @@ class VarselService(
251265
meterRegistry.bekreftelseHendelseCounter(Action.IGNORE, hendelse)
252266
} else {
253267
logger.debug("Ignorerer hendelse som er null")
254-
meterRegistry.bekreftelseHendelseCounter(Action.IGNORE, hendelse.eventType, hendelse.eventName)
268+
meterRegistry.bekreftelseHendelseCounter(Action.IGNORE, hendelse)
255269
}
256270
return emptyList()
257271
}
@@ -261,25 +275,26 @@ class VarselService(
261275
try {
262276
val eventName = "varsel.${hendelse.eventName.value}"
263277
mdc.eventName(eventName)
278+
mdc.readAction()
264279
logger.debug("Prosesserer hendelse {}", eventName)
265280
val varselId = UUID.fromString(hendelse.varselId)
266281
val varselRow = varselRepository.findByVarselId(varselId)
267282
if (varselRow != null) {
268283
if (hendelse.eventName == VarselEventName.EKSTERN_STATUS_OPPDATERT) {
269284
if (varselRow.eksterntVarsel != null) {
270285
if (hendelse.tidspunkt.isAfter(varselRow.eksterntVarsel.hendelseTimestamp)) {
271-
mdc.action(Action.UPDATE)
286+
mdc.updateAction()
272287
logger.debug(
273288
"Oppdaterer eksternt varsel for hendelse {} med type {} og status {}",
274289
VarselHendelse::class.java.simpleName,
275290
hendelse.varseltype,
276291
hendelse.status
277292
)
278-
meterRegistry.varselHendelseCounter(Action.UPDATE, hendelse)
293+
meterRegistry.updateVarselHendelseCounter(hendelse)
279294
val updateEksterntVarselRow = hendelse.asUpdateEksterntVarselRow()
280295
eksterntVarselRepository.update(updateEksterntVarselRow)
281296
} else {
282-
mdc.action(Action.IGNORE)
297+
mdc.ignoreAction()
283298
logger.warn(
284299
"Ignorerer hendelse {} med type {} og status {} siden hendelse {} er eldre enn lagret eksternt varsel {}",
285300
VarselHendelse::class.java.simpleName,
@@ -288,34 +303,34 @@ class VarselService(
288303
hendelse.tidspunkt,
289304
varselRow.hendelseTimestamp
290305
)
291-
meterRegistry.varselHendelseCounter(Action.IGNORE, hendelse)
306+
meterRegistry.ignoreVarselHendelseCounter(hendelse)
292307
}
293308
} else {
294-
mdc.action(Action.INSERT)
309+
mdc.insertAction()
295310
logger.debug(
296311
"Oppretter eksternt varsel for hendelse {} med type {} og status {}",
297312
VarselHendelse::class.java.simpleName,
298313
hendelse.varseltype,
299314
hendelse.status
300315
)
301-
meterRegistry.varselHendelseCounter(Action.INSERT, hendelse)
316+
meterRegistry.insertVarselHendelseCounter(hendelse)
302317
val insertEksterntVarselRow = hendelse.asInsertEksterntVarselRow()
303318
eksterntVarselRepository.insert(insertEksterntVarselRow)
304319
}
305320
} else {
306321
if (hendelse.tidspunkt.isAfter(varselRow.hendelseTimestamp)) {
307-
mdc.action(Action.UPDATE)
322+
mdc.updateAction()
308323
logger.debug(
309324
"Oppdaterer varsel for hendelse {} med type {} og status {}",
310325
VarselHendelse::class.java.simpleName,
311326
hendelse.varseltype,
312327
hendelse.status
313328
)
314-
meterRegistry.varselHendelseCounter(Action.UPDATE, hendelse)
329+
meterRegistry.updateVarselHendelseCounter(hendelse)
315330
val updateVarselRow = hendelse.asUpdateVarselRow()
316331
varselRepository.update(updateVarselRow)
317332
} else {
318-
mdc.action(Action.IGNORE)
333+
mdc.ignoreAction()
319334
logger.warn(
320335
"Ignorerer hendelse {} med type {} og status {} siden hendelse {} er eldre enn lagret varsel {}",
321336
VarselHendelse::class.java.simpleName,
@@ -324,13 +339,13 @@ class VarselService(
324339
hendelse.tidspunkt,
325340
varselRow.hendelseTimestamp
326341
)
327-
meterRegistry.varselHendelseCounter(Action.IGNORE, hendelse)
342+
meterRegistry.ignoreVarselHendelseCounter(hendelse)
328343
}
329344
}
330345
} else {
331-
mdc.action(Action.FAIL)
346+
mdc.failAction()
332347
logger.warn("Fant ikke lagret varsel for hendelse {}", VarselHendelse::class.java.simpleName)
333-
meterRegistry.varselHendelseCounter(Action.FAIL, hendelse)
348+
meterRegistry.failVarselHendelseCounter(hendelse)
334349
}
335350
} finally {
336351
mdc.removeAll()

apps/min-side-varsler/src/main/kotlin/no/nav/paw/arbeidssoekerregisteret/topology/Topology.kt

+7-17
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,26 @@ package no.nav.paw.arbeidssoekerregisteret.topology
22

33
import io.micrometer.core.instrument.MeterRegistry
44
import no.nav.paw.arbeidssoekerregisteret.config.ApplicationConfig
5-
import no.nav.paw.arbeidssoekerregisteret.model.VarselType
65
import no.nav.paw.arbeidssoekerregisteret.service.VarselService
7-
import no.nav.paw.arbeidssoekerregisteret.utils.Action
86
import no.nav.paw.arbeidssoekerregisteret.utils.Source
97
import no.nav.paw.arbeidssoekerregisteret.utils.VarselHendelseJsonSerde
10-
import no.nav.paw.arbeidssoekerregisteret.utils.bekreftelseHendelseCounter
118
import no.nav.paw.arbeidssoekerregisteret.utils.beskjedVarselCounter
129
import no.nav.paw.arbeidssoekerregisteret.utils.oppgaveVarselCounter
13-
import no.nav.paw.arbeidssoekerregisteret.utils.periodeCounter
14-
import no.nav.paw.arbeidssoekerregisteret.utils.varselCounter
15-
import no.nav.paw.arbeidssoekerregisteret.utils.varselHendelseCounter
10+
import no.nav.paw.arbeidssoekerregisteret.utils.readBekreftelseHendelseCounter
11+
import no.nav.paw.arbeidssoekerregisteret.utils.readPeriodeCounter
12+
import no.nav.paw.arbeidssoekerregisteret.utils.readVarselHendelseCounter
1613
import no.nav.paw.arbeidssokerregisteret.api.v1.Periode
1714
import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelse
1815
import no.nav.paw.bekreftelse.internehendelser.BekreftelseHendelseSerde
1916
import no.nav.paw.config.env.RuntimeEnvironment
2017
import no.nav.paw.config.env.namespaceOrDefaultForLocal
21-
import no.nav.paw.logging.logger.buildApplicationLogger
2218
import org.apache.kafka.common.serialization.Serdes
2319
import org.apache.kafka.streams.KeyValue
2420
import org.apache.kafka.streams.StreamsBuilder
2521
import org.apache.kafka.streams.kstream.Consumed
2622
import org.apache.kafka.streams.kstream.Produced
2723
import org.apache.kafka.streams.kstream.ValueJoiner
2824

29-
private val logger = buildApplicationLogger
30-
3125
fun StreamsBuilder.periodeKafkaTopology(
3226
runtimeEnvironment: RuntimeEnvironment,
3327
applicationConfig: ApplicationConfig,
@@ -36,11 +30,9 @@ fun StreamsBuilder.periodeKafkaTopology(
3630
): StreamsBuilder {
3731
with(applicationConfig) {
3832
stream<Long, Periode>(periodeTopic)
39-
.peek { _, periode -> meterRegistry.periodeCounter(Action.READ, periode) }
33+
.peek { _, periode -> meterRegistry.readPeriodeCounter(periode) }
4034
.flatMapValues { _, periode -> varselService.mottaPeriode(periode) }
41-
.peek { _, melding ->
42-
meterRegistry.beskjedVarselCounter(runtimeEnvironment, Source.KAFKA, melding)
43-
}
35+
.peek { _, melding -> meterRegistry.beskjedVarselCounter(runtimeEnvironment, Source.KAFKA, melding) }
4436
.map { _, melding -> KeyValue.pair(melding.varselId.toString(), melding.value) }
4537
.to(tmsVarselTopic, Produced.with(Serdes.String(), Serdes.String()))
4638
}
@@ -67,9 +59,7 @@ fun StreamsBuilder.bekreftelseKafkaTopology(
6759
)
6860

6961
bekreftelseStream.leftJoin(periodeTable, BekreftelseValueJoiner())
70-
.peek { _, (_, hendelse) ->
71-
if (hendelse != null) meterRegistry.bekreftelseHendelseCounter(Action.READ, hendelse)
72-
}
62+
.peek { _, (_, hendelse) -> meterRegistry.readBekreftelseHendelseCounter(hendelse) }
7363
.flatMapValues { _, value -> varselService.mottaBekreftelseHendelse(value) }
7464
.peek { _, melding -> meterRegistry.oppgaveVarselCounter(runtimeEnvironment, Source.KAFKA, melding) }
7565
.map { _, melding -> KeyValue.pair(melding.varselId.toString(), melding.value) }
@@ -87,7 +77,7 @@ fun StreamsBuilder.varselHendelserKafkaTopology(
8777
with(applicationConfig) {
8878
stream(tmsVarselHendelseTopic, Consumed.with(Serdes.String(), VarselHendelseJsonSerde()))
8979
.filter { _, hendelse -> hendelse.namespace == runtimeEnvironment.namespaceOrDefaultForLocal() }
90-
.peek { _, hendelse -> meterRegistry.varselHendelseCounter(Action.READ, hendelse) }
80+
.peek { _, hendelse -> meterRegistry.readVarselHendelseCounter(hendelse) }
9181
.foreach { _, hendelse -> varselService.mottaVarselHendelse(hendelse) }
9282
}
9383
return this

apps/min-side-varsler/src/main/kotlin/no/nav/paw/arbeidssoekerregisteret/utils/LoggingUtils.kt

+8
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ enum class MDCKey(val key: String) {
77
EVENT_NAME("x_event_name")
88
}
99

10+
fun MDCAdapter.readAction() = action(Action.READ)
11+
fun MDCAdapter.writeAction() = action(Action.WRITE)
12+
fun MDCAdapter.insertAction() = action(Action.INSERT)
13+
fun MDCAdapter.updateAction() = action(Action.UPDATE)
14+
fun MDCAdapter.deleteAction() = action(Action.DELETE)
15+
fun MDCAdapter.failAction() = action(Action.FAIL)
16+
fun MDCAdapter.ignoreAction() = action(Action.IGNORE)
17+
1018
fun MDCAdapter.action(action: Action) {
1119
put(MDCKey.ACTION.key, action.value)
1220
}

0 commit comments

Comments
 (0)