Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootCpr Indlæser - Leverancebeskrivelse
includeroottrue


Indledning

Nærværende dokument udgør driftsvejledningen for Cprindlæseren. Cprindlæseren er en stamdataindlæser som vedligeholder data fra CPR-kontoret.

Cprindlæseren er en webapplikation der deployer på en Wildfly applikationsserver.

Distributionen af Cprindlæseren foregår som et Docker image der er bygget på NSP platform Docker imaget (registry.nspop.dk/platform/nsp)

Monitoreringssnitflader

Alle Lpr3indlæsere overvåges via en simpel statusservice. (Se evt. https://www.nspop.dk/display/public/web/Husregler+for+udvikling+til+NSP#HusreglerforudviklingtilNSP-Snitfladetilmonitorering(gl4.4)).

Denne statusservice bliver overvåget ved at den polles hver 10. sekund for en ny status (200 ok og 500 fejl pr default HTTP). Ved 500 er det tegn på, at en supporter skal igang med at kigge på problemet.

Statusservicen giver udslag i følgende situationer, som vil sætte support igang

  • En filsæt validering fejler - dvs. at den senest modtagne fil er afvist som helhed
  • En Lpr3event-validering fejler - dvs. at enkelte Lpr3events i en modtagen fil ikke opfylder validitets-regler.
    Hvis en Lpr3event er fejlet i et load, så vil fejl markeringen først blive fjernet når der er modtaget et nyt load hvor den pågældende Lpr3event er indlæst med succes.
  • Afhængighedsproblemer (fx. ingen forbindelse til databasen eller SFTP server)
  • Der er gået uforholdsmæssigt lang tid siden vi har fået sidste fil (kan konfigureres)

Generelle overvågningssnitflader

Ingen - ud over den beskrevne statusservice.

Service snitflader

Ingen - de data der indlæses i registret via Cprindlæseren stilles til rådighed via SKRS, men Cprindlæseren selv udstiller ikke nogen services.


Hvordan agerer Cprindlæseren

Cprindlæseren poller en SFTP server for nye filer uden nogen bestemt extension, og når der dukker en fil op, hentes den ind til Cprindlæseren og slettes fra SFTP serveren.

Den modtagne fil tjekkes for om filnavnet opfylder et bestemt mønster. Desuden tjekkes format og konsistens og derefter påbegyndes indlæsningen af de data der findes i den modtagne fil.

Cprindlæseren vil indlæse så meget som muligt af de modtagne data, mens data som det ikke er muligt at indlæse logges til fejlbehandling.

Data indlæses både som enkeltstående rækker i Cpr registerdatabasen og som Cprevents, hvor den enkelte event samler en Person med dens relaterede entiteter, i en event tabel.

Efter endt håndtering vil data, enten som enkeltrækker eller som events kunne hentes via SKRS grænsefladen.

Håndtering af fejlsituationer

Når statusservicen svarer med en http 500 skal der igangsættes support til hhv.

  • Afklaring af fejl på database eller SFTP forbindelse og efterfølgende re-etablering
  • Ved fejl i filsæt validering og manglende eller for afvigende filsæt, skal der tages kontakt til Praksys, som leverer filsættet for at afklare fejlen og bede dem om at igangsætte handlinger, der retter fejlen.

Beskrivelse af logs

Cprindlæseren skriver til 4 forskellige log filer, der alle er placeret lokalt i Docker containeren i Wildfly standard log folderen: /pack/wildfly8/standalone/log 

NSP SLA log

Denne log ligger i filen nsputil-sla.log og indeholder NSP SLA logninger på formen


Code Block
16-02-2021 20:08:32,091 [Camel (camel-1) thread #1 - AggregateTimeoutChecker] INFO  dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2021-02-16 20:08:30.412" EndTime="2021-02-16 20:08:32.091" Duration="1678520 microseconds" MessageId="985fbbb7-b1f2-412d-9663-a8ca05d6ac87" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet completed" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","D100321.L431101") }
16-02-2021 20:08:36,023 [Camel (camel-1) thread #3 - sftp://foo@cprsftp:22/praksys] INFO  dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2021-02-16 20:08:36.023" EndTime="2021-02-16 20:08:36.023" Duration="5 microseconds" MessageId="a143da18-8e5e-4b72-8140-cf1797ce946b" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet fetched" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","D100325.L431101") }
16-02-2021 20:08:36,179 [Camel (camel-1) thread #4 - file:///tmp/cpr/input] INFO  dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2021-02-16 20:08:36.023" EndTime="2021-02-16 20:08:36.023" Duration="5 microseconds" MessageId="54715aa1-4d34-4805-be60-70ba79abef6c" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet received" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","D100325.L431101") }
16-02-2021 20:08:37,118 [Camel (camel-1) thread #1 - AggregateTimeoutChecker] INFO  dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2021-02-16 20:08:36.023" EndTime="2021-02-16 20:08:37.118" Duration="1095289 microseconds" MessageId="54715aa1-4d34-4805-be60-70ba79abef6c" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet completed" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","D100325.L431101") }