Stamdata
Driftsvejledning

Formål

Dokument målrettet systemadministratorer og driftspersoner, som skal kunne håndtere driftsmæssige aspekter af komponenten.
Driftsvejledningen skal indeholde information om komponentens version, standard placering af logfiler og konfigurationsfiler, eksterne afhængigheder, og evt. krav til genstart af applikationer hvis komponenten bliver ikke-responsiv.
Start/stop vejledning for komponenten beskrives, herunder hvilke andre applikationer der evt. skal genstartes.
Kendte fejlkoder som skrives i logfiler dokumenteres, så disse evt. kan overvåges, og tillige danne baggrund for fejlsøgning. En generel læsevejledning til logfiler vedlægges.
Det bør angives hvorledes komponenten bedst lader sig overvåge, dvs. en generisk beskrivelse af overvågningen, der ikke er værktøjsafhængig.
Evt. specielle krav til backup beskrives, ligesom procedure ved reetablering af komponenten ud fra backup beskrives.

Omfattede komponenter

Dette dokument omfatter driften af alle Stamdata importer komponenterne
Listen herunder beskriver hver komponent med type status URL og navnet på filen som skal deployes. Status URL'en kan løbende polles for at checke komponentens status. Status sider er beskrevet mere detaljeret senere i dokumentet.

Stamdata importer komponenter

Stamdata Data Importere

Hver stamdata importer ligger i sin egen WAR fil, hver importer har sin egen overvågnings URL, der enten fortæller om den enkelte importer er operationsdygtig (HTTP 200 OK), eller om der er fejl i importeren (HTTP 500 ERROR), Overvågningssiden vil give et bud på hvad fejlen er, dog bør man kigge i log-filen for at få alle detaljer med.

  • Type: Batch
  • Status Url: http://<hostname>:<port>/<komponent-navn>/
  • Filnavn: <komponent>.war

Opdatering til nye versioner

Når nye versioner af Stamdata komponenterne udkommer, vil der medfølge release notes som forklarer database-migrering, rollback-procedure, service vinduer mv. Til installation af første version af stamdata komponenterne henvises til installationsguiden.

Daglig Drift

Stamdata Importere

Stamdataimporterne er en gruppe filparsere og batch jobs som indlæser og vedligeholder data fra forskellige registre og gemmer dem i en MySQL database.
Hver importer har sin egen inbox-mappe som automatisk oprettes når servicen startes. Roden for disse inboxmapper er:
<JBOSS_HOME>/domain/data/sdm4/
Komponenten kigger i sin inboxmappe for at se om der kommer nye filer til import. Det er driftens opgave at placere filer i inboxmapperne når tiden er inde for en opdatering. Hvilke filer der skal bruges og hvor ofte registrene skal opdateres er beskrevet i slutningen af dokumentet. Hver inbox er logisk navngivet efter den tilhørende importer.
Se afsnittet om overvågning for monitorering af servicen.

Fremgangsmåde for indlæsning af nye data


Parserne forventer data at blive lagt i undermapper af deres rod-mappe, f.eks.:
<JBOSS_HOME>/domain/data/sdm4/<importer>/20120822T201121S231/<file.txt>
<JBOSS_HOME>/domain/data/sdm4/<importer>/20120822T201121S231/<file2.txt>
Undermappernes navne er underordnede. De importeres i leksikografisk orden,
og det vil derfor være oplagt at lægge dem så undermappernes navne er tids-
stempler som vist i eksemplet.
Skulle der ske en fejl under import, vil der blive lagt en fil ved navn
"LOCKED" i parserens inbox, f.eks.:
<JBOSS_HOME>/domain/data/sdm4/<importer>/LOCKED
Parseren vil ikke forsætte før denne fil er slettet manuelt. Fejl-beskeden kan findes i loggen.

Eksempel for import af nye CPR-data

