Skip to content

Commit 2bae446

Browse files
committed
Mere metrics og logging
1 parent 30e0a8b commit 2bae446

File tree

3 files changed

+147
-106
lines changed

3 files changed

+147
-106
lines changed

apps/min-side-varsler/nais/nais-dev.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ spec:
1919
memory: 256Mi
2020
env:
2121
- name: KAFKA_PERIODE_STREAM_SUFFIX
22-
value: periode-beta-v2
22+
value: periode-beta-v3
2323
- name: KAFKA_BEKREFTELSE_STREAM_SUFFIX
24-
value: bekreftelse-beta-v5
24+
value: bekreftelse-beta-v6
2525
- name: KAFKA_VARSEL_HENDELSE_STREAM_SUFFIX
2626
value: varsel-hendelser-beta-v1
2727
- name: KAFKA_PAW_ARBEIDSOKERPERIODE_TOPIC

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

+131-102
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import no.nav.paw.bekreftelse.internehendelser.BekreftelseTilgjengelig
2121
import no.nav.paw.bekreftelse.internehendelser.PeriodeAvsluttet
2222
import no.nav.paw.logging.logger.buildLogger
2323
import org.jetbrains.exposed.sql.transactions.transaction
24+
import org.slf4j.MDC
2425
import java.util.*
2526

