Skip to content

Commit c4eb8d7

Browse files
committed
La til telemetri
1 parent 7118501 commit c4eb8d7

File tree

4 files changed

+49
-13
lines changed

4 files changed

+49
-13
lines changed

Diff for: jobs/arbeidssoekere-synk-jobb/build.gradle.kts

+4
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ dependencies {
2727
implementation(libs.jackson.datatypeJsr310)
2828
implementation(libs.jackson.dataformat.csv)
2929

30+
// Instrumentation
31+
implementation(libs.opentelemetry.api)
32+
implementation(libs.opentelemetry.annotations)
33+
3034
// Database
3135
implementation(libs.exposed.jdbc)
3236
implementation(libs.exposed.javaTime)

Diff for: jobs/arbeidssoekere-synk-jobb/nais/nais-dev.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ spec:
1313
memory: 256Mi
1414
secureLogs:
1515
enabled: true
16+
observability:
17+
autoInstrumentation:
18+
enabled: true
19+
runtime: java
20+
azure:
21+
application:
22+
enabled: true
1623
filesFrom:
1724
- secret: paw-arbeidssoekere-synk-jobb-csv
1825
mountPath: /var/run/secrets/paw-arbeidssoekere-synk-jobb-csv

Diff for: jobs/arbeidssoekere-synk-jobb/src/main/kotlin/no/nav/paw/arbeidssoeker/synk/service/ArbeidssoekerSynkService.kt

+6-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package no.nav.paw.arbeidssoeker.synk.service
22

3-
import io.ktor.http.isSuccess
3+
import io.opentelemetry.instrumentation.annotations.WithSpan
44
import no.nav.paw.arbeidssoeker.synk.consumer.InngangHttpConsumer
55
import no.nav.paw.arbeidssoeker.synk.model.VersjonertArbeidssoeker
66
import no.nav.paw.arbeidssoeker.synk.model.asOpprettPeriodeRequest
@@ -9,6 +9,7 @@ import no.nav.paw.arbeidssoeker.synk.model.isNotSuccess
99
import no.nav.paw.arbeidssoeker.synk.model.millisSince
1010
import no.nav.paw.arbeidssoeker.synk.repository.ArbeidssoekerSynkRepository
1111
import no.nav.paw.arbeidssoeker.synk.utils.ArbeidssoekerCsvReader
12+
import no.nav.paw.arbeidssoeker.synk.utils.traceAndLog
1213
import no.nav.paw.logging.logger.buildApplicationLogger
1314
import no.nav.paw.logging.logger.buildNamedLogger
1415
import java.nio.file.Path
@@ -22,6 +23,7 @@ class ArbeidssoekerSynkService(
2223
private val logger = buildApplicationLogger
2324
private val secureLogger = buildNamedLogger("secure")
2425

26+
@WithSpan(value = "synkArbeidssoekere")
2527
fun synkArbeidssoekere(path: Path) {
2628
var totalCount = 0
2729
val timestamp = Instant.now()
@@ -39,6 +41,7 @@ class ArbeidssoekerSynkService(
3941
logger.info("Fullførte prosessering av {} linjer CSV-data på {} ms", totalCount, timestamp.millisSince())
4042
}
4143

44+
@WithSpan(value = "prosesserArbeidssoeker")
4245
@Suppress("LoggingSimilarMessage")
4346
private fun prosesserArbeidssoeker(arbeidssoeker: VersjonertArbeidssoeker) {
4447
val (version, identitetsnummer) = arbeidssoeker
@@ -50,25 +53,15 @@ class ArbeidssoekerSynkService(
5053
logger.debug("Fant ingen status i databasen for version {}", version)
5154
logger.debug("Kaller API Inngang for opprettelse av periode")
5255
val response = inngangHttpConsumer.opprettPeriode(arbeidssoeker.asOpprettPeriodeRequest())
53-
if (response.status.isSuccess()) {
54-
logger.debug("Opprettelse av periode fullførte OK")
55-
} else {
56-
// TODO: Vurdere å ha en feilteller, og så avbryte om det blir for mange feil
57-
logger.debug("Opprettelse av periode feilet med status {}", response.status.value)
58-
}
56+
logger.traceAndLog(response.status)
5957

6058
logger.debug("Oppretter status {} i databasen for version {}", response.status.value, version)
6159
arbeidssoekerSynkRepository.insert(version, identitetsnummer, response.status.value)
6260
} else if (row.status.isNotSuccess()) {
6361
logger.debug("Fant feilet status {} i databasen for version {}", row.status, version)
6462
logger.debug("Utfører opprettelse av periode i registeret")
6563
val response = inngangHttpConsumer.opprettPeriode(arbeidssoeker.asOpprettPeriodeRequest())
66-
if (response.status.isSuccess()) {
67-
logger.debug("Opprettelse av periode i registeret fullførte OK")
68-
} else {
69-
// TODO: Vurdere å ha en feilteller, og så avbryte om det blir for mange feil
70-
logger.debug("Opprettelse av periode i registeret feilet med status {}", response.status.value)
71-
}
64+
logger.traceAndLog(response.status)
7265

7366
logger.debug("Oppdaterer status {} i databasen for version {}", response.status.value, version)
7467
arbeidssoekerSynkRepository.update(version, identitetsnummer, response.status.value)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package no.nav.paw.arbeidssoeker.synk.utils
2+
3+
import io.ktor.http.HttpStatusCode
4+
import io.ktor.http.isSuccess
5+
import io.opentelemetry.api.common.Attributes
6+
import io.opentelemetry.api.trace.Span
7+
import io.opentelemetry.api.trace.StatusCode
8+
import org.slf4j.Logger
9+
10+
private fun attributes(status: HttpStatusCode): Attributes = Attributes.builder()
11+
.put("domain", "perioder")
12+
.put("action", "write")
13+
.put("status", status.value.toString())
14+
.build()
15+
16+
fun Logger.traceAndLog(status: HttpStatusCode) {
17+
with(Span.current()) {
18+
val attributes = attributes(status)
19+
if (status.isSuccess()) {
20+
setAllAttributes(attributes)
21+
addEvent("ok", attributes)
22+
setStatus(StatusCode.OK)
23+
debug("Opprettelse av periode fullførte OK")
24+
} else {
25+
// TODO: Vurdere å ha en feilteller, og så avbryte om det blir for mange feil
26+
setAllAttributes(attributes)
27+
addEvent("error", attributes)
28+
setStatus(StatusCode.ERROR, status.toString())
29+
debug("Opprettelse av periode feilet med status {}", status.value)
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)