Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

http://<server>:<port>/minlog2-registration/monitor

http://<server>:<port>/minlog1-registration/monitor

som svarer HTTP OK tilbage, hvis alt fungerer. Dette kald verificerer services samt databaseadgang.

...


http://<server>:<port>/minlog2-registration/monitor?details

http://<server>:<port>/minlog1-registration/monitor?details

Denne viser status for eventuelle services og konfigurationer.

...


http://<server>:<port>/minlog2-registration/versionhttp://<server>:<port>/minlog1-registration/version

Der er intet krav om at versionerne skal "følges" ad – således kan eksempelvis "Registration 2.0.1 godt fungere sammen med Lookup 2.5.1. Det bør tilstræbes at versionerne er det samme.

...


http://<server>:<port>/minlog2-registration/RegisterService

DKS snitflade

DKS for Registration-service på minlog2 findes på følgende url'er.

minlog1RegisterService

http://<server>:<port>/

minlog2-registration/

Funktionalitet

Servicene stiller metoder til rådighed til at registrere cpr relaterede hændelser.

Adgang er håndteret med IDCard. Der kan jf. Netic etableres blacklistning i HAProxy og/eller firewall på NSP'erne.

Håndtering af fejlsituationer

De eneste eksterne afhængigheder er til databaser. Det må derfor forventes, at den mest sandsynlige kilde til fejlsituationer er problemer med databaseadgang. Det forudsættes at databaseskema, tabeller og brugere herunder rettighederne er på plads:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Dette vil fremgå af overvågningsfladen og detaljer vil være tilgængelige i applikationsloggen. Yderligere fejl vil også kunne spores i applikationsloggen.

Logfiler

Registration og Lookup har eget sæt af logfiler – alle placeret i <jboss>/standalone/logs. SLA logning sker til en særlig fil – "nsputil-sla-minlog2.log". Derudover kan der forekomme logning til server.log.

  • minlog2-registration-application
  • minlog2-registration-audit

Logformaterne kan findes i log4j filerne som er placeret i Wildfly – se konfigurationer – og hjælp til patterns kan findes i forbindelse med Log4J:

...

dksconfig

http://<server>:<port>/minlog2-registration/20210511/dksconfig

http://<server>:<port>/minlog2-registration/20230425/dksconfig

http://<server>:<port>/minlog2-registration/20250312/dksconfig

Følgende properties bruges i DKS til opbygning af endpoint.

# DCC Endpoint
minlog2.endpoint.register=http://test1-cnsp.ekstern-test.nspop.dk:8080/minlog2-registration

Funktionalitet

Servicene stiller metoder til rådighed til at registrere cpr relaterede hændelser.

Adgang er håndteret med IDCard. Der kan jf. Netic etableres blacklistning i HAProxy og/eller firewall på NSP'erne.

Håndtering af fejlsituationer

De eneste eksterne afhængigheder er til databaser. Det må derfor forventes, at den mest sandsynlige kilde til fejlsituationer er problemer med databaseadgang. Det forudsættes at databaseskema, tabeller og brugere herunder rettighederne er på plads:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Dette vil fremgå af overvågningsfladen og detaljer vil være tilgængelige i applikationsloggen. Yderligere fejl vil også kunne spores i applikationsloggen.

Logfiler

Registration og Lookup har eget sæt af logfiler – alle placeret i <jboss>/standalone/logs. SLA logning sker til en særlig fil – "

SLA log

nsputil-sla-minlog2.log indeholder SLA loggen. Loggen indeholder målepunkter for service- og Kafka kald. Kaldet til Kafka foregår inden for servicekaldet og har til formål at gøre det synligt, hvor tiden går.

Logpunkter til servicekald benytter soap operationen som Logpoint og LogPointUniqId, mens database-og kafkakald benytter "Operation" som Logpoint og en tekstuel beskrivelse af opslaget som LogPointUniqId

Service- og databasekald er korrelerede med messageID.

Eksempel GetLogStatementForCPRPerson udløser flere databasekald: Et hvor logentries slåes op, et hvor personnavn hentes fra Stamdata og et opslag på organistationsid'et.

