Page History
| Navitabs | ||||
|---|---|---|---|---|
| ||||
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") } |