Innehållsförteckning |
---|
UNDER UPPBYGGNAD!
Loggning
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ändelserSOITOOLKIT.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.
...
Element | Beskrivning |
---|---|
messageInfo.level | Anger vad det är för loggpost och antingen INFO eller ERROR är aktuella i VP 2.0 |
messageInfo.message | Om det är Om det är en |
runtimeInfo.businessCorrelationId | Nyckeln till loggposten |
runtimeInfo.timestamp | Tidstämpel för när loggposten skapades |
extraInfo.contract | Indikerar tjänstekontraktets namnrymd |
extraInfo.sender | Indikerar avsändarens logiska adress (konsument) |
extraInfo.receiver | Indikerar mottagarens logiska adress (producent) |
extraInfo.in_timestamp | Indikerar tid för anropshändelsen (request) |
extraInfo.out_timestamp | Indikerar tid för svarshändelsen (response) |
extraInfo.err_timestamp | Indikerar tid för felhändelsen (endast för ERROR ) |
extraInfo.in_payload | Indikerar meddelande-innehåll för anropet |
extraInfo.out_payload | Indikerar meddelande-innehåll för svaret |
extraInfo.err_payload | Indikerar meddelande-innehåll för felhändelser |
extraInfo.in_riv_version | RIV version för anropet i versaler, tex RIVTABP21 |
extraInfo.out_riv_version | RIV version för svaret i versaler |
extraInfo.err_flag | Flagga som ska vara satt till true om det är ett fel |
extraInfo.err_message | Felmeddelande på applikationsnivå |
extraInfo.err_description | Beskrivning av felet |
extraInfo.err_detail | Mer tekniska detaljer om felet |
extraInfo.source | Java komponenten (klassen) som genererade loggposten |
extraInfo.endpoint_time | Tid i milli-sekunder för att anropa producenten |
extraInfo.endpoint_url | Den 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:
Namn | Beskrivning |
---|---|
logReqIn | Används för inkommande anrop |
logReqOut | Används för utgående svar |
monitorLogRequest | Används för aktiv övervakning och utgående request |
monitorLogResponse | Anvä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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
... 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/.
...