Her en et eksempel på strukturen for en parsers filsystem. I dette tilfælde er det CPR-parseren:
<JBOSS_HOME>/domain/data/sdm4/cprimporter/
Placeres filen 'D100312.L431101' (som er en typisk CPR Person fil) i inputmappen begynder parseren at stabilisere data. Man kan gå ind på komponentens monitoreringsside for at se status for import:
http://<hostname>:<port>/cprimporter/status
Her vil man kunne se om CPRimporteren kører, hvornår CPRimporteren sidst har kørt, og hvilken status den har.

Konfiguration af Stamdata importere


Hver importer har en default konfigurationsfil (default-config.properties) der er indlejret i war filen, de eneklte konfigurationsindstillinger kan overstyres ved af en miljø specifik konfigurationsfil (config.properties), der ligger i filsystemet på følgende lokation:
<JBOSS_HOME>/modules/sdm4/config/<komponent>/main/config.properties
Properties

jdbc.JNDIName

JNDI navn for datasourcen, der er konfigureret i JBOSS serveren, default: java:/SDMDS

sdm.dataDir

Folder navn hvor importeren kan finde datafilerne default: /pack/jboss/domain/data/sdm4

spooler.max.days.between.runs

Parameter til overvågning af om en importer har modtaget data indenfor et forventet interval. Hvis denne frist overskrides vil overvågningen rapportere fejl.

dk.nsi.dgws.sosi.dgwsLevels

Kommasepararet liste af DGWS niveauer som kan bruges når man tilgår denne service. F.eks dk.nsi.dgws.sosi.dgwsLevels=3,4

Default: 3


Database

De enkelte stamdata importere er testet på en MySQL 5.5 database.

Skema til stamdata importere

Skema til stamdata importere opdateres automatisk af de enkelte importere, via det indbyggede migrerings framework.
Det skal dog understreges at så lang tid de enkelte NSP services er direkte afhængige af tabel layoutet for stamdata importerne, og der samtidig skal være bagud kompatibilitet vil tabel layoutet ikke ændre sige for stamdata importerne – men kun være splittet ud i importer war filerne.

Databaseopsætning

Følgende indstillinger bør sættes specielt i databasen, disse indstillinger konfigureres i mysql's konfigurationsfil.

Indstilling

Værdi

Beskrivelse

Max_allowed_packet

16M

CPR opslagsservices kan returnere en pæn mængde data, derfor er max_allowed_packet default værdien på 1M for lidt - det anbefales at sætte den til 16M.


Backup

Alle tabeller i stamdatas database skal have daglig backup. Backup må ikke gemmes længere end 2 år pga. lovkrav.
Da der er tale om store mængder data er det vigtigt at holde for øje at det kan tage meget lang tid at genetablere et database image for stamdata.

Backup af Data Manager input-filer

Alle filer fra dataset som lægges ind i Stamdata indbakker skal der laves backup af. Det vil sige at hver gang der f.eks. ankommer en ny fil fra CPR-registeret skal filen ligges i den pågældende parsers indbakke og samtidigt arkiveres. Hvordan filen arkiveres er op til driften, men filnavnet og dato for ankomst skal kunne spores.

Overvågning

Statussider

For hver komponent er der en status-side som periodisk kan kaldes for at tjekke om servicen kører. Hvis en service ikke kan overvåges via en simple status side vil det fremgå af dens driftsdokumentation.
Status sider fungerer over HTTP, og har følgende statuskoder:

200

Alt er OK.

500

Der er opstået en fejl, og driften bør undersøge komponentens log for fejlmeddelelser. Kan fejlen ikke opklares simpelt, bør driften kontakte support.


URL's for status sider kan findes tidligere i dette dokument.

Speciel overvågning af SOR og SOR-Relationer importerne

Da SOR behandles af to forskellige importere, er det et problem for datakonsistensen, hvis den ene af disse to parsere fejler på et datasæt som den anden parser ikke fejler på.
Skulle en af de to parsere afvise en import, er det en hastesag at få rettet den fejl der resulterer i afvisningen i den anden parser, så de to registre kan komme i sync så hurtigt som muligt.

Logning

