Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.

Innehållsförteckning

UNDER UPPBYGGNAD!

Applikationsloggar

Virtualiseringsplattformens applikationsloggar återfinns default under <MULE-HOME>/logs/mule-app-vp.log.

Asynkron loggning av meddelanden

För att avlasta så mycket som möjligt så sker loggning asynkront till meddelandeköer, och implementationen är baserad på soi-toolkit och Apache ActiveMQ.

...

  • SOITOOLKIT.LOG.STORE - Normala händelser avseende virtuella tjänster (request och response)
  • SOITOOLKIT.LOG.ERROR - Felhändelser
  • SOITOOLKIT.LOG.INFO - Särskilda händelser angående aktiv övervakning av producentsystem

Meddelande logpost

Själva nyckeln till en loggpost är en korrelationsidentitet på formatet UUID. Denna identitet exponeras också till konsumenter och producenter via en HTTP header x-vp-correlation-id, vilket möjliggör att snabbt kunna hitta till exakt rätt loggpost för enskilda händelser.

...

ElementBeskrivning
messageInfo.levelAnger vad det är för loggpost och antingen INFO eller ERROR är aktuella i VP 2.0
messageInfo.message

Om det är INFO loggpost indikeras om det är ett request xreq-in eller ett response xreq-out.

Om det är en ERROR loggpost indikeras felmeddelandet i detta element.

runtimeInfo.businessCorrelationIdNyckeln till loggposten
runtimeInfo.timestampTidstämpel för när loggposten skapades
extraInfo.contractIndikerar tjänstekontraktets namnrymd
extraInfo.senderIndikerar avsändarens logiska adress (konsument)
extraInfo.receiverIndikerar mottagarens logiska adress (producent)
extraInfo.in_timestampIndikerar tid för anropshändelsen (request)
extraInfo.out_timestampIndikerar tid för svarshändelsen (response)
extraInfo.err_timestampIndikerar tid för felhändelsen (endast för ERROR)
extraInfo.in_payloadIndikerar meddelande-innehåll för anropet
extraInfo.out_payloadIndikerar meddelande-innehåll för svaret
extraInfo.err_payloadIndikerar meddelande-innehåll för felhändelser
extraInfo.in_riv_versionRIV version för anropet i versaler, tex RIVTABP21
extraInfo.out_riv_versionRIV version för svaret i versaler
extraInfo.err_flagFlagga som ska vara satt till true om det är ett fel
extraInfo.err_messageFelmeddelande på applikationsnivå
extraInfo.err_descriptionBeskrivning av felet
extraInfo.err_detailMer tekniska detaljer om felet
extraInfo.sourceJava komponenten (klassen) som genererade loggposten
extraInfo.endpoint_timeTid i milli-sekunder för att anropa producenten
extraInfo.endpoint_urlDen aktuella URL:en som anropar producenten

Loggpunkter

Loggposter skapas med hjälp av Mule transformatorer och i flödet för virtuella tjänster och aktiv övervakning ligger dessa som loggpunkter i standardflödena, och i den inbäddade Mule konfigurationen vp-common.xml finns 4 namngivna transformatorer för logg ändamål:

NamnBeskrivning
logReqInAnvänds för inkommande anrop
logReqOutAnvänds för utgående svar
monitorLogRequestAnvänds för aktiv övervakning och utgående request
monitorLogResponseAnvänds för aktiv övervakning och inkommande svar

Konfigurera asynkron loggning med ActiveMQ

Inställningar för ActiveMQ anges i gängse konfigurationsfil vp-config.properties och följande standardinställningar används:

Info
iconfalse

SOITOOLKIT_MULE_AMQ_BROKER_URL=failover:(tcp://localhost:61616)

SOITOOLKIT_MULE_AMQ_MAX_REDELIVERIES=3

SOITOOLKIT_MULE_AMQ_REDELIVERY_DELAY=10000

SOITOOLKIT_MULE_AMQ_NO_OF_CONSUMERS=2

Exempel på logklient (implementation)

I den nationella tjänsteplattformen används en Apache Cassandra databas för att hantera loggposter, och den kontrollerande Webb-applikationen (log-analyzer) ifråga hanterar såväl aktiv övervakning som passiv loggning och aggregering av statistikräknare (sk. aktuellt läge), se vidare skltpservices på Google Code.

...

Info
iconfalse

...

CamelContext camel = new DefaultCamelContext();

camel.addComponent("activemq", ActiveMQComponent.activeMQComponent("failover:(tcp://localhost:61616)"));

 

Consumer consumer = camel.getEndpoint("activemq:SOITOOLKIT.LOG.STORE").createConsumer(new Processor() {

@Override

public void process(Exchange exchange) throws Exception {

try {

// Java LogEvent class generated from XSD, unmarshal with JAXB

LogEvent le = unmarshal((String)exchange.getIn().getBody());

// do something

storeLogEvent(le);

} catch (Exception e) {

log.error("Unable to store log event", e);

throw e;

}

}

});

consumer.start();

...

Konkret logklient - log analyzer

Installation

Applikationen log-analyzer är en web applikation (war)

  • Källkod, log-analyzer
  • Ladda ner applikationen, från googlecode
  • Driftsätt applikationen på Tomcat genom att kopiera war-filen till <TOMCAT>/webapps
  • Ta bort applikationen genom att ta bort war-filen från <TOMCAT>/webapps och Tomcat avinstallerar applikationen
  • Ladda om applikationen genom att tex göra en touch på <app>/WEB-INF/web.xml

Konfiguration

Applikationen log-analyzer har defaultinställningar som överlagras genom att definiera en fil med namnet config.properties i katalogen ${user.home}/.log-analyzer/. 

...