Alle 3 logpunkter deler Messageid hentet fra SOAP headeren.

". Derudover kan der forekomme logning til server.log.

  • minlog2-registration-application
  • minlog2-registration-audit

Logformaterne kan findes i log4j filerne som er placeret i Wildfly – se konfigurationer – og hjælp til patterns kan findes i forbindelse med Log4J:


https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

SLA log

nsputil-sla-minlog2.log indeholder SLA loggen. Loggen indeholder målepunkter for service- og Kafka kald. Kaldet til Kafka foregår inden for servicekaldet og har til formål at gøre det synligt, hvor tiden går.

Logpunkter til servicekald benytter soap operationen som Logpoint og LogPointUniqId, mens database-og kafkakald benytter "Operation" som Logpoint og en tekstuel beskrivelse af opslaget som LogPointUniqId

Service- og databasekald er korrelerede med messageID.

Eksempel GetLogStatementForCPRPerson udløser flere databasekald: Et hvor logentries slåes op, et hvor personnavn hentes fra Stamdata og et opslag på organistationsid'et.

Alle 3 logpunkter deler Messageid hentet fra SOAP headeren.

2017-06-26 08:22:05,751 [default task-4] INFO  dk.sdsd.nsp.slalogdata - LogPoint="DB_Operation" LogPointUniqId="lookupPersonName" StartTime="2017-06-26 08:22:05.750" EndTime="2017-06-26 08:22:05.750" ,751 [default task-4] INFO  dk.sdsd.nsp.slalogdata - LogPoint="DB_Operation" LogPointUniqId="lookupPersonName" StartTime="2017-06-26 08:22:05.750" EndTime="2017-06-26 08:22:05.750" Duration="767 microseconds" MessageId="AAABXOMQcV1mt6jYItbXz1NPU0k=" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="<empty>" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(0)= {  }

2017-06-26 08:22:05,773 [default task-4] INFO  dk.sdsd.nsp.slalogdata - LogPoint="DB_Operation" LogPointUniqId="getLogStatements" StartTime="2017-06-26 08:22:05.141" EndTime="2017-06-26 08:22:05.773" Duration="632086 microseconds" MessageId="AAABXOMQcV1mt6jYItbXz1NPU0k=" RequestSize=0 ReplySize=0 Result=OK ClientIP="<empty>" SOAPOperation="<empty>" SOAPEndpoint="<empty>" SOAPAction="<empty>" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(0)= {  }

2017-06-26 08:22:05,997 [default task-4] INFO  dk.sdsd.nsp.slalogdata - LogPoint="minlog2.GetLogStatementsForCPRPerson" LogPointUniqId="minlog2.GetLogStatementsForCPRPerson" StartTime="2017-06-26 08:22:04.657" EndTime="2017-06-26 08:22:05.997" Duration="1340017 microseconds" MessageId="AAABXOMQcV1mt6jYItbXz1NPU0k=" RequestSize=0 ReplySize=0 Result=OK ClientIP="127.0.0.1" SOAPOperation="GetLogStatementsForCPRPerson" SOAPEndpoint="http://localhost:8080/minlog2-lookup/LookupService" SOAPAction="GetLogStatementsForCPRPerson" TargetSOAPOperation="<empty>" TargetSOAPEndpoint="<empty>" GenericCallParms(0)= { }


Audit log

Audit-logning foretages med det officielle "NSP Audit API" modul.

...

