logging topdesk enterprise

Upload: kresso

Post on 13-Apr-2018

269 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/26/2019 Logging Topdesk Enterprise

    1/91

    Logging TOPdesk Enterprise

    Bachelorproject technische informaticaIN3700

    Eindverslag

    UitvoerdersMartijn de Gans - 1174487Danny Verloop - 1188526

    Vak

    Bachelorproject - IN3700

    Omgeving

    TOPdeskTU Delft

    Datum

    21 juni 2007

    Versie1.0

    CommissieR. J. Grootjans (TOPdesk, begeleider)R. Spilker (TOPdesk, opdrachtgever)H.J.A.M. Geers (TU Delft, begeleider)B.R. Sodoyer (TU Delft, cordinator)

  • 7/26/2019 Logging Topdesk Enterprise

    2/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    1

    Voorwoord

    De bachelorstudie Technische Informatica aan de TU Delft wordtafgesloten met een laatste project, het bachelorproject. Voor ditproject moet een stageopdracht vervuld worden bij een bedrijf ofinstelling in een periode van 12 weken.

    Wij hebben ervoor gekozen om onze opdracht uit te voeren bij hetbedrijf TOPdesk, gevestigd in Delft. Het doel van de opdracht washet analyseren van logbestanden die gegenereerd worden door hetproduct TOPdesk Enterprise en een advies uitbrengen overeventuele verbeteringen in die logbestanden.

    We hebben een planning gemaakt waarbij we vijf dagen in de week,acht uur per dag aan deze opdracht hebben gewerkt.

    Na de afronding van dit project is het voor TOPdesk mogelijk omgegevens uit de logbestanden op een overzichtelijke manier tekunnen weergeven en statistieken hierover op te vragen.

    Voor ons was dit project een leerzame ervaring. Het hele software-ontwikkelingstraject kwam aan bod en het was leerzaam om te

    ervaren hoe dit binnen een commercieel bedrijf plaatsvindt.

    De mensen die betrokken waren bij de uitvoering van onsbachelorproject willen we graag bedanken. Roel Spilker alsopdrachtgever en begeleider binnen TOPdesk. Robbert JanGrootjans voor zijn dagelijkse begeleiding en technischeondersteuning. Tevens willen wij Hans Geers bedanken voor zijnbegeleiding vanuit de TU Delft.

    Delft, juni 2007,

    Martijn de GansDanny Verloop

  • 7/26/2019 Logging Topdesk Enterprise

    3/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    2

    Inhoudsopgave

    1.

    Introductie 32. Samenvatting 43. Bedrijfsprofiel 54. Probleemstelling 6

    1. Opdracht 62. Doelstelling 63. Projectomgeving 7

    5. Analyse 84. Gebruikers 85. Huidige situatie 96. Logbestanden 107. Interviews 13

    8.

    Functionele eisen 156. Ontwerp 179. Inlezen 1710.Parsen 1811.Blocks herkennen 1912.Eventhandlers 2013.Database 2214.Logregels en eigenschappen tonen 2415.Filters 2516.Highlighting 2717.Performance informatie tonen 28

    7. Implementatie 2918.Prototype 2919.

    Database 29

    20.Inlezen en parsen van logregels 3021.Tonen van logregels 3122.Filters 3223.Event handlers 3424.Highlighting 34

    8. Testresultaten 359. Conclusies en aanbevelingen 3810.Reflectie 39

    25.Danny Verloop 3926.Martijn de Gans 40

    11.Bijlage A: plan van aanpak 41

    12.

    Bijlage B: Requirements Analysis Document 4713.Bijlage C: Design Document 6414.Bijlage D : Interviews 8415.Bijlage E: Handleiding event handlers 88

  • 7/26/2019 Logging Topdesk Enterprise

    4/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    3

    Introductie

    TOPdesk Enterprise is een servicemanagement applicatie die wordtgeleverd door het gelijknamige bedrijf TOPdesk. Tijdens hettoepassen van TOPdesk Enterprise worden er logbestandengegeneerd waar informatie in wordt geplaatst over de toestand vanhet systeem op een bepaald moment. Deze logbestanden kunnengrote hoeveelheden regels bevatten, waardoor het lastig is om eenprobleemsituatie te herkennen of te reproduceren.

    TOPdesk heeft dit probleem opgegeven als opdracht voor debachelorstage. Gevraagd wordt om een programma te ontwikkelen

    dat beter door de grote hoeveelheid gegevens kan navigeren.

    Wij hebben deze opdracht gekozen als stageopdracht voor hetbachelorproject, dat de afsluitende fase van de bachelorstudieTechnische Informatica aan de Technische Universiteit Delft vormt.Voor dit project moet een stageopdracht vervuld worden bij eenbedrijf of instantie. Wij hebben gekozen voor de opdracht vanTOPdesk door de ervaring met Java, de gunstige ligging vlakbij deTU en de positieve bedrijfsinstelling.

    Dit eindverslag beschrijft de resulaten van het project en de manierwaarop wij deze hebben bereikt. De verschillende fases wordentoegelicht met daarbij de problemen waar wij tegen aanliepen en deoplossingen die wij daarvoor hebben gekozen.

    Allereerst zal het bedrijf TOPdesk en de producten die zij levertworden besproken. Vervolgens zal worden ingegaan op deprobleemomschrijving en de omgeving waarin wij de opdrachthebben uitgevoerd.De analysefase laat zien waar het uiteindelijke product aan moetvoldoen. Er wordt ingegaan op het ontwerpen van het product en deimplementatie met de daarbij behorende problemen en oplossingen.Na de implementatie worden de resultaten van het testenbesproken.We sluiten het eindverslag af met het geven van enkeleaanbevelingen over de manier waarop het loggen verbeterd kanworden en we noemen een aantal nuttige toevoegingen aan onsanalyse systeem.Als laatste bespreken wij ieder individueel hoe wij dit projecthebben ervaren en wat we ervan hebben geleerd.Documenten die tijdens het project zijn opgesteld zijn als bijlage

    toegevoegd aan dit eindverslag.

  • 7/26/2019 Logging Topdesk Enterprise

    5/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    4

    Samenvatting

    De stageopdracht voor het bachelorproject is uitgevoerd bij hetbedrijf TOPdesk, gevestigd in Delft. Dit bedrijf heeft een aantalopdrachten beschikbaar gesteld aan bachelorstudenten. Eendaarvan betrof het ontwikkelen van een applicatie om doorlogbestanden, gegeneerd door het programma TOPdesk Enterprise,te navigeren. Wij hebben voor deze opdracht gekozen, die we in 12weken hebben uitgevoerd.

    De gegenereerde logbestanden bevatten honderdduizenden regels

    met informatie van de acties die op een bepaald tijdstip werdenuitgevoerd en in welke staat het systeem op een bepaald momentverkeerde. Veel verschillende informatie wordt door elkaar heenweggeschreven en dit geeft een zeer onoverzichtelijk beeld voor demensen die probleemsituaties moeten oplossen. Dit kunnenhelpdeskmedewerkers, testers of ontwikkelaars zijn.

    Bij het ontwikkelen van dit systeem hebben wij ons gehouden aande ontwikkelmanier die ons aan de TU Delft is aangeleerd. Ditbetekent dat er eerst een domeinanalyse heeft plaatsgevonden en

    requirements zijn verzameld bij de opdrachtgever en detoekomstige gebruikers. Hierna is een ontwerp gemaakt watvervolgens gemplementeerd kon worden.Tijdens het implementeren kwamen de nodige problemen naarvoren, die vooral te maken hadden met de performance van degebruikte database.

    Het ontwikkelde systeem, door ons LogAnalyzer genoemd, is na deimplementatie getest door de bij TOPdesk aanwezige professioneletesters. De punten die hieruit naar voren kwamen hebben wij voorzover mogelijk verwerkt. Soms bleek dat een simpele aanpassingaan het systeem voldoende was, soms kwamen er meerontwerpvraagstukken bij kijken.

    We hebben bij aanvang van dit project een planning opgesteldwaarin alle fases zijn uitgewerkt. Deze planning kon redelijk wordennageleefd. De ontwerpfase en de implementatie fase hebbenuiteindelijk meer tijd in beslag genomen dan gepland. Dit is vooralte wijten aan de performance problemen die optraden bij hetgebruik van de database en de aanpassingen die hierbij nodigwaren in het ontwerp.

  • 7/26/2019 Logging Topdesk Enterprise

    6/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    5

    Bedrijfsprofiel

    TOP Informatie Systemen B.V. bestaat sinds 1997 als zelfstandigeonderneming. Het bedrijf is voortgekomen uit de zusterorganisatieOGD (Operator Group Delft). OGD is een automatiseringsbedrijf datop een groot aantal automatiseringsgebieden actief is. Voordat TOPInformatie Systemen B.V. onder deze naam actief was, was denaam OGD Software.

    TOP Informatie Systemen B.V., meestal aangeduid als TOPdesk,ontwikkelt, verkoopt en ondersteunt het softwarepakket TOPdesk.

    Wereldwijd zijn meer dan 2200 implementaties over de gehelewereld actief in 26 landen. Sinds 1993 is het aantal werknemersvan 2 naar meer dan 160 toegenomen. Het grootste deel van dezewerknemers werkt in Delft. Daarnaast heeft TOPdesk inKaiserslautern en Londen een vestiging. In deze vestigingen vindtgeen ontwikkeling van software plaats. Het pakket TOPdesk is eenService Management tool. Vooral helpdesks maken gebruik van hetpakket. Het omvat onder andere incidentbeheer,configuratiebeheer, wijzigingsbeheer en tal van anderefunctionaliteiten.1

    1Uit Bsc 2006: Migratie CVS naar Subversion, Didier Liauw en Henk Pijper, 2006

  • 7/26/2019 Logging Topdesk Enterprise

    7/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    6

    Probleemstelling

    Opdracht

    Zodra TOPdesk Enterprise wordt uitgevoerd, worden erlogbestanden gegenereerd waarin informatie wordt weggeschrevenover de toestand van de applicatie op een bepaalde tijd. Zo is in delogbestanden te vinden wat voor informatie is toegevoegd aan dedatabase of is opgevraagd met de daarbij behorende executietijden,welke webpaginas er zijn opgevraagd bij de webserver en hoe langdit duurde, welke modules en services zijn geladen en anderespecifieke systeeminformatie.

    Deze logbestanden bevatten zeer veel gegevens, wat hetingewikkeld maakt voor ontwikkelaars, testers ofhelpdeskmedewerkers om hier relevante informatie uit te halen. Inde huidige situatie worden de logbestanden doorgelezen tot meneen bepaalde situatie heeft kunnen identificeren.

    Onze opdracht is om deze analyse van de log gegevens tevereenvoudigen zodat op een overzichtelijke manier door deinformatie kan worden genavigeerd. Tevens is ons gevraagd na

    afloop van het project een advies uit te brengen over hoe destructuur van de logbestanden verbeterd kan worden om een beterinzicht te kunnen geven over het gebruik van TOPdesk Enterprise.

    Doelstelling

    Deze opdracht is te herleiden tot twee doelstellingen. Als eerste hetbeter kunnen analyseren van logbestanden. Als tweede het gevenvan advies over hoe de logging verbeterd zou kunnen worden.

    Samengevat zijn onze doelstellingen voor dit project als volgt:

    Het maken van een applicatie die het mogelijk maakt om doorde gegevens in de logbestanden, die door TOPdesk Enterpriseworden gegenereerd, te kunnen navigeren.Dit zal het eenvoudiger maken om problemen te kunnenidentificeren zodra er bij het gebruik van TOPdesk Enterpriseeen probleemsituatie ontstaat.

    Een advies geven over verbeteringen in de logging om eenbeter inzicht te verkrijgen in de achterliggende situatie en deaard van de problemen.

  • 7/26/2019 Logging Topdesk Enterprise

    8/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    7

    Projectomgeving

    De logbestanden worden door meerdere afdelingen op verschillendemanieren gebruikt. Als een klant een probleem heeft bij het gebruikvan TOPdesk Enterprise, dan zal hij contact opnemen met dehelpdesk, die vervolgens aan de klant zal vragen of hij delogbestanden kan opsturen. De helpdesk zal in de logbestandenzoeken naar opvallende gebeurtenissen, zoals foutmeldingen dieoptraden of vragen aan de database die langer duurden dangebruikelijk. Waar mogelijk, zal de helpdesk met oplossingenkomen.

    Gaat het echter om ingewikkeldere problemen, dan worden delogbestanden doorgegeven aan het testteam of aan de afdelingontwikkeling, die dieper op het probleem ingaan en eventueel desituatie zullen reproduceren. Er zijn dus drie afdelingen betrokkenbij de ontwikkeling van het analysesysteem, waarbij iedere afdelingop een andere niveau naar de log gegevens kijkt.

    Wij zullen de analyse applicatie, door ons loganalyzer genoemd,ontwikkelen in de programmeertaal Java. We maken gebruik van

    Eclipse als programmeeromgeving. Om de verschillende versies vande source code te kunnen beheren maken we gebruik van hetversiebeheersysteem Subversion. De verschillende diagrammen enafbeeldingen die in de documenten te zien zijn worden gemaakt inJUDE en StarUML.

  • 7/26/2019 Logging Topdesk Enterprise

    9/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    8

    Analyse

    De analysefase is de eerste fase van het ontwikkeltraject. Voor eensysteem wordt ontworpen zal onderzocht moeten worden in welkeomgeving het systeem gebruikt zal gaan worden, wie deverschillende gebruikers zijn en hoe de huidige situatie eruit ziet.Deze domeinanalyse is nodig voordat daadwerkelijk defunctionaliteit van het analyse systeem vastgesteld kan worden.

    Zodra duidelijk was wie de loganalyzer zouden gaan gebruiken enwat voor soort gegevens er in de logbestanden voorkomen, konbegonnen worden met het verzamelen van requirements, de eisen

    waar het programma aan moet voldoen. Wij hebben medewerkersvan diverse afdelingen genterviewd om een duidelijk beeld tekrijgen van de gewenste functionaliteiten van de loganalyzer. Aande hand hiervan konden de functionele eisen van de analyzerworden bepaald en kon een voorgesteld systeem worden opgezet.

    Gebruikers

    De door TOPdesk Enterprise gegenereerde logbestanden wordendoor medewerkers van verschillende afdelingen gebruikt bij het

    oplossen van probleemsituaties. De logbestanden bevatteninformatie over de staat van het systeem op een bepaald tijdstip.Hier kan op verschillende niveaus naar gekeken worden.

    Als een klant problemen ondervindt bij het gebruik van TOPdeskEnterprise zal hij contact opnemen met de helpdesk. De helpdeskafdeling is gespecialiseerd in het oplossen van klantproblemen optechnisch gebied en gebruikt daarbij de logbestanden.Helpdeskmedewerkers zullen aan de klant vragen om delogbestanden via email naar hen toe te sturen. Zij zullen vervolgenskijken of zij opvallende meldingen in de log gegevens tegenkomen,zoals foutmeldingen en vragen aan de database- of webserver dielanger duren dan gebruikelijk. Afhankelijk van de situatie zal dehelpdesk het probleem proberen op te lossen of doorsturen naar hettestteam of de ontwikkelafdeling.

  • 7/26/2019 Logging Topdesk Enterprise

    10/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    9

    Wanneer de helpdesk een probleemsituatie wil laten nabootsen,zullen de logbestanden worden doorgestuurd naar het testteam. Dit

    team zal de situatie aan de hand van de informatie in delogbestanden proberen te reproduceren om zo te kijken waar hetprobleem zich voor doet.De ontwikkelafdeling gebruikt de logbestanden ook om fouten op telossen of om verbeteringen aan te brengen in de software.Ontwikkelaars kijken naar specifieke details in de log gegevens omte kijken hoe bepaalde functionaliteiten werken en reageren. Opdeze manier krijgen zij een beeld van hoe TOPdesk Enterprisereageert zoals het gebruikt wordt bij klanten.

    Samengevat zijn er drie niveaus van het analyseren van logfiles. Dehelpdesk kijkt op globaal niveau naar de gegevens, de testersgebruiken de informatie om situaties te reproduceren enontwikkelaars bekijken details om dit vervolgens te verwerken in desoftware.

    Huidige situatie

    Wanneer een probleem gemeld wordt, zal de persoon die hetincident behandelt de logbestanden doorlezen totdat er een situatieis gevonden die het probleem veroorzaakt kan hebben. Dit kan een

    expliciete foutmelding zijn, maar er kunnen ook problemen aan dekant van de database of de webserver zijn, waardoor er geenantwoord terugkomt of dit ongebruikelijk lang duurt. TOPdeskEnterprise maakt gebruik van een zogenaamd rotating logsysteem,wat betekent dat er een vast aantal logbestanden wordtaangemaakt. Zodra het maximum aantal logbestanden isvolgeschreven, zal de allereerste worden overschreven door delaatste nieuwe.

    Het aantal logbestanden en de grootte daarvan kan worden

    ingesteld in de TOPdesk Enterprise applicatie. In destandaardsituatie worden er tien logbestanden aangemaakt metieder een grootte van 10Mb. Dit betekent dat er in n bestand30.000 regels kunnen voorkomen en 300.000 als alle tienbestanden zijn volgeschreven.De grote hoeveelheid logregels maakt het niet geautomatiseerddoorlezen tot een tijdrovend proces. Ten eerste kan hetidentificeren van de probleemsituatie veel tijd in beslag nemenomdat er zo veel regels moeten worden doorgelezen. Ten tweedekan door de grote hoeveelheid gegevens belangrijke informatie

    worden gemist, waardoor een probleem verkeerd wordtgenterpreteerd of zelfs helemaal niet wordt herkend.

  • 7/26/2019 Logging Topdesk Enterprise

    11/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    10

    Logbestanden

    TOPdesk Enterprise schrijft een regel naar het logbestand zodra ereen actie wordt uitgevoerd, er een vraag aan de database of dewebserver wordt gestuurd of wanneer er een fout optreedt. In deapplicatie is in te stellen welke informatie in de logbestanden moetworden getoond. Door het loglevel aan te passen wordt er meer ofminder informatie weggeschreven.

    TOPdesk Enterprise maakt gebruik van een vast formaat vanlogregels. Zo begint een regel altijd met het tijdstip vanwegschrijven. Het systeem maakt gebruik van verschillende threadsom meerdere acties tegelijk te kunnen uitvoeren. Het is van belangdat het identificatie nummer van een thread wordt vermeldt in hetlogbestand om te kunnen achterhalen op welke manier de actiewerd uitgevoerd. De gegevens die in de logbestanden voorkomenkunnen worden gezien als blocks van logregels. Afhankelijk van hettype block bestaat deze uit n of meerdere regels. Zo bestaat eenSQL query bijvoorbeeld uit een regel voor de query zelf en een regelwaarin de uitvoertijd wordt weergegeven. Een ander voorbeeld iseen melding van het laden van een bepaalde module, die maar uitn regel bestaat.

    Een logbestand kan bestaan uit vele verschillende blocks metinformatie, deze blocks kunnen in sommige situaties zelf ook blocksbevatten.

  • 7/26/2019 Logging Topdesk Enterprise

    12/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    11

    Hieronder is een stuk van een (fictief) logbestand te zien.

    1. ...2. 24-06-2007 01:01:00.000 1 Webrequest X3. 24-06-2007 01:01:02.000 1 SQL QUERY A4. 24-06-2007 01:01:04.000 2 SQL QUERY B5. 24-06-2007 01:01:04.000 1 Einde SQL Query A6. 24-06-2007 01:01:06.000 2 Einde SQL Query B7. 24-06-2007 01:01:08.000 1 Einde Webrequest X8. ...

    Webrequest X begint bij regel 2 en stopt bij regel 7. Tijdens ditwebrequest wordt er een query (A) uitgevoerd in dezelfde thread.Query A hoort dus bij webrequest X.Tevens wordt er in een ander thread een andere query (B)uitgevoerd, deze hoort niet bij webrequest X. Het block vanwebrequest X bestaat dus uit de regels 2, 3, 5 en 7. Dit kan ookgedefinieerd worden als regels 2 t/m 7 behorende bij thread 1.

  • 7/26/2019 Logging Topdesk Enterprise

    13/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    12

    In onderstaande afbeelding is te zien hoe een logbestand isingedeeld aan de hand van threads, die ieder blocks van logregels

    bevatten. Verder is weergegeven welk type blocks wij hebbengedentificeerd.

  • 7/26/2019 Logging Topdesk Enterprise

    14/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    13

    Interviews

    Nu duidelijk was wie gebruik maakt van logbestanden en naar welkegegevens wordt gekeken, moesten de functies van de loganalyzerworden bepaald. Zoals eerder genoemd maken meerdere afdelingenop verschillende manieren gebruik van logbestanden en daaromhebben wij besloten werknemers van verschillende afdelingen teinterviewen. Hierbij hebben wij gevraagd naar het huidige gebruik,in welke situaties zij logbestanden gebruiken, naar welke gegevenser dan gekeken wordt en tegen welke moeilijkheden zij aanlopen alsze nu een logbestand bekijken zonder analyseer systeem. Hiernahebben we gevraagd om aan te geven welke functionaliteiten onzeloganalyzer zou moeten bevatten om voor hen bruikbaar te zijn. Deverslagen van de afgenomen interviews zijn te vinden als bijlage Dbij dit verslag.

    Na het afnemen van de interviews hebben we de antwoorden oponze vragen met elkaar vergeleken en hier kwam uit naar voren datin ieder geval de volgende functionaliteiten gewenst waren bij elkvan de afdelingen:

    1. FilterenDe grote hoeveelheid informatie in de logbestanden zorgt al snel

    voor een vrij onoverzichtelijk beeld. Door te filteren opeigenschappen van blocks is het mogelijk alleen de relevanteinformatie te tonen. Zo moet bijvoorbeeld gefilterd kunnen wordenop alle SQL queries met een bepaalde executietijd.

    2. HighlightingHighlighting is het formateren van tekst, door middel van een kleurof een andere vorm van opmaak, met als doel het duidelijkerweergeven van bepaalde eigenschappen in de logregels.

    3.

    Database performance informatieHet gedrag van de database is belangrijk voor de werking vanTOPdesk Enterprise. Wanneer een probleemsituatie ontstaat wordtdan ook vaak gekeken naar de queries die worden uitgevoerd,hoeveel resultaten zij geven en hoeveel tijd er nodig is om dezevraag uit te voeren.Analyses van de databaseperformance, zoals de gemiddeldeuitvoertijd of een lijst van langzaamste queries, geven sneller eenbeeld van het databasegedrag dan wanneer dit handmatig uit delogfiles moet worden gehaald.

  • 7/26/2019 Logging Topdesk Enterprise

    15/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    14

    4. Webserver performance informatieTOPdesk Enterprise is een webapplicatie, wat betekent dat er veel

    communicatie met een webserver plaatsvindt. De logbestandenbevatten informatie over de paginas die zijn opgevraagd en hoelang dit duurde. Net als bij de database benvloedt ook hettijdsgedrag van de webserver TOPdesk Enterprise. Om deze redenis het van belang dat informatie over de webserver performance opeen duidelijke manier wordt weergegeven, bijvoorbeeld door eenlijst van web paginas met de bijbehorende opvraagtijd.

    5. In- en uitklappen van blocksZodra in de loganalyzer gezocht wordt naar specifieke logregels,bijvoorbeeld SQL queries, dan moet het mogelijk zijn andereblocken, die op dat moment niet relevant zijn in te klappen naarn regel. Dit geeft een beter overzicht van de logbestanden op hetmoment dat er naar een specifieke eigenschap wordt gekeken.

  • 7/26/2019 Logging Topdesk Enterprise

    16/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    15

    Functionele eisen

    Het afnemen van de interviews zorgde voor een duidelijk beeld vande verwachtingen die verschillende medewerkers hadden van eenvoor hen bruikbare loganalyzer. Nu kon worden overgegaan naarhet vaststellen van de functionele eisen waaraan de loganalyzermoet.

    Het door ons te ontwikkelen systeem moet de volgende functieshebben:

    1)Logbestanden1. Een of meerdere logbestanden openen en inlezen2.

    Indien meerdere sessies in de logbestanden wordengevonden, de gebruiker laten kiezen welke er geopend dientte worden3. De ingelezen gegevens en de daarbij behorendeeigenschappen opslaan.

    2)Filters1. Filter aanmaken2. Filter wijzigen3. Filter verwijderen

    3)Highlights1. Highlight aanmaken2. Highlight wijzigen3. Highlight verwijderen

    4)Log gegevens1. Filter(s) activeren op loggegevens2. Filter(s) deactiveren op loggegevens

    3.

    Highlight(s) activeren op loggegevens4. Highlight(s) deactiveren op loggegevens5. Gerelateerde gegevens inklappen (folding in)6. Gerelateerde gegevens uitklappen (folding out)7. Naar een bepaalde regel toegaan8. Een bepaalde thread highlighten9. Doorlopen van regels door middel van: page up, pagedown, pijltje omhoog, pijltje omlaag en het scrollwheel van demuis.

  • 7/26/2019 Logging Topdesk Enterprise

    17/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    16

    5)Database performance statistieken1. Database performance statistieken tonen: minimale,

    maximale en gemiddelde query uitvoertijd.2. Een lijst tonen van gevonden exceptions, metterugkoppeling naar het logbestand (verwijzing naar de plaatsvan de exceptions in het log)3. Webserver performance statistieken tonen: minimale,maximale en gemiddelde webserver request tijd.4. Een lijst tonen van de langzaamste SQL queries.

    Vastgesteld in de opdracht was dat wij de loganalyzer zoudenontwikkelen in Java 6, waarbij generics en annotations gebruiktworden.Een compleet overzicht van alle functionele eisen en niet functioneleeisen, zoals eisen omtrent codekwaliteit, gebruikersinterface enperformance, is te vinden in het Requirements Analysis Document (bijlage B).

  • 7/26/2019 Logging Topdesk Enterprise

    18/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    17

    Ontwerp

    Nu de requirements waren verzameld, kon een begin wordengemaakt met het ontwerp.

    Tijdens de analysefase zijn we er achter gekomen dat eenlogbestand bestaat uit meerdere regels. Uit deze regels zalinformatie moeten worden gehaald door de loganalyzer. Dehoeveelheid regels en daarmee de grootte die een logbestand kanaannemen maakt het onmogelijk deze informatie allemaaltegelijkertijd te behandelen. Alle gegevens zouden dan aanwezigmoeten zijn in het werkgeheugen en aangezien de benodigde

    ruimte kan oplopen tot een aantal gigabytes,afhankelijk van deinstellingen in TOPdesk Enterprise, is dit niet op iedere computerhaalbaar.

    Rekening houdend met dit geheugenprobleem, hebben wij gekozenvoor een structuur waarin de regels n voor n door het systeemgevoerd worden. Hierdoor zijn steeds slechts een beperkt aantalregels in het werkgeheugen aanwezig. De regels die herkend enverwerkt zijn zullen worden opgeslagen in een database.Het aantal logregels bepaalt nu de grootte van de database, maar

    de benodigde hoeveelheid werkgeheugen blijft door deze structuurbeperkt.

    Inlezen

    Om informatie uit de logbestanden te kunnen halen en er analysesop los te kunnen laten zullen de gegevens allereerst moeten wordeningelezen. Nu de keuze gemaakt was om de logbestanden per regelte behandelen, moest er een component in het systeem komen diedeze regels n voor n kon inlezen.Hiervoor is een LogReader component ontworpen, die een regelinleest uit het logbestand en voorziet van een uniek regelnummer.Dit regelnummer is nodig om de logregel te kunnen herkennenzodra hij is opgeslagen in de database. De informatie die deingelezen regel bevat en het regelnummer worden opgeslagen ineen dataobject genaamd LogLine. We hebben ervoor gekozen ominformatie door het systeem te laten stromen in de vorm vandataobjecten omdat dit de interactie tussen de verschillendecomponenten eenvoudig maakt. Een object kan gemakkelijk wordendoorgegeven aan een andere component en houdt de structuur vanhet systeem overzichtelijk.

  • 7/26/2019 Logging Topdesk Enterprise

    19/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    18

    Parsen

    In de analysefase is gebleken dat er bepaalde elementen zijn in delogbestanden die bij iedere regel voorkomen. Zo bevat een regelaltijd een tijdstip, een threadnummer en de overige inhoud.

    Een regel die is ingelezen door de LogReader kan ontleed worden inkleinere gedeeltes, het parsen. Er kan een verdeling wordengemaakt tussen de algemene, altijd aanwezige informatie en despecifieke informatie die verschilt per blocktype.

    Wij hebben ervoor gekozen het ontleden van eigenschappen uitdeze twee groepen op verschillende plekken te laten plaatsvinden.Het algemene gedeelte, waaronder de tijd, het threadnummer enhet regelnummer vallen, is van belang voor het omvormen van deingelezen regels tot blocks. Ook zijn deze eigenschappen nodig omde informatie in de juiste volgorde aan de gebruiker te kunnentonen.

    Deze algemene eigenschappen worden uit de ingelezen logregelsgehaald door de LogParser component. Deze krijgt een LogLineobject van de LogReader aangeleverd. Op dat moment is dit nietmeer dan een object met een regelnummer en de overige inhoud

    van de logregel. De LogParser haalt uit deze overige inhoud hettijdstip, het threadnummer en voegt deze waardes toe alseigenschappen aan het LogLine object.

    Op dit moment zijn alle algemene eigenschappen verzameld enkunnen deze worden toegevoegd aan de database.

  • 7/26/2019 Logging Topdesk Enterprise

    20/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    19

    Blocks herkennen

    De LogParser component haalt de algemene eigenschappen uit eeningelezen logregel en slaat deze op in de database.Uit deze verzameling van regels zullen blocks herkend moetenworden.Wij hebben gekozen voor een systeem van event handlers. Voorieder blocktype dat herkend moet worden zal een event handlerworden aangemaakt. Deze handlers kijken of de regel deel uitmaakt van het type block dat zij herkennen.In de analyse fase is echter duidelijk geworden dat verschillendethreads en verschillende blocktypes door elkaar kunnen lopen ineen logbestand.Om deze reden moest er dus een component ontworpen worden diede event handlers naar de ingelezen regel kon laten kijken, maardie tegelijkertijd rekening hield met meerdere blocktypes en doorelkaar lopende threadnummers. Dit heeft geleid tot het ontwerpenvan de ThreadEventManager.Dit component kijkt welke event handlers er aanwezig zijn enkoppelt deze aan een threadnummer, zodat per thread gekeken kanworden naar de gebeurtenis in het logbestand. Een regel die deThreadEventManager binnen krijgt van de LogParser wordt naariedere beschikbare event handler gestuurd. De event handlers

    zullen aangeven of zij een regel hebben herkend, zodat deThreadEventManager weet of een regel wel of niet tot een bekendblocktype behoort.

  • 7/26/2019 Logging Topdesk Enterprise

    21/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    20

    Eventhandlers

    De loganalyzer werkt met een dynamisch event handler systeem.Dit betekent dat de event handlers gescheiden zijn van de rest vanhet programma. Het voordeel hiervan is dat er nieuwe eventhandlers kunnen worden toegevoegd of dat er aanpassingengemaakt kunnen worden in de bestaande event handlers. Wijhebben hiervoor gekozen omdat de loganalyzer op deze maniervoorbereid is op wijzigingen in de manier van logbestandenwegschrijven.

    Wij hebben ernaar gestreefd de event handlers zo eenvoudig enintutief mogelijk te houden, zodat het mogelijk is om op eengemakkelijke manier zelf event handlers toe te voegen. Hiervoor iseen handleiding geschreven, die te vinden is als bijlage bij ditdocument.

    De taak van een event handler is het herkennen van blocks.Ingelezen regels worden door de log parser naar de thread eventmanager gestuurd. Deze heeft een lijst van alle aanwezige eventhandlers en koppelt deze aan een threadId omdat de regels binneneen block hetzelfde threadId hebben.De regel wordt doorgestuurd naar alle handlers, die vervolgens

    kijken of er voor hen herkenbare informatie in voor komt. Wanneerdit zo is zal de event handler proberen een start- en een eindregelproberen te herkennen en op deze manier een block identificeren.Deze regels moeten worden doorgegeven aan de database, zodatde relatie tussen een block en de bijbehorende logregels duidelijk is.

    Nadat een block is herkend kan de eventhandler eigenschappen uitde regels halen. Deze moeten worden toegevoegd aan de databaseen worden gekoppeld aan het blockId van het zojuist aangemaakteblock.

    Wanneer een event handler een block op de juiste manier heeftherkend, zal dit worden doorgegeven aan de thread event managerzodat deze weet of een block is behandeld of niet.

    Het kan voorkomen dat een block niet compleet is. De TOPdeskapplicatie kan bijvoorbeeld midden in een actie gestopt zijn of eenklant kan maar een gedeelte van een logbestand hebbendoorgegeven. Zo kan het voorkomen dat er bijvoorbeeld wel eenstartregel is maar geen eindregel. Deze blocken worden in dedatabase voorzien van de eigenschap unfinished. De gebruiker kan

    ook zoeken naar deze eigenschap, aangezien dit een oorzaak zoukunnen zijn van een probleemsituatie.

  • 7/26/2019 Logging Topdesk Enterprise

    22/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    21

    In de onderstaande afbeelding is weergegeven hoe de ingelezenlogregel door het systeem gevoerd wordt en welke elementen bij de

    verschillende componenten van belang zijn.

    Na het ontwerpen van de verschillende componenten hebben wehiervoor klassendiagrammen ontworpen. Aan de hand hiervan konde loganalyzer in de volgende fase gemplementeerd worden.Deze klassendiagrammen zijn te vinden in het design document,toegevoegd als bijlage C aan dit verslag.

  • 7/26/2019 Logging Topdesk Enterprise

    23/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    22

    Database

    Een beperkte hoeveelheid werkgeheugen en een groot aantallogregels maakte het niet mogelijk alle ingelezen informatie directin het werkgeheugen op te slaan.We hebben ervoor gekozen om de regels en hun eigenschappen opte slaan in een database zodra zij zijn herkend door de LogParser ende event handlers.

    De logparser haalt algemene informatie die voor iedere regelaanwezig is, zoals de tijd en het threadId, uit de ingelezen logregel.Er wordt een regelnummer toegekend aan iedere ingelezen regelom zo een unieke sleutel te hebben voor iedere logregel. Zodra deeventhandlers een compleet block van regels hebben herkend, watbetekent dat er een begin- en een eindregel is met eventueletussenliggende regels, wordt dit block weggeschreven in dedatabase.De eventhandler die het block heeft herkend zoekt vervolgens naareigenschappen behorend bij dat blocktype en voegt deze toe aan dedatabase. Ieder block krijgt een uniek blockId, waar vervolgens deeigenschappen aan gekoppeld kunnen worden.

    Wij hebben gekozen voor het opslaan van de eigenschappen in de

    vorm van een key en een value. De naam van de eigenschap vormtde key en de eigenschap zelf de value. Het is de taak van de eventhandlers om deze eigenschappen, een combinatie van een naam eneen waarde, toe te voegen aan de database.Zo is de database voorbereid op eventuele veranderingen of nieuweinformatie in de logbestanden, het systeem van een key en eenvalue zal immers niet veranderen.Er hoeven nu alleen nieuwe eventhandlers worden toegevoegdwanneer er nieuwe eigenschappen herkend moeten worden. Dedatabase structuur is hier al op voorbereid.

    Samengevat zijn er drie entiteiten die voorkomen in het systeem:regels, blocks van regels en eigenschappen van die blocks die we inons database model respectievelijk lines, blocks en block propertiesnoemen.

    Een regel behoort tot een block als het threadId overeenkomt metdie van het block en het regelnummer zich tussen de begin- eneindregel van het block bevindt.

    De relatie tussen een block en de bijbehorende blockproperties ishet blockId, dat uniek is voor ieder block in de database.

  • 7/26/2019 Logging Topdesk Enterprise

    24/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    23

    Hieronder is het entity relationship diagram weergegeven van onsdatabase ontwerp.

  • 7/26/2019 Logging Topdesk Enterprise

    25/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    24

    Logregels en eigenschappen tonen

    We hebben ervoor gekozen om in de loganalyzer het tonen van loggegevens en performance statistieken als twee gedeelten te zien.Er is daarom dan ook voor een gebruikersinterface gekozen waarbijde gebruiker moet kiezen of hij op dat moment logregels getoondwil hebben of performance informatie wil zien.

    Om de ingelezen logregels aan de gebruiker te tonen zijn een aantalcomponenten ontworpen.Er is een LogViewer component en een PerformanceViewercomponent die als tabbladen worden weergegeven op de grafischehoofdcomponent, genaamd MainWindow.

    De LogViewer zal de logregels laten zien zoals deze zijn ingelezendoor de LogReader en zal de eigenschappen tonen die de LogParserheeft herkend. Dat wil zeggen dat het regelnummer, het tijdstip,het threadnummer en de overige inhoud van de regel zal wordengetoond. Deze informatie kan rechtstreeks uit de database wordengehaald.

    Eventuele instellingen die gemaakt kunnen worden, zoals hetinstellen van filters en highlights ( zie de hoofdstukken over filters

    en highlighting hierna ), moeten geplaatst worden op inklapbaregedeelten van de LogViewer. Zo wordt er geen onnodige ruimteingenomen op het moment dat de instellingen niet aangepasthoeven te worden.

    Performance informatie zal worden getoond door dePerformanceViewer component. Deze zal informatie tonen zoals deminimale, maximale en gemiddelde uitvoertijd van SQL queries enwebserver requests. Ook zal er een lijst met excepties die zijnopgetreden worden getoond, evenals een lijst met de langzaamste

    queries. De informatie die hier voor nodig is zal worden gegevendoor een aparte component die verantwoordelijk is voor hetberekenen van performance gegevens, de PerformanceCalculator.

  • 7/26/2019 Logging Topdesk Enterprise

    26/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    25

    Filters

    Verschillende blocktypes bevatten verschillende eigenschappen. Zobevat een SQL block de uitgevoerde query, de uitvoertijd en detabel waarin gezocht is. Een ander type block kan dan ook heleandere eigenschappen bevatten.

    Gezien het feit dat er verschillende blocktypes zijn waar naargezocht kan worden, was het nodig om de loganalyzer op bepaaldevoorwaarden te kunnen laten filteren. De loganalyzer moest eenoverzichtelijk beeld kunnen geven van de op dat moment relevanteinformatie.

    De eigenschappen waar een gebruiker naar zou kunnen zoeken zijnopgeslagen in de database. We hebben er dan ook voor gekozen omvoorwaarden in te kunnen stellen aan de hand van dezeeigenschappen. Zon voorwaarde kan opgesteld worden aan dehand van de key en de value in de BLOCKPROPERTY tabel van dedatabase. Door een operator tussen de key en de value te plaatsenkunnen vergelijkingen worden opgesteld.Om goed te kunnen filteren moesten verschillende operatorskunnen worden gekozen. Wij hebben de volgende zes operators aanhet systeem toegevoegd : groter dan, kleiner dan, gelijk aan,

    ongelijk aan, groter-gelijk aan en kleiner-gelijk aan.

    Vervolgens moest er een component ontworpen worden waarindeze voorwaarden konden worden opgeslagen. Hiervoor is decomponent FilterCondition gekomen. Deze component bevat denaam van de eigenschap, de gekozen operator en de waardewaarmee vergeleken moet worden.We wilden toestaan dat er meerdere voorwaarden tegelijk kondenworden gekozen en hiervoor hebben wij de componentFilterSpecification ontworpen, die een verzameling van

    FilterConditions bevat.

    Omdat wij gebruik maken van een database kan er gefilterd wordenmet behulp van SQL queries.Een FilterCondition vormt een gedeelte van de WHERE-clause in dequery. Als een FilterSpecification meerdere condities heeft, dan zalhij alle FilterConditions samenvoegen tot n WHERE-clause.

    Er was nu echter nog n component nodig die de gehele WHERE-clause kon aanmaken.Hier hebben wij de FilterProcessor component

    voor ontworpen.

  • 7/26/2019 Logging Topdesk Enterprise

    27/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    26

    Wanneer de gebruiker aangeeft te willen filteren, geneert deFilterProcessor een SQL query die uitgevoerd wordt op de database.

    De database geeft nu alleen de logregels terug die het resultaat zijnvan de uitgevoerde query en op deze manier krijgt de gebruikeralleen de resultaten te zien die voldoen aan de opgegevenvoorwaarde of voorwaarden.

    Uit de interviews die wij in de analysefase hebben gehouden bleekdat er op verschillende manieren gefilterd moest kunnen worden.Sommige mensen wilden graag alleen de blocks van regels zien dievoldoen aan een bepaalde voorwaarde en anderen wilden graag deblocks die aan die voorwaarde voldoen er uit filteren.

    We hebben deze twee manieren van filteren dan ook aan hetontwerp toegevoegd. Het is voor de gebruiker mogelijk om in deLogView component op een instellingenpaneel genaamdFilterSettings in te stellen welke manier van filteren gebruikt moetworden.Op dit instellingenpaneel kan ook gekozen worden voor hetaanmaken, wijzigen of verwijderen van filters. Tevens kan hieropeen filter aan en uit worden gezet.

    Onderstaande afbeelding geeft de dataflow weer tijdens hetfilterproces. De FilterProcessor zet alle condities die aanwezig zijn inde Filterspecifications om naar een SQL-query.

  • 7/26/2019 Logging Topdesk Enterprise

    28/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    27

    Highlighting

    Tekst met een andere opmaak, zoals bold, italic, underlined, of eenandere kleur valt eerder op in een grote verzameling regels.Wanneer naar een bepaald probleem wordt gezocht, kan de eneeigenschap op dat moment belangrijker zijn dan de andere. Eenvoorbeeld is het zoeken naar database problemen, waar deuitvoertijd van groot belang is.

    Tijdens de analysefase is gebleken dat gebruikers naast het filterenook graag de mogelijkheid willen hebben om eigenschappen van

    een opmaak te voorzien, het highlighten.

    We wilden graag dat de gebruiker zelf highlights kan aanmaken.Daarbij hebben we gekozen om dit op dezelfde manier te doen alsbij het aanmaken, wijzigen en verwijderen van filters. Hiervoor konook een zelfde soort settingspaneel gebruikt worden, deHighlightSettings component.

    Highlights konden ook gebruik maken van de aanwezigeeigenschappen in de database. We hebben de gebruiker zelf laten

    kiezen uit verschillende vormen van opmaak. Zo kan er een kleurgekozen worden voor de te highlighten eigenschap en kan de tekstals bold, italic of underlined worden getoond.

    Een highlight wordt ingesteld in een HighLightSpecification. Dezebevat een naam van de eigenschap en de daarbij behorendeopmaak.

    Deze highlight methode wordt aangestuurd door deHighlightProcessor.Deze haalt uit de BLOCKPROPERTY tabel in de database de waardebij de opgegeven eigenschap naam en kijkt of deze voorkomt in dete tonen logregels. Zodra er een overeenkomst is gevonden zal hijdit gedeelte in de logregel voorzien van de ingestelde opmaak.

  • 7/26/2019 Logging Topdesk Enterprise

    29/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    28

    De afbeelding hieronder laat zien hoe het highlight proces in zijnwerk gaat.

    De HighlightProcessor krijgt een LogLine dataobject binnen. Hiernawordt er in de HighlightSpecifications gekeken welke eigenschappenvan een bepaald formaat moeten worden voorzien. De waarden vandeze eigenschappen worden vervolgens opgehaald uit de database.De HighlightProcessor kijkt of deze waarden voorkomen in delogregel en voorziet ze indien aanwezig van de ingestelde opmaak.De opgemaakte logregels worden doorgestuurd naar de LogViewercomponent om ze te tonen aan de gebruiker.

    Performance informatie tonen

    Informatie over de performance van de database en de webserveris te vinden in de opgeslagen eigenschappen in de database. Hierzijn eigenschappen opgeslagen als query uitvoertijden en

    opvraagtijden van webpaginas.

    SQL biedt de mogelijkheid om met functies de minimale, maximaleen gemiddelde tijden te berekenen.Zodra deze functies in een component verwerkt zouden worden,kon deze gebruikt worden om performance informatie aan degebruiker te tonen via de PerformanceViewer.

    We hebben hiervoor de component PerformanceCalculatorontworpen, die informatie uit de database haalt en opslaat in een

    PerformanceResult dataobject. Dit object kan worden doorgegevenaan de PerfomanceViewer, die vervolgens de gegevens kan tonen.

  • 7/26/2019 Logging Topdesk Enterprise

    30/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    29

    Implementatie

    In dit hoofdstuk zal beschreven worden hoe het proces van hetimplementeren is verlopen aan de hand van het opgesteldeontwerp.Tijdens het implementeren kwamen wij een aantal problemen tegenwaarvoor een oplossing bedacht moest worden. Soms was hiervooreen aanpassing aan het ontwerp noodzakelijk. We zullen perbelangrijk onderdeel laten zien hoe dit is geimplementeerd en welkekeuzes hierbij zijn gemaakt.

    Prototype

    Tijdens het ontwerp hebben wij een prototype van de LogAnalyzergemaakt. Dit prototype gaf ons een duidelijker beeld van hoe hetgehele systeem er uit moest komen te zien en welke componentendaar allemaal voor nodig waren. Tijdens het ontwikkelen van ditprototype hebben wij dan ook gekozen voor het gebruik van eendatabase voor de ingelezen logregels, omdat dit niet in hetgeheugen bleek te passen. Bij het inlezen van vijf logbestandenkregen wij meldingen dat er niet genoeg geheugen beschikbaarwas. Zo konden wij alvast bekend raken met het gebruik van een

    database en kwamen wij tot de conclusie dat de Derby database,die wordt meegeleverd bij Java versie 1.6, een geschikte kandidaatwas.Een ander voordeel van het ontwikkelde prototype was dat we degebruikers alvast een idee konden geven hoe de LogAnalyzer er uitzou komen te zien. Zij hebben de mogelijkheid gekregen hierfeedback op te geven die wij vervolgens weer konden verwerken inons ontwerp.

    Database

    De rode draad door het implementatie proces is de database. Wijhebben gebruik gemaakt van de Derby database. Dit is eenembedded database, wat wil zeggen dat de gebruiker in principeniet hoeft te merken dat er in het systeem een database wordtgebruikt voor het opslaan van gegevens. Ons was het idee gegevendat Derby als database in het werkgeheugen kon draaien, wat eengrote snelheidswinst zou opleveren aangezien dit nu eenmaalsneller is dan iets op de harde schijf opslaan. Deze functie bleekechter nog niet te bestaan, wat betekende dat de database toch op

    de harde schijf neergezet moest worden.

  • 7/26/2019 Logging Topdesk Enterprise

    31/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    30

    Inlezen en parsen van logregels

    In het ontwerp hebben wij bepaald dat de logregels ingelezenworden door de LogReader component. De algemene gegevensworden uit de regels gehaald en opgeslagen in de database door deLogParser. Als laatste worden er blocks van regels herkend door deeventhandlers. Per blocktype worden hiervan de specifiekeeigenschappen opgeslagen in de database.

    Op dit moment vonden er voor het inlezen en volledig parsen vaneen logregel drie database operaties plaats. Als eerste het opslaanvan de regel met zijn algemene eigenschappen, vervolgens hetopslaan van het block waar de regel bij hoort en als laatste n ofmeerdere eigenschappen die door de event handlers zijn herkend.Bij een logbestand van 30000 regels duurde het inlezen, parsen entoevoegen aan de database gemiddeld drie minuten, wat neerkwamop zes milliseconden per logregel. Aangezien de logbestandenhonderdduizenden logregels kunnen bevatten, is deze tijd voor degebruiker niet acceptabel. Als een helpdeskmedewerker een klantaan de telefoon wil helpen die een logbestand heeft doorgegeven,dan wil de medewerker niet dat de klant eerst drie minuten moetwachten op het verwerken van alle gegevens.Onze dagelijkse begeleider, Robbert Jan, stelde voor hier een

    bespreking over te houden met Roel Spilker, de opdrachtgever.Bij deze bespreking kwamen vier suggesties aan bod:

    1. Het verlagen van de transaction isolation level van dedatabase. Deze bepaalt de manier van toevoegen aan dedatabase met de beveiliging die daarbij komt kijken. Omdatonze loganalyzer geen ingewikkelde bewerkingen uitvoertwaarbij fouten kunnen optreden kon dit level omlaag.

    2. Gebruik maken van bulk imports. Dit betekend dat eerst alleinformatie die moet worden toegevoegd wordt verzameld endaarna in n keer aan de database toegevoegd. Dit is sneller

    dan steeds per regel een verbinding met de database op testellen en informatie toe te voegen.

    3. Indices pas aanmaken nadat alle gegevens ingevoerd zijnevenals de primary keys. Het direct aanmaken van primarykeys en indices vertraagt het proces van toevoegen.

    4. Het verlagen van het logging level van de database. Dedatabase bewaart de uitgevoerde operaties zodat dezekunnen worden hersteld wanneer er iets fout gaat. Zoals bijpunt 1 al vermeld heeft onze loganalyzer geen extraveiligheids eisen aan de kant van de database nodig en kan

    dit level worden verlaagd om snelheidswinst te behalen.

  • 7/26/2019 Logging Topdesk Enterprise

    32/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    31

    We hebben al deze mogelijkheden bekeken en uiteindelijk is naarvoren gekomen dat het verlagen van het transaction isolation level

    het geheel drie keer sneller maakte. Dit was positief voor dewachttijd maar nog steeds niet acceptabel.Het verlagen van het logging level bleek niet mogelijk te zijn voorde Derby database.We hebben toen besloten eerst alle informatie die we wildenopslaan weg te schrijven naar een csv ( comma-separated values )tekstbestand en hierna alles in n keer aan de database toe tevoegen. Hiervoor moest wel wat code aangepast worden, maarhierdoor werd het gehele proces 16 keer sneller. Dit was binnen deacceptabele snelheid.

    Tonen van logregels

    De LogViewer component kijkt naar de aanwezige blocks en toontvervolgens de bijbehorende regels. Tijdens de interviews in deanalysefase kwam meerdere keren naar voren dat gebruikers graagblocks willen kunnen inklappen, zodat alleen de eerste regel nogzichtbaar is. Het opvragen van de blocks met de daarbij behorenderegelnummers bleek een traag proces te zijn. Om te bepalen welkeregels bij een block horen worden de regelnummers vergeleken metde begin- en eindregel van een block. Als een regelnummer

    daartussen valt hoort hij bij dat block. Dit bleek voor de Derbydatabase een langzame operatie, iets wat we niet hadden ingeschattijdens het ontwerpen van het database model.De oplossing voor dit probleem was het toevoegen van eenkoppeltabel in de database. Deze tabel bevat steeds eenregelnummer en het bijbehorende blockId. Nu was de informatiedirect beschikbaar en kon de langzame operatie vermeden worden.In het vernieuwde database model is nu een extra entiteitLINE_TO_BLOCK opgenomen.

  • 7/26/2019 Logging Topdesk Enterprise

    33/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    32

    Deze aanpassing ziet er als volgt uit in het ERD:

    Filters

    Een filter (in het systeem een FilterSpecification) bestaat uit n ofmeerdere voorwaarden (FilterConditions). Deze voorwaardenbevatten de key van een block eigenschap, een operator (gelijkaan, ongelijk aan, groter dan, groter gelijk aan, kleiner dan, kleinergelijk aan) en een value. Een FilterCondition accepteert een blockals dit block de eigenschap bevat en de expressie "KEY OP VALUE"waar is. Hierbij is KEY de naam van de eigenschap zoals deze in dedatabase voorkomt, OP de operator die is ingesteld en VALUE dewaarde waarmee vergeleken moet worden.Zodra er een filter wordt aangezet, wordt de scrollbar mappingopnieuw aangemaakt. Deze scrollbar mapping bestaat uit deregelnummers en blockids van de blocken die door alle filtersgeaccepteerd worden en is nodig voor het tonen van de juisteregels op de juiste plaats.De regelnummers en blockids worden aan de database opgevraagdaan de hand van een SQL query.

    Deze query bevat 2 inner selects welke beide per block een countbevatten.

  • 7/26/2019 Logging Topdesk Enterprise

    34/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    33

    De eerste select heeft per block een count voor het aantaleigenschappen dat geaccepteerd wordt door de filters. De tweede

    select heeft per block een count voor het aantal eigenschappen datgeaccepteerd kan worden door de filters (een eigenschap kan alleengeaccepteerd worden als deze dezelfde eigenschap key heeft alswaar het filter op werkt).Als het aantal geaccepteerde eigenschappen voor een block evengroot is als het aantal eigenschappen dat kan worden geaccepteerd,en dit aantal is groter dan nul, dan wordt dit block geaccepteerddoor het filter en komt deze dus in de blockmapping. In het ERD iste zien dat de blockproperty tabel bestaat uit rows met daarin eenblockId, een eigenschap key en een eigenschap value.De eerste select bekijkt per eigenschap key aan welke conditiesdeze moet voldoen (dit kunnen er dus meer dan n zijn) en voegtdeze samen tot 1 SQL WHERE-clause. Deze SQL conditie wordtgescheiden door logische ANDs (KEY = 'ExecuteTime' AND VALUE >200 AND VALUE < 300). De condities op de verschillendeeigenschap keys zijn van elkaar gescheiden door ORs omdat dedatabase row voor row door de tabel heen gaat (KEY ='ExecuteTime' ...) OR (KEY = 'Query' ...).

    Bij deze manier van filteren worden dus alleen de blocks getoondwaarbij de eigenschappen voldoen aan de ingestelde voorwaarden.

    De tweede manier van filteren werkt precies omgekeerd. De blockswaarvan de eigenschappen voldoen aan de voorwaarden wordenweggelaten en alle overige blocks worden aan de gebruikergetoond. Doordat deze manier van filteren de inverse is van deeerste manier, betekende dit geen ingrijpende verandering aan hetfiltersysteem. De ANDs worden vervangen door ORs en deoperators moeten worden genverteerd.

    Tijdens het implementeren van de filters bleken de databaseoperaties die hiervoor nodig waren veel tijd in beslag te nemen.

    Het toevoegen van indices versnelde dit proces. De database hoefthierdoor minder lang te zoeken naar zijn records. Indices toevoegenbetekende niet altijd een snelheidswinst, soms werd het dooronjuiste indices zelfs vertraagd. Uiteindelijk hebben wij gekozenvoor het toevoegen van indices op het regelnummer in de LINEtabel, het blockId in de LINE_TO_BLOCK tabel, het blockID in detabel BLOCKPROPERTY en in dezelfde tabel ook op key. Op dezeattributen wordt het meeste gezocht en daarom kon hier ook demeeste snelheidswinst worden behaald.

  • 7/26/2019 Logging Topdesk Enterprise

    35/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    34

    Event handlers

    Event handlers worden dynamisch geladen dmv de in Java6toegevoegde Service Provider API. We hebben de event handlers inaparte jar files geplaatst. Hierdoor zijn ze eenvoudig toe te voegenof te verwijderen door slechts de jar toe te voegen of teverwijderen.

    Alle implementaties van event handlers zijn subklasses van deabstracte klasse AbstractEventHandler. Deze abstracte klasse bevatfuncties die elke event handler nodig zal hebben, bijvoorbeeld voorhet bewaren van logregels die behoren bij een block totdat heteinde van een block is herkend. Daarnaast zijn functies aanwezigvoor het wegschrijven van informatie over een block en zijnbijbehorende eigenschappen.

    De logparser heeft voor ieder threadnummer een instantie van alleevent handlers. De event handlers krijgen hun input regel voorregel door de LogParser via de ThreadEventManager toegestuurd.Wanneer een eventhandler een regel herkend die behoort bij hetblocktype dat deze handler identificeert dan word de methodeaddLine() aangeroepen om aan te geven dat deze regel tot hetblock behoort.

    Wanneer het einde van een block herkend wordt zal de eventhandler writeBlockToDb() aanroepen waarna de informatie over hetblock wordt weggeschreven naar het bulk import bestand, datvervolgens aan het einde wordt toegevoegd aan de database.Hierna zal de event handler de benodigde eigenschappen van hetblock wegschrijven door het aanroepen van de methodewriteBlockproperty().

    Voor iedere tabel in de database wordt een apart bulk importbestand aangemaakt. Zodra er geen regels meer in de logbestanden

    voorkomen worden deze in n keer toegevoegd aan de databaseen daarna voorzien van indices.

    Highlighting

    Het implementeren van de highlighting functie verliep zonderproblemen, behalve dat het scrollen door de logregels traag bleek tezijn na het activeren van highlights. Dit bleek te komen doordat debenodigde informatie voor het tonen van de highlights niet n keermaar drie keer werd opgevraagd. Nadat dit was aangepast werkten

    de highlights met acceptabele snelheid, ook al bleek het tonen vanopgemaakte tekst zwaarder voor de LogViewer dan gewone tekst.

  • 7/26/2019 Logging Topdesk Enterprise

    36/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    35

    Testresultaten

    Na de implementatie van de loganalyzer aan de hand van hetontwerp moest er uitgebreid getest worden.TOPdesk maakt voor zijn eigen producten gebruik van detestafdeling. Het voordeel was dat wij ook gebruik konden makenvan deze ervaren testers voor de loganalyzer.

    Nadat verschillende testers onze loganalyzer hadden getest kwamen

    de onderstaande punten naar voren waarvoor wij de volgendeoplossingen hebben bedacht:

    Regels die door geen van de event handlers herkend zijnworden niet getoond:Dit hebben wij opgelost door een extra event handler toe te voegen,die alle niet herkende logregels als blocken ziet en ze dus alsnogaan de database toevoegt. Dit voorkwam dat er wijzigingen in onsmodel gemaakt moest worden om regels die niet als blockenvoorkwamen in de database toch te tonen.

    Er is geen mogelijkheid om zelf te zoeken in de tekst:De LogViewer component vraagt realtime zijn informatie op uit dedatabase. Dit betekent dat als er gescrollt wordt in het tekstvak, ernieuwe regels uit de database worden gehaald. Deze structuur zorgtervoor dat het niet mogelijk is om een zoekopdracht op alle regelsuit te voeren. Om dit te compenseren hebben wij een functietoegevoegd die een woord of zin waar naar gezocht wordt kanhighlighten.

    Er is geen mogelijkheid om hele threads eruit te filteren:

    Naar aanleiding van dit commentaar hebben wij besloten hetthreadnummer ook als eigenschap op te slaan in deBLOCKPROPERTY tabel. Nu kunnen hier ook filters voor wordengemaakt.

  • 7/26/2019 Logging Topdesk Enterprise

    37/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    36

    Highlights op RequestTime, doen ook een highlight ophetzelfde getal in de REQUESTED en REQUEST END regel,

    bijvoorbeeld in een request van 1 ms worden alle '1'-engehighlight in de REQUESTED en REQUEST END regel van datrequest:De oplossing hiervoor is door de eventhandlers eigenschappen zoalsuitvoertijd op twee manieren op te slaan. De integer waarde omvergelijkingen op los te laten en de string waarde, bijvoorbeeld 1ms als tweede eigenschap om op te highlighten.

    Scrollwheel scrollt horizontaal ipv verticaal:Dit is opgelost door de juiste Java listener toe te passen op deverticale scrollbar.

    Pijltjes toetsen werken niet om te bladeren:Er kon al gescrolld worden door de toetsen page-up en page-downte gebruiken. Na dit commentaar hebben we de LogVieweraangepast, zodat met de pijltjes toetsen per regel gescrollt kanworden.

    Het is niet duidelijk waarom bij het openen van een log eennaam moet worden opgegeven, er is namelijk geenmogelijkheid om daar op een later moment iets mee te doen:

    We hebben de LogAnalyzer zodanig aangepast, dat nu bij hetopstarten gekozen kan worden tussen reeds bestaande sessies ofhet aanmaken van een nieuwe. Als gekozen wordt voor eenbestaande sessie gebruikt de LogAnalyzer de bestaande databaseen hoeft niet opnieuw te worden ingelezen. Wanneer de gebruikerkiest voor een nieuwe sessie, zal gevraagd worden om delogbestanden die moeten worden ingelezen te selecteren en wordteen nieuwe database aangemaakt.

    Het zou handig zijn om informatie over de sessie te zien,

    zoals de TOPdesk Enterprise versie, de gebruikte databaseen de Java versie:We hebben besloten een extra panel toe te voegen aan deLogViewer waarop deze informatie wordt getoond. Net als bij deandere panels in de LogViewer component kan deze wordeningeklapt om ruimte te besparen.

  • 7/26/2019 Logging Topdesk Enterprise

    38/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    37

    Nadat wij een ontwikkelaar met de LogAnalyzer hebben latenwerken kwam deze met het idee dat een functie om deadlocks te

    detecteren gewenst zou zijn.We hebben besloten deze functie dan ook te implementeren omdatdit veel waarde toevoegt aan de LogAnalyzer.

    De gebruiker kan nu verschillende threads naast elkaar uitzettentegen de tijd. Op deze manier is te zien welke threads welke actiesop hetzelfde moment uitvoeren en waar conflictsituaties optreden.

  • 7/26/2019 Logging Topdesk Enterprise

    39/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    38

    Conclusies en aanbevelingen

    Tijdens het ontwikkelproces van de loganalyzer zijn er meerdereideeen naar voren gekomen voor de verbetering van de logging vanTOPdesk Enterprise.

    De eerste 2 suggesties zijn inhoudelijk. Als eerste het gebruik vanlog levels. Er is al gesproken over het gebruik hiervan, maar hierkwam uit naar voren dat niet elke ontwikkelaar gebruik maakt van

    de juiste levels of er zelfs helemaal geen gebruik van maakt. Hettoevoegen van het log level van een regel aan de log bestanden zelfzou meer informatie bieden over de relevantie van een regel tijdenshet analyseren van een logbestand.Dit zou per block of zelfs per regel toegepast kunnen worden. Als defilters hier ook gebruik van gaan maken, kan het bij het zoekennaar een probleem geen kwaad om alle loglevels te loggen naar hetlogbestand ipv slechts een deel.

    De tweede suggestie is het indelen van de log gegevens in

    categorieen aan de hand van de componenten die de actieveroorzaken. Als er een SQL query uitgevoerd wordt bij het startenvan TOPdesk Enterprise, is deze niet relevant bij het zoeken naarperformance problemen met de queries van de webpagina's. Als erper regel of block wordt aangegeven bij welk component de actiehoort, kan hier ook op gefilterd worden, wat minder irrelevanteresultaten tot gevolg heeft.

    De derde suggestie heeft betrekking op het formaat van delogbestanden. Op dit moment worden ze als plain text

    weggeschreven. Dit heeft als gevolg dat er een grote hoeveelheidschijfruimte nodig is. Zeker als er een laag loglevel is ingesteld. Alsde logbestanden gecomprimeerd worden tijdens het wegschrijvenkan dit een grote besparing van schijfruimte tot resultaat hebben.Voor de loganalyzer is een kleine aanpassing voldoende om hiermeeom te gaan.

    In het begin van het project heerste er het idee dat een anderestructuur, bijvoorbeeld XML, een goede suggestie zou zijn voor delogbestanden. Dit blijkt naar ons idee niet noodzakelijk te zijn, dehuidige structuur biedt alle informatie die nodig is en XML zou geenstructurele voordelen bieden boven de huidige situatie.

  • 7/26/2019 Logging Topdesk Enterprise

    40/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    39

    Reflectie

    Danny Verloop

    Het bachelorproject is mij goed bevallen. Tijdens de andereprojecten in de bachelorfasen moest er naast het project ook nogcollege gevolgd worden en practica gemaakt worden, dit beperktede beschikbare tijd voor het project. Gedurende het 4de kwartaalhebben wij bijna alle tijd kunnen besteden aan het bachelorproject,wat in mijn ogen een beter eindresultaat als gevolg heeft.

    Dat wij hebben gekozen voor een opdracht van een bedrijf is eengoede beslissing geweest. Het werken binnen een bedrijf was eenwelkome afwisseling. De keuze voor een opdracht van topdesk blijktnaderhand ook een goede te zijn, er heerste een prettige sfeerbinnen het bedrijf, de collega's waren goed gezelschap en debegeleiding was ook goed.

    De samenwerking met Martijn was uitstekend. Het feit dat de groepuit maar 2 personen bestond maakt de communicatie simpel eneffectief.Beslissingen konden snel gemaakt worden. Ideeen bespreken enoplossingen voor problemen bedenken tijdens het tafel tennissen isook iets dat ik iedereen kan aanraden.

    Wat mij tegenviel aan het project waren de problemen met dedatabase performance. Dit kwam 3 of 4 keer voor tijdens deimplementatie periode en kostte ons elke keer een middag om op telossen. Verder waren er geen onverwachtte problemen watnatuurlijk prettig is.

  • 7/26/2019 Logging Topdesk Enterprise

    41/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    40

    Martijn de Gans

    Het bachelorproject is het afsluitende project van de bachelorstudieen vormt daarom ook een belangrijk onderdeel van het laatste jaar.Wat ik zeer interessant vond aan dit project was de mogelijkheidom de opdracht binnen een echte bedrijfsomgeving uit te voeren.Hierdoor kon een ontwikkeltraject nu eens meegemaakt wordenbinnen een commercieel ingesteld bedrijf.Wat duidelijk naar voren komt is dat binnen zon bedrijf de maniervan ontwikkelen heel anders is dan ons wordt geleerd op de TU. Zoblijkt dat er weinig tot geen documenten worden opgesteld en geenverschillende fases worden nageleefd zoals ons dat is geleerd bijvakken als Software Engineering en Object Oriented Programming.Het volgen van de juiste ontwikkelmethode heeft absoluut positievegevolgen voor het eindproduct, maar binnen een commercieelbedrijf is hier niet altijd tijd voor. Als een product is afgeleverd envoldoet aan de vooraf gestelde eisen, waarbij de keuzes temotiveren zijn, dan is dat voldoende.

    Ik vond het zelf interessant om tijdens de stage te zien hoeprocessen in een softwarebedrijf in zijn werk gaan. Ik bengeinteresseerd in het verlopen van processen binnen een bedrijf en

    daarom was het leuk nu zelf deel uit te maken van eenontwikkelproces.

    Een groot voordeel van het bachelorproject is dat dit wordt gegevenin het vierde kwartaal zonder dat er daarnaast andere vakken ofpractica gevolgd moeten worden. Dit heeft als gevolg dat alleaandacht ook daadwerkelijk naar het project kan gaan, ook almoest in de praktijk nog wel eens op de TU gewerkt worden aanvakken uit vorige kwartalen.

    Het samenwerken in een groep van twee personen is mij goedbevallen. Het aantal is precies goed voor het bespreken vanproblemen en het vinden van de juiste oplossing. Zodra er meerpersonen bij komen moet rekening worden gehouden met nog meerbelangen, wat uiteindelijk niet tot een slechter resultaat zal leiden,maar wel meer tijd in beslag neemt.Danny en ik vormden een goed team waarbij we elkaar goedkonden aanvullen op de momenten dat dat nodig was. Desamenwerking is zonder problemen verlopen en heeft naar mijnidee geleid tot een goed eindresultaat.

  • 7/26/2019 Logging Topdesk Enterprise

    42/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    41

    Bijlage A: plan van aanpak

    Logging TOPdesk EnterpriseBachelorproject technische informatica

    IN3700

    Plan van aanpak

    UitvoerdersMartijn de Gans - 1174487Danny Verloop - 1188526

    VakBachelorproject - IN3700

    OmgevingTOPdeskTU Delft

    Datum

    25 april 2007

    Versie1.2

    CommissieR. J. Grootjans (TOPdesk, begeleider)R. Spilker (TOPdesk, opdrachtgever)H.J.A.M. Geers (TU Delft, begeleider)B.R. Sodoyer (TU Delft, cordinator)

  • 7/26/2019 Logging Topdesk Enterprise

    43/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    42

    Inhoudsopgave

    1.

    Samenvatting ................................................................ 422. Introductie .................................................................... 423. Omgeving ..................................................................... 434. Opdracht ....................................................................... 435. Doelstelling .................................................................... 66. Eisen en beperkingen volgens opdrachtgever ..................... 447. Cruciale succesfactoren ................................................... 448. Aanpak ......................................................................... 449. Planning ........................................................................ 4510. ................................................................................................................O

    rganisatie ...................................................................... 4611. ................................................................................................................T

    echniek ......................................................................... 46

    Samenvatting

    Het bachelorproject zal uitgevoerd worden bij het bedrijf TOPdesk. Dit bedrijfgevestigd in Delft levert servicedesk applicaties waarvan TOPdesk Enterprise demeest uitgebreide vorm is. Deze applicatie genereert logbestanden waarin actiesen foutmeldingen geplaatst worden. Onze opdracht is om op een efficinte manierdoor deze gegevens te kunnen navigeren en om te kijken naar waar eventueleverbeteringen in het logsysteem kunnen worden doorgevoerd.

    Dit hebben wij verwerkt in een stappenplan waarin wij binnen de gegeven tijdvoor het bachelorproject zullen proberen onze doelstellingen opgesteld aan dehand van de gestelde eisen en succesfactoren te realiseren. Bij iedere fase vanhet ontwikkelproces zullen wij bepaalde documenten opleveren. Wij hebben bijhet ontwikkelproces gekozen voor de aanpak zoals deze wordt aangeraden bij hetvak Software Engineering aan de TU Delft.

    De duur van het bachelorproject bedraagt tien weken. De eerste week is ingevulddoor TOPdesk als introductieperiode bij het bedrijf. De overige weken zullen wijons vijf dagen in de week, acht uur per dag bezig houden met de door onsgekozen opdracht.

    Introductie

    Dit document bevat het plan van aanpak voor ons bachelorproject. Als eerstewordt een beschrijving van TOPdesk en de producten die zij levert gegeven.Vervolgens zal de opdracht toegelicht worden en is aangegeven welkedoelstellingen wij willen gaan realiseren om tot een overeengekomen succesvoleindproduct te komen.

    Om tot deze doelstellingen te komen zijn een aantal opeenvolgende stappengekozen waar bij iedere stap is aangegeven welke documenten opgeleverd zullenworden.

    Tot slot is een beschrijving gegeven van onze planning en vanuit deze planninghebben wij een aantal deadlines opgesteld.

  • 7/26/2019 Logging Topdesk Enterprise

    44/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    43

    Omgeving

    TOP Informatie Systemen B.V. bestaat sinds 1997 als zelfstandige onderneming.Het bedrijf is voortgekomen uit de zusterorganisatie OGD (Operator Group Delft).OGD is een automatiseringsbedrijf dat op een groot aantalautomatiseringsgebieden actief is. Voordat TOP Informatie Systemen B.V. onderdeze naam actief was, was de naam OGD Software.

    TOP Informatie Systemen B.V., meestal aangeduid als TOPdesk, ontwikkelt,verkoopt en ondersteunt het softwarepakket TOPdesk. Wereldwijd zijn meer dan2200 implementaties over de gehele wereld actief in 26 landen. Sinds 1993 is hetaantal werknemers van 2 naar meer dan 160 toegenomen. Het grootste deel vandeze werknemers werkt in Delft. Daarnaast heeft TOPdesk in Kaiserslautern enLonden een vestiging. In deze vestigingen vindt geen ontwikkeling van softwareplaats. Het pakket TOPdesk is een Service Management tool. Vooral helpdesks

    maken gebruik van het pakket. Het omvat onder andere incidentbeheer,configuratiebeheer, wijzigingsbeheer en tal van andere functionaliteiten.

    Uit Bsc 2006: Migratie CVS naar Subversion, Didier Liauw en Henk Pijper, 2006

    Opdracht

    Tijdens het draaien van TOPdesk Enterprise, worden er als bijproductlogbestanden gegenereerd die gebruikt worden zodra er problemen optredentijdens het gebruik. Deze logbestanden bevatten informatie over de staat vanTOPdesk Enterise op een bepaald moment.In de huidige situatie moeten de logbestanden worden doorgelezen tot men deprobleemsituatie heeft getraceerd.Onze opdracht heeft als doel de analyse van deze log gegevens te automatiseren,zodat problemen op een efficinte manier geanalyseerd kunnen worden.

    Doelstelling

    Deze opdracht hebben wij onderverdeeld in 2 doelstellingen, Als eerste het beterkunnen analyseren van problemen in de huidige situatie en als tweede een adviesover hoe de logging eventueel verbeterd zou kunnen worden.

    Samengevat zijn onze doelstellingen voor dit project:

    Het maken van een applicatie, die het makkelijker maakt om door degegevens in de logbestanden, die TOPdesk Enterprise genereert, tenavigeren.Dit zal het gemakkelijker maken om tijdens het optreden van problemenbij gebruikers van TOPdesk Enterprise deze problemen te identificeren.

    Een advies geven over eventuele verbeteringen in de logging om een beterinzicht te verkrijgen in de achterliggende situatie en de aard van deproblemen.

  • 7/26/2019 Logging Topdesk Enterprise

    45/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    44

    Eisen en beperkingen volgens opdrachtgever

    De opdrachtgever, Roel Spilker van TOPdesk, heeft de volgende eisen aan hetdoor ons te ontwikkelen analyse systeem gesteld. Het moet in staat zijn om:

    te kunnen zien welke gebruikers er op een bepaald tijdstip actief waren enwat voor acties zij hebben uitgevoerd,

    te kunnen zien in wat voor staat de server op een bepaald tijdstipverkeerde en welke services en modules actief waren op dat moment,

    te kunnen zien welke actie door welke thread uitgevoerd werd en tevenszien wat de service en webserver thread op dat moment deden,

    filters op de resultaten te kunnen toepassen, bijvoorbeeld per gebruiker ofper type actie.

    We moeten rekening houden met de volgende beperkingen:

    Het analyse systeem moet worden ontwikkeld in Java6

    Cruciale succesfactoren

    Het succes van dit project zal bepaald worden aan de hand van een aantalcriteria. Deze kunnen worden samengevat in de volgende eisen:

    Heeft het product de functionaliteit die van te voren bepaald is. Aangeziende functionaliteit onbeperkt uit te breiden is, zal hier een goedeafbakening plaats moeten vinden.

    Is het het product binnen de aangegeven tijd geleverd (zie planning).

    Aanpak

    Om de doelstellingen te realiseren zullen wij een aantal stappen doorlopengedurende de looptijd van dit project.

    Stap 1 : Domein analyseHet analyseren van de huidige situatie om inzicht in de achtergrond van hetprobleem te krijgen. Deze bevindingen zullen bij stap 2 in een RequirementsAnalysis Document worden opgenomen.Documents: Requirements Analysis Document

    Stap 2 : RequirementsHet verzamelen van requirements bij opdrachtgever (Requirements gathering).Na deze te hebben geordend zullen wij besluiten welke requirementsdaadwerkelijk gemplementeerd zullen worden (Requirements analysis). Alslaatste zullen wij specificeren wat het analyse systeem voor functionaliteit gaatkrijgen (Requirements specification). Tevens zullen wij onze bevindingen tijdensstap 1 verwerken in een domein model, waarin wij de te ontwikkelen conceptenen hun onderliggende verbanden aangeven.Documents: Requirements Analysis Document

  • 7/26/2019 Logging Topdesk Enterprise

    46/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    45

    Stap 3 : DesignHet ontwerpen van het analyse systeem. Hier zullen wij vastleggen hoe wij hetanalyse systeem gaan onderverdelen en wat de functies van de verschillende

    delen zullen zijn. Dit zal gebeuren aan de hand van bijvoorbeeld klassediagrammen en sequence diagrammen (Detailed Design). Ook zullen wij besluitenhoe de user interface eruit zal komen te zien (User interface Design). Al onzebeslissingen, specificaties en de bijbehorende visuele informatie zullen samen hetDesign Document vormen.Documents: Design Document

    Stap 4 : ImplementatieHet bouwen van de klassen op basis van het in stap 3 opgestelde ontwerp.Documents: Source Code

    Stap 5 : Testen

    Aan het begin van deze stap maken wij een testplan, waarin de scenariosbeschreven worden die wij willen testen. Na het uitvoeren van ons testplan zullenwij een test rapport opstellen met daarin onze testresultaten.Documents: Test Document, Test Rapport

    Stap 6 : DocumentatieTijdens deze stap maken wij een handleiding waarin aan nieuwe gebruikers wordtuitgelegd hoe zij gebruik kunnen maken van de applicatie.Documents: Gebruikers handleiding

    De tweede opdracht bestaat uit een advies voor eventuele verbeteringen in hetlogging systeem. Deze zullen wij identificeren tijdens de loop van het

    ontwikkelproces van het systeem. Wij zullen eventuele ideeen voor verbeteringdan ook tijdens het ontwikkelen al bijhouden en aan het einde verwerken in onzeaanbevelingen.

    Planning

    Het bachelorproject duurt 10 weken, 4 dagen per week, 8 uur per dag. De eersteweek werd ingevuld door TOPdesk als introductieperiode bij het bedrijf, dus wijhouden voorlopig 5 dagen per week aan. Dit is een totaal van 360 uur voor hetontwikkel proces.

    Stap 1 : Domein analyse 40 uur 1 week

    Stap 2 : Requirements 40 uur 1 weekStap 3 : Design 80 uur 2 wekenStap 4 : Implementatie 120 uur 3 wekenStap 5 : Testen 40 uur 1 weekStap 6 : Documentatie 40 uur 1 week

    Totaal: 360 uur 9 weken

    Bij deze tijden hebben wij niet specifiek aangegeven wanneer we aan het BscVerslag zullen werken, dit zal tijdens de verschillende stappen aan de orde komenen is dus niet apart in de planning opgenomen.

  • 7/26/2019 Logging Topdesk Enterprise

    47/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    46

    Op basis van bovenstaand overzicht hebben wij de volgende deadlinesvastgesteld:

    Stap 1 : Domeinanalyse

    16 april - 20 april Week 16

    Stap 2 : Requirements 23 april - 27 april Week 17Stap 3 : Design 30 april - 11 mei Week 18 en 19Stap 4 : Implementatie 14 mei - 1 juni Week 20, 21 en

    22Stap 5 : Testen 4 juni - 8 juni Week 23Stap 6 : Documentatie 11 juni - 15 juni Week 24Uitloop: 18 juni - 29 juni Week 25 en 26

    Organisatie

    Ons project zal zowel begeleid worden vanuit TOPdesk als vanuit de TechnischeUniversiteit Delft.Names TOPdesk zal Robbert Jan Grootjans ons ondersteunen bij problemen diewij ondervinden tijdens het dagelijkse ontwikkelproces en als aanspreekpunt zaldienen bij eventuele vragen.De opdrachtgever vanuit TOPdesk en tevens verantwoordelijk voor de keuze vande te implementeren oplossing is Roel Spilker.

    Dhr. Geers zal als begeleider dienen van de Technische Universiteit Delft. Alledocumenten die aan het eind van elke stap gemaakt worden, zullen door de heerGeers beoordeeld worden. Voorlopig hebben wij elke maandagmiddag om 16 uurafgesproken om eventuele feedback op het geleverde werk te ontvangen.

    Dhr. Sodoyer is de coordinator van het bachelorproject aan de TechnischeUniversiteit Delft.

    Techniek

    We zullen tijdens dit project gebruik maken van verschillende software producten.Wij zullen Java6 gebruiken als programmeer taal voor de te ontwikkelenapplicatie. Voor het ontwikkelen zullen wij gebruik maken van Eclipse. Dit is destandaard ontwikkelomgeving binnen TOPdesk. Voor het beheren van deverschillende source code versies zullen we gebruik maken van Subversion alsversiebeheer systeem.

    Voor het ontwerpen van de visuele componenten in onze documenten zullen wijgebruiken maken van een voor ons doel geschikte design applicatie. Voorlopighebben wij gekozen voor het programma JUDE.

  • 7/26/2019 Logging Topdesk Enterprise

    48/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    47

    Bijlage B: Requirements Analysis Document

    Logging TOPdesk EnterpriseBachelorproject technische informatica

    IN3700

    Requirements Analysis Document

    UitvoerdersMartijn de Gans - 1174487Danny Verloop - 1188526

    VakBachelorproject - IN3700

    Omgeving

    TOPdeskTU Delft

    Datum10 mei 2007

    Versie1.2

    Commissie

    R. J. Grootjans (TOPdesk, begeleider)R. Spilker (TOPdesk, opdrachtgever)

    H.J.A.M. Geers (TU Delft, begeleider)B.R. Sodoyer (TU Delft, cordinator)

  • 7/26/2019 Logging Topdesk Enterprise

    49/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    48

    Inhoudsopgave

    16. Introductie 49

    27.Doel van het systeem 4928.Definities 4929.Scope van het systeem 4930.Succesfactoren 49

    17. Huidig systeem 49

    18. Voorgesteld systeem 501.Algemeen 502.Functionele eisen 513.Definities 514.Niet-functionele eisen 525.Pseudo requirements 536.System models 54

    1.Use cases 542.Object model - Data dictionary 57

    3.

    Object model - Domain 584.User Interface 59

    19. Bijlage A: Interviews 11

  • 7/26/2019 Logging Topdesk Enterprise

    50/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    49

    Introductie

    Doel van het systeem

    Het softwarepakket TOPdesk Enterprise heeft als bijproduct logbestanden diegebruikt worden zodra er problemen optreden tijdens het gebruik. Dezelogbestanden bevatten informatie over de staat van TOPdesk Enterise op eenbepaald moment.Het analyse systeem wordt gebruikt wanneer er informatie nodig is over de staatwaarin TOPdesk Enterprise zich in een bepaald moment bevond, bijvoorbeeld omte helpen bij het identificeren van problemen.

    Definities

    Exceptions Een event dat optreedt gedurende de uitvoering van eenprogramma en dat de normale stroom van instructies afbreekt. Stacktrace Sequentie van aangeroepen methoden. SQL Query Een opdracht aan de database om zo wijzigingen aan te

    brengen of gegevens op te halen.

    Scope van het systeem

    De gebruikers van het analyse systeem zijn ontwikkelaars, testers en helpdeskmedewerkers.

    Succesfactoren

    Het analyse systeem werkt naar behoren als de informatie opgehaald uit delogbestanden voldoende informatie geeft over de staat van TOPdesk Enterprise opeen gegeven tijdstip.

    Huidig systeem

    Op dit moment worden, zodra een klant een probleem meldt, log bestandenopgevraagd en geanalyseerd.Het niet geautomatiseerd doorlezen van log bestanden is enorm tijdrovendaangezien ze veelal bestaan uit duizenden regels.Dit proces is zeer foutgevoelig, er hoeft maar een enkele regel met belangrijkeinformatie overgeslagen te worden en het probleem kan verkeerd opgevatworden of zelfs helemaal niet worden herkend.

  • 7/26/2019 Logging Topdesk Enterprise

    51/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    50

    Voorgesteld systeem

    Algemeen

    Het door ons te ontwikkelen analyse systeem zal het analyseren van delogbestanden automatiseren.Tevens zal het de analyse resultaten tonen op een dusdanige manier dat de doorde gebruiker gewenste gegevens overzichterlijk weergegeven worden.

    Een paar voorbeelden van gebruikers: een helpdesk medewerker die informatie wil zien over de staat van

    TOPdesk Enterprise tijdens het optreden van een probleem. een ontwikkelaar die wil weten hoe lang een bepaalde SQL query of het

    ophalen van een pagina duurt. een tester die kan kijken of er fouten opgetreden zijn tijdens het testen.

    Het te ontwikkelen analyse systeem heeft tot doel het analyseren vanlogbestanden. De functionaliteiten zullen zich toespitsen op welke informatie uitde log bestanden gehaald kan worden en hoe deze informatie zal wordengetoond.

    Tijdens de domeinanalyse zijn wij zelf tot de volgende functionaliteiten gekomen:

    1. Database Performance statistiekenIn de logbestanden is o.a. te vinden wanneer een bepaalde SQL queryuitgevoerd is, en wanneer er een antwoord van de database is ontvangen.In de loganalyzer zal een lijst met queries en hun uitvoertijd komen.

    2.

    Software probleem analyseExceptions die optreden worden in de log bestanden weggeschreven. Bijelke exception kan indien mogelijk aangegeven worden welke urlresulteerde in de exception, welke gebruiker de exception veroorzaakte enindien beschikbaar in welke module deze exception is opgetreden.In de loganalyzer zal een lijst met exceptions en gerelateerde informatiekomen.

    3. Webserver Performance statistiekenIn de logbestanden is ook te vinden wanneer een pagina is opgevraagd enwanneer deze is verstuurd naar de gebruiker.In de loganalyzer zal een lijst met web paginas en hun opvraagtijdkomen.

    4.

    FilterenOp de resultaten moet het mogelijk zijn om bepaalde filters aan en uit tezetten om zo alleen de gewenste informatie te tonen.

    5. HighlightingOp basis van tekst opmaak aangeven tot welke categorie de tekst behoort.

    Om aan requirements te komen voor het te ontwikkelen analyse systeem hebbenwij een aantal mensen geinterviewd die veelvuldig gebruik maken vanlogbestanden. Er zijn verschillende gebruikers die met het analyse systeemwerken, die zijn onder te verdelen in ontwikkelaars, testers enhelpdeskmedewerkers.De interview transcripties zijn te vinden als bijlage aan het einde van dit

    document.

  • 7/26/2019 Logging Topdesk Enterprise

    52/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    51

    Functionele eisen

    Definities

    Filters: Een filter maakt een selectie uit een aangeboden verzameling vangegevens, die voldoen aan een voorwaarde.Highlights:Een highlight accentueert door middel van tekstopmaak gedefinieerdesleutelwoorden en zinsconstructies.Folding: Het in- en uitklappen van aan elkaar gerelateerde gegevens

    Het te ontwikkelen analyse systeem moet de volgende functies hebben:

    6) Filters1. Filter aanmaken

    2.

    Filter wijzigen3. Filter verwijderen

    7) Highlights1. Highlight aanmaken2. Highlight wijzigen3. Highlight verwijderen

    8) Logbestanden1. Logbestand openen

    9) Log gegevens

    1.

    Filter activeren op loggegevens2. Filter deactiveren op loggegevens3. Highlight activeren op loggegevens4. Highlight deactiveren op loggegevens5. Gerelateerde gegevens inklappen (folding in)6. Gerelateerde gegevens uitklappen (folding out)

    10)Database performance statistieken1. Database performance statistieken openen2. Resultaten sorteren op uitvoertijd en starttijd van de query3. Query specifieke filters activeren op resultaten4. Query specifieke filters deactiveren op resultaten

    11)Webserver performance statistieken1. Webserver performance statistieken openen2. Resultaten sorteren op tijdsduur en starttijd van het verzoek3. Webserver specifieke filters activeren op resultaten4. Webserver specifieke filters deactiveren op resultaten

  • 7/26/2019 Logging Topdesk Enterprise

    53/91

    Bachelorproject

    Logging TOPdesk Enterprise

    Martijn de Gans, Danny Verloop

    52

    Niet-functionele eisen

    User interface and human factorsDe gebruikersinterface moet simpel en intutief worden om voor de verschillendegebruikers snel bruikbaar te zijn.Mogelijkheid bieden om bepaalde aan elkaar gerelateerde informatie tijdelijk tekunnen inklappen om zo een beter overzicht te krijgen (Folding).

    DocumentatieEr zal een gebruikershandleiding moeten komen, die de gebruiker op weg helpten eventueel informatie geeft over specifieke functies die het systeem bevat.

    Hardware considerationsEr worden geen specifieke hardware voorwaarden aan dit systeem gesteld.

    Performance characteristicsEr zal een grote hoeveelheid gegevens worden ingelezen waarbij het niet gewenstis dat de gebruiker hier op zal moeten wachten. Het te maken systeem zal tijdenshet