Indledning
Nærværende dokument udgør driftsvejledningen for Lpr3indlæseren. Lpr3indlæseren er en stamdataindlæser som vedligeholder data fra Landspatientregisteret.
Lpr3indlæseren er en webapplikation der deployer på en Wildfly applikationsserver.
Distributionen af Lpr3indlæseren foregår som et Docker image der er bygget på NSP platform Docker imaget (registry.nspop.dk/platform/nsp
)
Placering af filer
Tabel over datafilens placering i forhold til de servere og komponenter der findes på siden LPR 3 Indlæser - Design- og Arkitekturbeskrivelse:
Fase | Directory | Bemærkning |
---|---|---|
Input | <path_to_input_files>:/tmp/lpr3/input | Datafiler der skal indlæses skal placeres her. |
backup | <path_to_backup_files>:/tmp/lpr3/input/.done | Efter datafilen er blevet indlæst placeres den her. |
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 Lpr3indlæseren stilles til rådighed i Lpr3 registerdatabasen . Lpr3indlæseren selv udstiller ikke nogen services.
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 tilsæt validering og manglende eller for afvigende tilsæt, skal der i første omgang tages kontakt til SDS der ejer LPR3 og evt. bagefter til DXC som leverer filsættet for at afklare fejlen og bede dem om at igangsætte handlinger der retter fejlen.
Beskrivelse af logs
Lpr3indlæ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
24-10-2020 10:14:40,540 [Camel (camel-1) thread #2 - sftp://foo@lpr3sftp:22/dxc] INFO dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2020-10-24 10:14:40.539" EndTime="2020-10-24 10:14:40.539" Duration="74 microseconds" MessageId="0169ab8a-5371-4b40-bd64-c8a9fce0b54e" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet fetched" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","BR_190520111525.csv") } 24-10-2020 10:14:40,761 [Camel (camel-1) thread #3 - file:///tmp/lpr3/input] INFO dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2020-10-24 10:14:40.539" EndTime="2020-10-24 10:14:40.539" Duration="74 microseconds" MessageId="7f6a9182-5297-41ac-bc2c-68a7010766ff" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="DataSet received" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","BR_190520111525.csv") } 24-10-2020 10:14:40,890 [Camel (camel-1) thread #3 - file:///tmp/lpr3/input] INFO dk.sdsd.nsp.slalogdata - LogPoint="LoggerBean" LogPointUniqId="LoggerBean" StartTime="2020-10-24 10:14:40.539" EndTime="2020-10-24 10:14:40.539" Duration="74 microseconds" MessageId="7f6a9182-5297-41ac-bc2c-68a7010766ff" RequestSize=0 ReplySize=0 Result=ERROR ("File handling encountered errors and was not completed") ClientIP="<empty>" SOAPOperation="DataSet failed" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(1)= { ("Input","BR_190520111525.csv") }
Audit log
Denne log ligger i filen lpr3Audit.log
og indeholder overordnet logning af Lpr3indlæserens aktivitet
timestamp="2020-10-26 10:01:36,250" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been preparsed" timestamp="2020-10-26 10:01:36,406" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been parsed and splitted" timestamp="2020-10-26 10:01:37,890" priority="ERROR" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Skipping Lpr3 delete batch for PID: null - due to SQL error: Incorrect number of rows affected by batch delete" timestamp="2020-10-26 10:01:37,907" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been completed with status Completed with 1 log(s)"
Application log
Denne log ligger i filen lpr3Application.log
og indeholder detaljeret logning af Lpr3indlæserens aktivitet
timestamp="2020-10-27 10:53:58,207" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been fetched" timestamp="2020-10-27 10:53:58,665" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been received" timestamp="2020-10-27 10:53:58,673" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been preparsed" timestamp="2020-10-27 10:53:58,792" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.parser.Lpr3CsvParseSplitHandler" message="Parsed 7 LPR3 registreringer" timestamp="2020-10-27 10:53:58,797" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been parsed and splitted" timestamp="2020-10-27 10:53:59,584" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Received batch of Lpr3Events with size 15" timestamp="2020-10-27 10:53:59,591" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Delete 6 Lpr3Registreringer" timestamp="2020-10-27 10:53:59,611" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Batched delete LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,611" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Persisted delete batches of LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,611" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Insert using jdbc template." timestamp="2020-10-27 10:53:59,612" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Insert 6 Lpr3Registreringer" timestamp="2020-10-27 10:53:59,629" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Batched insert LPR3Registreringer. Count=6" timestamp="2020-10-27 10:53:59,629" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Persisted insert batches of LPR3Registreringer. Count=6" timestamp="2020-10-27 10:53:59,630" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.database.dao.Lpr3RegistreringerDAO" message="Delete 1 Lpr3Registreringer" timestamp="2020-10-27 10:53:59,648" priority="ERROR" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Skipping Lpr3 delete batch for PID: null - due to SQL error: Incorrect number of rows affected by batch delete" timestamp="2020-10-27 10:53:59,648" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Batched delete LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,648" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Persisted delete batches of LPR3Registreringer. Count=0" timestamp="2020-10-27 10:53:59,648" priority="DEBUG" class="dk.nsp.indlaeser.lpr3.bean.Lpr3PersistBean" message="Done persisting LPR3Registreringer. Written Lpr3: 6, Updated Lpr3: 0, Deleted Lpr3: 0" timestamp="2020-10-27 10:53:59,666" priority="INFO" class="dk.nsp.indlaeser.lpr3.bean.LoggerBean" message="The file BR_190520111525.csv has been completed with status Completed with 1 log(s)"
Stat log
Denne log ligger i filen lpr3Stat.log
og indeholder statistik logning af Lpr3indlæserens aktivitet
{"Time to preparse":"PT0.001S","Time to parse":"PT0.075S","Parsed records":"Parsed 7 LPR3 registreringer","Application":"Lpr3Indlæser","Timestamp":"2020-10-27 10:55:05,810","Processing Time":"PT445052H25M13.306S","ExchangeId":"89807c80-11d5-465b-a198-90e6a2d6f501"}