2627
class VarselService(
@@ -32,136 +33,164 @@ class VarselService(
3233
private val logger = buildLogger
3334

3435
fun mottaPeriode(periode: Periode) = transaction {
35-
val periodeRow = periodeRepository.findByPeriodeId(periode.id)
36-
if (periodeRow != null) {
37-
logger.warn("Oppdaterer innslag for periode {}", periode.id)
38-
meterRegistry.periodeCounter("update", periode)
39-
val updatePeriodeRow = periode.asUpdatePeriodeRow()
40-
periodeRepository.update(updatePeriodeRow)
41-
} else {
42-
logger.debug("Oppretter innslag for periode {}", periode.id)
43-
meterRegistry.periodeCounter("insert", periode)
44-
val insertPeriodeRow = periode.asInsertPeriodeRow()
45-
periodeRepository.insert(insertPeriodeRow)
36+
try {
37+
MDC.put("x_event_name", if (periode.avsluttet == null) "periode.startet" else "periode.avsluttet")
38+
val periodeRow = periodeRepository.findByPeriodeId(periode.id)
39+
if (periodeRow != null) {
40+
logger.debug("Oppdaterer periode {}", periode.id)
41+
meterRegistry.periodeCounter("update", periode)
42+
val updatePeriodeRow = periode.asUpdatePeriodeRow()
43+
periodeRepository.update(updatePeriodeRow)
44+
} else {
45+
logger.debug("Oppretter periode {}", periode.id)
46+
meterRegistry.periodeCounter("insert", periode)
47+
val insertPeriodeRow = periode.asInsertPeriodeRow()
48+
periodeRepository.insert(insertPeriodeRow)
49+
}
50+
} finally {
51+
MDC.remove("x_event_name")
4652
}
4753
}
4854

4955
fun mottaBekreftelseHendelse(value: Pair<Periode?, BekreftelseHendelse?>): List<OppgaveMelding> = transaction {
50-
val (periode, hendelse) = value
51-
when (hendelse) {
52-
is BekreftelseTilgjengelig -> {
53-
if (periode != null) {
56+
try {
57+
val (periode, hendelse) = value
58+
MDC.put("x_event_name", hendelse?.hendelseType ?: "null")
59+
60+
when (hendelse) {
61+
is BekreftelseTilgjengelig -> {
62+
if (periode != null) {
63+
val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
64+
if (varselRow != null) {
65+
logger.warn(
66+
"Ignorerer siden varsel allerede finnes for hendelse {} og periode {}",
67+
hendelse.hendelseType,
68+
hendelse.periodeId
69+
)
70+
meterRegistry.bekreftelseHendelseCounter("ignore", hendelse)
71+
emptyList()
72+
} else {
73+
logger.debug(
74+
"Bestiller og oppretter varsel for hendelse {} og periode {}",
75+
hendelse.hendelseType,
76+
hendelse.periodeId
77+
)
78+
meterRegistry.bekreftelseHendelseCounter("insert", hendelse)
79+
val insertVarselRow = hendelse.asInsertVarselRow(
80+
varselKilde = VarselKilde.BEKREFTELSE_TILGJENGELIG,
81+
varselType = VarselType.OPPGAVE,
82+
)
83+
varselRepository.insert(insertVarselRow)
84+
85+
listOf(
86+
varselMeldingBygger.opprettOppgave(
87+
periode.identitetsnummer,
88+
hendelse.bekreftelseId,
89+
hendelse.gjelderTil
90+
)
91+
)
92+
}
93+
} else {
94+
logger.warn(
95+
"Ingen periode mottatt for hendelse {} med periode {}",
96+
hendelse.hendelseType,
97+
hendelse.periodeId
98+
)
99+
meterRegistry.bekreftelseHendelseCounter("fail", hendelse)
100+
emptyList()
101+
}
102+
}
103+
104+
is BekreftelseMeldingMottatt -> {
54105
val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
55106
if (varselRow != null) {
107+
logger.debug(
108+
"Avslutter og sletter varsel for hendelse {} og periode {}",
109+
hendelse.hendelseType,
110+
hendelse.periodeId
111+
)
112+
meterRegistry.bekreftelseHendelseCounter("delete", hendelse)
113+
varselRepository.deleteByVarselId(hendelse.bekreftelseId)
114+
listOf(varselMeldingBygger.avsluttOppgave(hendelse.bekreftelseId))
115+
} else {
56116
logger.warn(
57-
"Ignorerer hendelse {} siden varsel allerede finnes",
58-
hendelse.hendelseType
117+
"Fant ingen varsel for hendelse {} og periode {}",
118+
hendelse.hendelseType,
119+
hendelse.periodeId
59120
)
60-
meterRegistry.bekreftelseHendelseCounter("ignore", hendelse)
121+
meterRegistry.bekreftelseHendelseCounter("fail", hendelse)
122+
emptyList()
123+
}
124+
}
125+
126+
is PeriodeAvsluttet -> {
127+
val varselRows = varselRepository.findByPeriodeId(hendelse.periodeId)
128+
if (varselRows.isEmpty()) {
129+
logger.warn(
130+
"Fant ingen varsler for hendelse {} og periode {}",
131+
hendelse.hendelseType,
132+
hendelse.periodeId
133+
)
134+
meterRegistry.bekreftelseHendelseCounter("fail", hendelse)
61135
emptyList()
62136
} else {
63137
logger.debug(
64-
"Bestiller og oppretter varsel for hendelse {} og periode {}",
138+
"Avlutter og sletter alle varsler for hendelse {} og periode {}",
65139
hendelse.hendelseType,
66140
hendelse.periodeId
67141
)
68-
meterRegistry.bekreftelseHendelseCounter("insert", hendelse)
69-
val insertVarselRow = hendelse.asInsertVarselRow(
70-
varselKilde = VarselKilde.BEKREFTELSE_TILGJENGELIG,
71-
varselType = VarselType.OPPGAVE,
72-
)
73-
varselRepository.insert(insertVarselRow)
142+
meterRegistry.bekreftelseHendelseCounter("delete", hendelse)
143+
varselRepository.deleteByPeriodeId(hendelse.periodeId)
144+
varselRows.map { varselMeldingBygger.avsluttOppgave(it.varselId) }
145+
}
146+
}
74147

75-
listOf(
76-
varselMeldingBygger.opprettOppgave(
77-
periode.identitetsnummer,
78-
hendelse.bekreftelseId,
79-
hendelse.gjelderTil
80-
)
81-
)
148+
else -> {
149+
if (hendelse != null) {
150+
logger.debug("Ignorerer hendelse {}", hendelse.hendelseType)
151+
meterRegistry.bekreftelseHendelseCounter("ignore", hendelse)
152+
} else {
153+
logger.debug("Ignorerer hendelse som er null")
154+
meterRegistry.bekreftelseHendelseCounter("ignore", "null", "bekreftelse.null")
82155
}
83-
} else {
84-
logger.warn(
85-
"Ingen periode mottatt for hendelse {} med periode {}",
86-
hendelse.hendelseType,
87-
hendelse.periodeId
88-
)
89-
meterRegistry.bekreftelseHendelseCounter("fail", hendelse)
90156
emptyList()
91157
}
92158
}
159+
} finally {
160+
MDC.remove("x_event_name")
161+
}
162+
}
163+
164+
fun mottaVarselHendelse(hendelse: VarselHendelse) = transaction {
165+
try {
166+
MDC.put("x_event_name", "varsel.${hendelse.eventName.value}")
93167

94-
is BekreftelseMeldingMottatt -> {
95-
val varselRow = varselRepository.findByVarselId(hendelse.bekreftelseId)
96-
if (varselRow != null) {
168+
val varselRow = varselRepository.findByVarselId(UUID.fromString(hendelse.varselId))
169+
if (varselRow != null) {
170+
if (varselRow.hendelseTimestamp.isBefore(hendelse.tidspunkt)) {
97171
logger.debug(
98-
"Avslutter og sletter varsel for varsel for hendelse {}",
99-
hendelse.hendelseType
172+
"Oppdaterer varsel for hendelse {} med type {} og status {}",
173+
VarselHendelse::class.java.simpleName,
174+
hendelse.varseltype,
175+
hendelse.status
100176
)
101-
meterRegistry.bekreftelseHendelseCounter("delete", hendelse)
102-
varselRepository.deleteByVarselId(hendelse.bekreftelseId)
103-
listOf(varselMeldingBygger.avsluttOppgave(hendelse.bekreftelseId))
177+
val updateVarselRow = hendelse.asUpdateVarselRow()
178+
varselRepository.update(updateVarselRow)
104179
} else {
105-
logger.warn("Fant ingen varsel for hendelse {}", hendelse.hendelseType)
106-
meterRegistry.bekreftelseHendelseCounter("fail", hendelse)
107-
emptyList()
108-
}
109-
}
110-
111-
is PeriodeAvsluttet -> {
112-
val varselRows = varselRepository.findByPeriodeId(hendelse.periodeId)
113-
if (varselRows.isEmpty()) {
114180
logger.warn(
115-
"Fant ingen varsler for hendelse {} og periode {}",
116-
hendelse.hendelseType,
117-
hendelse.periodeId
118-
)
119-
emptyList()
120-
} else {
121-
logger.debug(
122-
"Avlutter og sletter alle varsler for hendelse {} og periode {}",
123-
hendelse.hendelseType,
124-
hendelse.periodeId
181+
"Ignorerer hendelse {} med type {} og status {} siden lagret varsel {} er nyere enn hendelse {}",
182+
VarselHendelse::class.java.simpleName,
183+
hendelse.varseltype,
184+
hendelse.status,
185+
varselRow.hendelseTimestamp,
186+
hendelse.tidspunkt
125187
)
126-
varselRepository.deleteByPeriodeId(hendelse.periodeId)
127-
varselRows.map { varselMeldingBygger.avsluttOppgave(it.varselId) }
128188
}
129-
}
130-
131-
else -> {
132-
if (hendelse != null) {
133-
logger.debug("Ignorerer hendelse {}", hendelse.hendelseType)
134-
meterRegistry.bekreftelseHendelseCounter("ignore", hendelse)
135-
}
136-
emptyList()
137-
}
138-
}
139-
}
140-
141-
fun mottaVarselHendelse(hendelse: VarselHendelse) = transaction {
142-
val varselRow = varselRepository.findByVarselId(UUID.fromString(hendelse.varselId))
143-
if (varselRow != null) {
144-
if (varselRow.hendelseTimestamp.isBefore(hendelse.tidspunkt)) {
145-
logger.debug(
146-
"Oppdaterer varsel for hendelse {} med type {} og status {}",
147-
VarselHendelse::class.java.simpleName,
148-
hendelse.varseltype,
149-
hendelse.status
150-
)
151-
val updateVarselRow = hendelse.asUpdateVarselRow()
152-
varselRepository.update(updateVarselRow)
153189
} else {
154-
logger.warn(
155-
"Ignorerer hendelse {} med type {} og status {} siden lagret varsel {} er nyere enn hendelse {}",
156-
VarselHendelse::class.java.simpleName,
157-
hendelse.varseltype,
158-
hendelse.status,
159-
varselRow.hendelseTimestamp,
160-
hendelse.tidspunkt
161-
)
190+
logger.warn("Fant ikke lagret varsel for hendelse {}", VarselHendelse::class.java.simpleName)
162191
}
163-
} else {
164-
logger.warn("Fant ikke lagret varsel for hendelse {}", VarselHendelse::class.java.simpleName)
192+
} finally {
193+
MDC.remove("x_event_name")
165194
}
166195
}
167196
}

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

+14-2
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,26 @@ fun MeterRegistry.periodeCounter(
3333
fun MeterRegistry.bekreftelseHendelseCounter(
3434
action: String,
3535
hendelse: BekreftelseHendelse
36+
) {
37+
bekreftelseHendelseCounter(
38+
action = action,
39+
eventType = hendelse::class.java.name,
40+
eventName = hendelse.hendelseType
41+
)
42+
}
43+
44+
fun MeterRegistry.bekreftelseHendelseCounter(
45+
action: String,
46+
eventType: String,
47+
eventName: String
3648
) {
3749
kafkaCounter(
3850
type = "bekreftelse",
3951
action = action,
4052
target = "database",
4153
eventTopic = "paw.arbeidssoker-bekreftelse-hendelseslogg-v1",
42-
eventType = hendelse::class.java.name,
43-
eventName = hendelse.hendelseType
54+
eventType = eventType,
55+
eventName = eventName
4456
)
4557
}
4658

0 commit comments

Comments
 (0)