Stamdata importerne på DoDi'en bruger ikke JBOSS logging, men her hver deres egen log konfiguration som placeres følgende:
<JBOSS_HOME>/modules/sdm4/config/<Importer navn>/main/
Her ligges en log4j.properties, der beskriver hvorledes importeren skal logge, samt konfiguration for SLA logging for netop denne komponent

SLA-Log punkter


For at sikre en struktureret logning på tværs af de forskellige services, benyttes nsp-util også til SLA-Logning fra sdm4 importerne.
Der logges fra 2 logpunkter pr. importer ét punkt fra sdm4-core og ét fra selve importeren, sdm4-core er delt for alle importere og der dannes én linje for hver gang en importer startes.
En log fra sdm4-core ser ud som nedenfor:
03-06-2013 13:34:46,752 [pool-10-thread-1] INFO dk.sdsd.nsp.slalogdata - LogPoint="<span style="color: #ff0000"><importernavn></span>.ParserExecutor" LogPointUniqId="SDM4CORE_ENTRY" StartTime="2013-06-03 13:34:45.650" EndTime="2013-06-03 13:34:46.752" Duration="1101893 microseconds" MessageId="vitaminimporter-1370259285650" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="<empty>" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(0)= { }
Fra de enkelte importere logges følgene pr datasæt:
03-06-2013 13:34:46,750 [pool-10-thread-1] INFO dk.sdsd.nsp.slalogdata - LogPoint="<span style="color: #ff0000"><importernavn></span>.process" LogPointUniqId="SDM4. <span style="color: #ff0000"><importernavn></span>.process" StartTime="2013-06-03 13:34:45.782" EndTime="2013-06-03 13:34:46.750" Duration="967593 microseconds" MessageId="vitaminimporter-1370259285650" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="<empty>" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(2)= { ("input","/pack/jboss/domain/data/sdm4/vitaminimporter/vitaminer") , ("processed_records","634") }
GenericCallParms indeholder altid "input" som peger på input folderen samt "processed_records" som indeholder antal indsatte eller ændrede records i databasen.
MessageID indeholder en unik id for kørslen således man kan kæde sdm4-core loggen sdm4-importeren sammen pr. kørsel.


Fejlsøgning

Opstår der en fejlsituation i en komponent, skal driften undersøge den pågældende komponents logfil for loghændelser på ERROR-niveau. F.eks. i tilfælde af at komponenten ikke kan forbinde til databasen. Visse andre fejl er ikke-kritiske. Det vil sige at komponenten kan forsætte med at fungere. De bliver også logget på ERROR-niveau da der hændelsen bør undersøges. Komponenterne vil i så vid udstrækning som muligt forsøge at forsætte på trods af fejl.
Anvendes Splunk til indeksere logfiler bør alle de konfigurerede filer indekseres. Der kan opsættes alarmer i Splunk som aktiveres hvis en hændelse med ERROR-niveau logges. Dette niveau anvendes udelukkende ved alvorlige fejl. Der udover er også hændelser på WARN-niveau interessante da de f.eks. fortæller om folk forsøger at tilgå servicen uden tilladelse ol.

Liste af Registre

Hvert register har sin egen registerspecifikations fil som ligger i register mappen sammen med dokumentationen.

Ændringslog

Kilden til dette dokument kan findes på:
https://svn.nspop.dk/svn/trifork/sdm4-core/trunk/doc/Driftsvejledning.docx

Version

Dato

Ændring

Ansvarlig

1.0

2011-04-28

Initielt Dokument

Trifork

1.1

2011-09-12

Opdateret med CPR services

Trifork

1.2

2012-06-18

Tilføjet informationer om schema opdateringer, samt mysql settings og v2 parsere

Trifork

1.3

2012-08-22

Opdateret med opsplitning af stamdata importere i moduler, samt JBOSS 7 konfiguration på DoDi

Trifork

1.4

2012-08-24

Fjernet al dokumentation der ikke er Importer specifik

Trifork

1.5

2013-06-03

Tilføjet afsnit om sla-log

Trifork

1.6

2014-01-09

Opdateret kilde link

Trifork KPN

  • No labels