Code Block
languagejs
titleLookupRequest-eksempel 1
linenumberstrue
collapsetrue
{
  "time": "2022-06-13T14:49:29.09Z",
  "category": "dk.sds.nsp.audit.log.minlog2",
  "audit": {
    "timestamp": "2022-06-13T16:49:29.046+02:00",
    "components": [
      {
        "component": "MinLog2",
        "contexts": [
          {
            "context": "LookupRequest",
            "information": [
              {
                "key": "Caller",
                "type": "SPI",
                "value": "1010780337"
              },
              {
                "key": "Parameters",
                "type": "SPI",
                "value": "NA"
              }
            ]
          }
        ]
      }
    ]
  },
  "access": {
    "code": 200,
    "duration": 39,
    "httpHeaders": {
      "Content-Type": "text/xml; charset=UTF-8",
      "SOAPAction": "\"GetLogStatementsForCPRPersonWithID\""
    },
    "httpHost": "localhost",
    "idCardAttributes": {
      "dk:gov:saml:attribute:AssuranceLevel": "3",
      "dk:gov:saml:attribute:CprNumberIdentifier": "1010780337",
      "dk:gov:saml:attribute:SpecVer": "DK-SAML-2.0"
    },
    "method": "POST",
    "path": "/minlog2-lookupid/LookupidService",
    "query": "",
    "port": 8081,
    "protocol": "http",
    "reqSize": 11810,
    "resSize": 21707,
    "soapHeaders": {
      "Audience": "https://minlog",
      "Issuer": "TEST2-NSP-STS",
      "NameID": "C=DK,O=Ingen organisatorisk tilknytning,CN=Lars Larsen,Serial=PID:9208-2002-2-633568693394",
      "w3Action": "action",
      "w3MessageID": "64d6a252-f391-460c-a90b-1ea7d8512cd8"
    },
    "threadId": "default task-102",
    "time": "2022-06-13T16:49:29.046+02:00",
    "stats": {
      "handlerDuration": 3,
      "RequestContentDuration": 0,
      "ResponseContentDuration": 0,
      "SecurityProtocolRequestDuration": 0,
      "SecurityProtocolResponseDuration": 0,
      "bufferAllocated": false,
      "usedBuffers": 2,
      "activeBuffersInPool": 2,
      "idleBuffersInPool": 29
    }
  }
}
Code Block
languagejs
titleLookupRequest-eksempel 2
collapsetrue
true
collapsetrue
{
  "time": "2022-06-13T14:49:29.09Z",
  "category": "dk.sds.nsp.audit.log.minlog2",
  "audit": {
    "timestamp": "2022-06-13T16:49:29.046+02:00",
    "components": [
      {
{
  "time": "2022-06-13T14:49:25.078Z",
  "category": "dk.sds.nsp.audit.log.minlog2",
  "audit": {
    "timestamp": "2022-06-13T16:49:25.022+02:00",
    "components": [
      {
        "component": "MinLog2",
        "contexts": [
          {
            "context": "LookupRequest",
            "information": [
              {
                "key": "Caller",
                "type": "SPI",
                "valuecomponent": "46837428MinLog2",
              },"contexts": [
              {
                "keycontext": "ParametersLookupRequest",
                "typeinformation": "SPI",[
                "value": {
                  "cprNRkey": "1908931462Caller",
                  "fraDatotype": 1655131705018"SPI",
                  "tilDatovalue": 1655131795018,"1010780337"
                  "pageSize": 7,
    },
              "pageStartAfter": "c863eb15ad68e490794788e287e9a811738d1d337dd382c2cd1ad0b0"
{
                 }"key": "Parameters",
              }
  "type": "SPI",
         ]
          }"value": "NA"
        ]
      }
    ]
  },
  "access": {
    "code": 200, ]
    "duration": 54,
    "httpHeaders": {}
      "Content-Type": "text/xml; charset=UTF-8",
   ]
    "SOAPAction": "\"http://nsi.dk/minlog/2014/05/23/ListLogStatements\""
    }
    ]
  },
  "access": {
    "httpHostcode": 200,
    "localhostduration": 39,
    "idCardAttributeshttpHeaders": {
      "medcom:CareProviderIDContent-Type": "46837428text/xml; charset=UTF-8",
      "SOAPAction"medcom:CareProviderName": "Statens Serum Institut",
  : "\"GetLogStatementsForCPRPersonWithID\""
    },
    "medcom:ITSystemNamehttpHost": "Testlocalhost",
      "sosi:AuthenticationLevelidCardAttributes": "3",{
      "sosi:IDCardIDdk:gov:saml:attribute:AssuranceLevel": "H/1xienuUQBuWN0tp09auw==3",
      "sosi:IDCardTypedk:gov:saml:attribute:CprNumberIdentifier": "system1010780337",
      "sosi:IDCardVersion"dk:gov:saml:attribute:SpecVer": "1DK-SAML-2.0.1"
    },
    "method": "POST",
    "path": "/minlog1minlog2-lookuplookupid/MinlogServiceLookupidService",
    "query": "",
    "port": 8081,
    "protocol": "http",
    "reqSize": 628611810,
    "resSize": 470621707,
    "soapHeaders": {
      "IssuerAudience": "TEST2-NSP-STShttps://minlog",
      "MessageIDIssuer": "AAABgV2KeRyT/Cd9qHFnA1NPU0k=TEST2-NSP-STS",
      "NameID": "SubjectDN={SERIALNUMBER=CVR:46837428-UID:27910135 + CN=Statens Serum Institut - Test VOCES, O=Statens Serum Institut // CVR:46837428, C=DK},IssuerDN={CN=TRUST2408 Systemtest XXXIV CA, O=TRUST2408, C=DK},CertSerial={1604144225}C=DK,O=Ingen organisatorisk tilknytning,CN=Lars Larsen,Serial=PID:9208-2002-2-633568693394",
      "w3Action": "action",
      "w3MessageID": "64d6a252-f391-460c-a90b-1ea7d8512cd8"
    },
    "threadId": "default task-88102",
    "time": "2022-06-13T16:49:2529.022046+02:00",
    "stats": {
      "handlerDuration": 13,
      "RequestContentDuration": 0,
      "ResponseContentDuration": 0,
      "SecurityProtocolRequestDuration": 0,
      "SecurityProtocolResponseDuration": 0,
      "bufferAllocated": false,
      "usedBuffers": 12,
      "activeBuffersInPool": 12,
      "idleBuffersInPool": 3029
    }
  }
}

Applikationslog

Filen minlog2-registration-application.log og minlog2-lookup-application.log indeholder applikationsloggen og kan benyttes i fejlsituationer og til statistik. På nuværende tidspunkt anvendes denne primært til logning i forbindelse med batchjob og indlæsning til cache.

...

Message producer pool empty. Consider increasing property producer.pool.count.

Konfigurationer

Databaseadgang konfigureres i datasource filer i:

<jboss>/standalone/deployments/minlog2-ds.xml
<jboss>/standalone/deployments/minlog2-stam-ds.xml
<jboss>/standalone/deployments/minlog2-fo-ds.xml

SLA log og øvrige konfigurationer (log og systemspecifikke konfigurationer) findes i:

...

Se i øvrigt installationsvejledningen.

Whitelisting

For at et anvender kan kalde en bestemt registration-snitflade, skal de whitelistes først. Dette gøres enten på deres CVR-nummer eller via et certifikats SSN som indsættes i whitelistingwhitelist-tabellen.

Eksempler:

Code Block
languagesql
INSERT INTO whitelistingwhitelist (operation, identification_type, identification, note) VALUES ('registration', 'SSN', 'UI:DK-O:G:8d3fa047-c77e-47e4-bdd2-e91488610ce6', 'En note');
INSERT INTO whitelistingwhitelist (operation, identification_type, identification, note) VALUES ('registration', 'CVR', '33257872', 'En note');

Operationen der whitelistes på, er altid en bestemt version af en operation. Herunder er de registration-operationer der pt. kan whitelistes til:

  • registration
  • registration_20210511
  • registration_20230425

Batch job

Lookup applikationen indeholder følgende batchjobs:

...

Se i øvrigt Applikationslog

Backup

Der skal tages backup af minlog2 databasen og evt. konfigurationsfilerne nævnt i installationsvejledningen.

Belastning

Servicemålene herunder er for henholdsvis MinLog 2 RegistrationService og LookupService.

Service

Servicemål

Svartider opdatering

95 % af tilfældene ≤ 6,5 sek


98 % af tilfældene ≤ 15,5 sek

Svartider forespørgsler

95 % af tilfældene ≤ 2,5 sek


98 % af tilfældene ≤ 5,5 sek

Baggrund for vurdering af belastning

TBD