Scriptie ingediend tot het behalen van de graad van PROFESSIONELE BACHELOR IN DE ELEKTRONICA-ICT Centralization of logs using Elasticsearch, Logstash and a Kibana front-end Sam De Jongh Departement Wetenschappen en Techniek Opleiding Elektronica-ICT Academiejaar 2013-2014 Interne promotor: Tom Peeters Externe promotor: Erik Vanherck Versie: 9 juni 2014 Dankwoord Doorheen mijn stage heb ik meermaals beroep kunnen doen op mijn collega’s bij Inventive Designers indien ik voor problemen kwam te staan. Hiervoor wil ik ze dan uiteraard ook van harte bedanken. Het volledige team wil ik bedanken voor de aangename werksfeer waarbinnen ik heb kunnen werken. Erik Vanherck wil ik in het bijzonder bedanken voor zijn goed hulp en deskundige uitleg bij het maken van mijn project ter centralisatie van logbestanden. Bij de start van dit project schetste hij eerst duidelijk het volledige kader van de opdracht, zodat ik wist waaraan ik ging beginnen. Doorheen het maken van dit project kon ik ook steeds bij hem terecht met allerhande vragen. Hierop kreeg ik steeds een duidelijk en volledig antwoord. Ook vragen over niet stage gerelateerde onderwerpen was hij bereid mij mee te helpen. Zo heeft hij me interessante tips gegeven over solliciteren en hoe ik hieraan best kon beginnen. Ten tweede wil ik Nico Brys bedanken die me uitvoerig heeft geholpen aan het begin van mijn stage. Hij heeft me meermaals geholpen bij mijn opdracht tot deployment van Windows Images over het netwerk. Zelfs bij het maken van de typische beginners fouten heeft hij mij steeds verder geholpen. In geval van vragen over de stage zelf kon ik steeds terecht bij Tom Peeters, die me daarin zorgvuldig heeft begeleid. Ook mijn mede stage student Dries Crauwels wil ik bedanken, zijn aanwezigheid elke dag weer maakte het werk steeds aangenaam. Tot slot wil ik Britt Meylemans bedanken die me steeds heeft gesteund en gemotiveerd om mijn stage en het schrijven van mijn thesis tot een goed einde te brengen. Antwerpen, 9 juni 2014 Sam De Jongh i Abstract Bij Inventive Designers maken ze gebruik van een moderne IT-infrastructuur die bestaat uit computers, Windows servers, Linux servers, en allerhande virtuele machines. Al deze machines produceren constant logs, zij het dat deze logs niet optimaal worden benut. Ze worden slechts gegenereerd en zelden nagekeken waardoor er veel kostbare informatie verloren gaat. Op dit probleem speelt deze bachelorproef in door een centrale server aan te maken waarop al deze logs worden verzameld. Hiervoor wordt gebruik gemaakt van Logstash die de Logs zal ontvangen, parsen en doorsturen naar de Elasticsearch server. De logs die worden opgeslagen op de Elasticsearch server zijn vervolgens makkelijk raadpleegbaar via een Kibana grafische interface. Deze Kibana-interface stelt de werknemers in staat om in ´e´en oogopslag een overzicht te krijgen van alle machines binnen het bedrijf. Zo kan een werknemer bijvoorbeeld nagaan op welke computer er iemand probeert in te loggen met een fout wachtwoord of wat de huidige cpu load is van een van de vele servers. De installatie en configuratie van de centrale log server zal volledig automatisch en zonder voorkennis kunnen gebeuren. De gebruiker dient hiervoor slechts ´e´en script te runnen. ii Inhoudsopgave Dankwoord i Abstract ii 1 Situering 1.1 Security . . . . . . 1.2 Hardware monitoring 1.3 Software monitoring 1.4 Conclusie . . . . . . . . . . 1 1 1 2 2 2 Voorafgaande opdracht 2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Behaalde resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Bevindingen in het licht van log centralisatie . . . . . . . . . . . . . . . . . . 3 3 3 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Concretisering van de opdracht 3.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Wat zijn logbestanden? . . . . . . . . . . . . . . . . . . . 3.2.1 Operating system included . . . . . . . . . . . . . . 3.2.2 Operating system excluded . . . . . . . . . . . . . 3.3 Welke logbestanden moeten worden gecentraliseerd? . . . . 3.4 Waarom moeten deze logbestanden worden gecentraliseerd? 3.4.1 Linux syslogs . . . . . . . . . . . . . . . . . . . . . 3.4.2 Windows Event logs . . . . . . . . . . . . . . . . . 3.4.3 Apache server logs . . . . . . . . . . . . . . . . . . 3.4.4 Server Hardware stats . . . . . . . . . . . . . . . . 3.4.5 Scriptura logs . . . . . . . . . . . . . . . . . . . . 3.4.6 Metric logs . . . . . . . . . . . . . . . . . . . . . . 3.5 Van waar komen deze log bestanden? . . . . . . . . . . . . 3.5.1 Windows en Linux . . . . . . . . . . . . . . . . . . iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 6 6 6 7 7 8 8 8 9 10 10 INHOUDSOPGAVE 3.6 iv 3.5.2 Fysieke- en virtuele machines . . . . . . . . . . . . . . . . . . . . . . 3.5.3 Clients en servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . Naar waar gaan deze logbestanden? . . . . . . . . . . . . . . . . . . . . . . . 4 Architectuur 4.1 Inleiding . . . . . . . . . . . . . . . . . 4.2 Schema . . . . . . . . . . . . . . . . . . 4.3 Beknopte toelichting van de architectuur 4.3.1 Three sides architecture . . . . . 4.3.2 Client side software . . . . . . . 4.3.3 Server side software . . . . . . . 4.3.4 End user side software . . . . . . 5 Bespreking van de client side software 5.1 Inleiding . . . . . . . . . . . . . . . 5.2 Omschrijving . . . . . . . . . . . . . 5.3 Connectie met de centrale log server 5.4 Linux software: . . . . . . . . . . . . 5.4.1 Rsyslog . . . . . . . . . . . . 5.4.2 Collectd . . . . . . . . . . . 5.4.3 Logstash shipper . . . . . . . 5.4.4 SyslogAgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Bespreking van de server side software 6.1 Logstash receiver . . . . . . . . . . . . . . 6.1.1 Omschrijving . . . . . . . . . . . . 6.1.2 Configuratie . . . . . . . . . . . . 6.2 Elasticsearch . . . . . . . . . . . . . . . . 6.2.1 Omschrijving . . . . . . . . . . . . 6.2.2 Configuratie . . . . . . . . . . . . 6.3 Kibana . . . . . . . . . . . . . . . . . . . 6.3.1 Omschrijving . . . . . . . . . . . . 6.3.2 Configuratie . . . . . . . . . . . . 6.4 Apache server . . . . . . . . . . . . . . . 6.4.1 Omschrijving . . . . . . . . . . . . 6.4.2 Authenticatie . . . . . . . . . . . . 6.4.3 Centrale log server website hosting 6.5 Elastic HQ . . . . . . . . . . . . . . . . . 6.6 Backup and delete old logs with cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 11 . . . . . . . 12 12 13 14 14 14 15 15 . . . . . . . . 16 16 16 17 18 18 18 20 27 . . . . . . . . . . . . . . . 28 28 28 28 30 30 30 30 30 31 31 31 31 31 32 32 7 Bespreking van de end user side software 34 8 Automatisatie van de installatie 35 INHOUDSOPGAVE 8.1 8.2 8.3 8.4 8.5 8.6 Inleiding . . Installeren en Installeren en Installeren en Installeren en Instructies . v . . . . . . . configureren configureren configureren configureren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . van de centrale log server . . . . . . . . . van Rsyslog en de hardware shipper . . . . van Scriptura-en metrics Logstash shipper van SyslogAgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 How to use 35 35 36 36 36 37 40 10 Resultaten 10.1 Inleiding . . . . . . . . . . . 10.2 Centrale log server website . . 10.3 Full overview dashboard . . . 10.4 Linux server hardware monitor 10.5 Linux server syslog monitor . 10.6 Windows client event monitor 10.7 Windows server event monitor 10.8 Apache server log monitor . . 10.9 Scriptura log monitor . . . . 10.10Metrics log monitor . . . . . 10.11Basic log monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 41 41 43 44 45 46 47 48 49 50 51 11 Besluit 52 A Bijlagen A.1 Installatie bestanden . . . A.2 Manuals . . . . . . . . . A.3 Screenshots . . . . . . . A.4 Logstash input en output A.5 Demo materiaal . . . . . 53 53 53 53 54 54 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lijst van figuren 3.1 3.2 Voorbeeld Windows event log . . . . . . . . . . . . . . . . . . . . . . . . . . Voorbeeld Linux server hardware stats . . . . . . . . . . . . . . . . . . . . . . 7 8 4.1 Schema van de architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1 5.2 Scriptura log na filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metrics log na filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 26 6.1 Elastic HQ interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 10.1 Centrale log server website homepage . . . . 10.2 Centrale log server website how to use page . 10.3 Full overview . . . . . . . . . . . . . . . . . 10.4 Full overview all rows . . . . . . . . . . . . 10.5 Linux server hardware monitor . . . . . . . . 10.6 Linux server hardware monitor all rows . . . 10.7 Linux server syslog monitor . . . . . . . . . 10.8 Linux server syslog monitor all rows . . . . . 10.9 Windows client event monitor . . . . . . . . 10.10Windows client event monitor all rows . . . . 10.11Windows server event monitor . . . . . . . . 10.12Windows server event monitor all rows . . . 10.13Apache server log monitor . . . . . . . . . . 10.14Apache server log monitor all rows . . . . . 10.15Scriptura log monitor . . . . . . . . . . . . 10.16Scriptura log monitor all rows . . . . . . . . 10.17Metrics log monitor . . . . . . . . . . . . . 10.18Metrics log monitor all rows . . . . . . . . . vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 Hoofdstuk 1 Situering Door alle logbestanden te centraliseren binnen Inventive Designers worden alle logs gegenereerd binnen het bedrijf eenvoudig raadpleegbaar en opzoekbaar. De concrete voordelen zijn divers en bevinden zich in drie verschillenden domeinen, met name: security, hardware monitoring en software monitoring. 1.1 Security De voordelen binnen security bevinden zich op vele plaatsen aangezien allerhande logs een indicatie kunnen zijn van een security threat. Een concreet voorbeeld is: wanneer een intruder probeert in te loggen op een computer binnen het bedrijf met een fout wachtwoord, zal Windows hiervan automatisch een log entry aanmaken. In het geval van Windows wordt deze log weggeschreven in de Windows Event logs van Windows. Ook deze Event logs kunnen worden doorgestuurd naar de centrale log server. Op deze manier kan men eenvoudig nagaan op welke computers er zich een security threat heeft voorgedaan. 1.2 Hardware monitoring Het tweede luik waarvoor de centrale log server kan worden gebruikt, is het monitoren van de hardware van alle servers. Zo kunnen onder andere de volgende gegevens van elke server worden geraadpleegd: CPU usage, RAM usage, network traffic, swap usage en disk usage. Op deze manier kan een werknemer opmerken dat er een bepaalde server een constante CPU load heeft van rond de 100 percent. Hieruit kan hij dan afleiden dat er hoogstwaarschijnlijk een probleem is met deze server. 1 HOOFDSTUK 1. SITUERING 1.3 2 Software monitoring Ten slotte kan de centrale log server gebruikt worden om logs op te slaan van zelf ontwikkelde software. Binnen Inventive Designers wordt de software Scriptura gemaakt. Inzake development kan het een handige toevoeging zijn dat de Scriptura logs ook worden gecentraliseerd. 1.4 Conclusie Bij nadere analyse van een centrale log server komt duidelijk naar voren dat Inventive Designers hiervan op meerdere vlakken voordelen van zal ondervinden.(zie sectie 3.4 op pagina 6) Daarom werd aan mij gevraagd om dit project te maken. Het project werd individueel gemaakt en er werd niet vertrokken vanuit een reeds bestaande opstelling. Hoofdstuk 2 Voorafgaande opdracht 2.1 Inleiding Gedurende de eerste twee weken van de bachelorproef kreeg ik een andere opdracht dan het centraliseren van logs. De opdracht was het automatiseren van de installatie van Windows op oude laptops. Dit gebeurde aan de hand van SCCM en een Windows server 2012 [38, 47]. Deze opdracht werd echter vroegtijdig stopgezet, naar aanleiding van enkele problemen. Deze problemen konden niet worden opgelost en de begeleiding had hiervoor niet de tijd. 2.2 Behaalde resultaten Na het doorlichten van de hardware van ongeveer vijftien oude laptops, is er op vijf van deze laptops succesvol automatisch Windows ge¨ınstalleerd. Het installeren van Windows hanteerde de volgende werkwijze. Op de Windows server 2012 bevindt zich een image van Windows 7 [44]. Deze Windows 7 is volledig preconfigured [45]. Concreet wil dit zeggen dat de volgende instelling automatisch worden ingesteld zonder dat de gebruiker hiervoor enige input moet geven: Administrator account Admnistrator wachtwoord Windows activation key Installatie van Office Toevoegen aan het domein Uitzetten van hibernation Instellen van default gateway 3 HOOFDSTUK 2. VOORAFGAANDE OPDRACHT 4 Instellen van DNS settings De oude laptops kunnen deze image inclusief preconfigurations installeren aan de hand van een PXE boot, en vervolgens kiezen voor de optie ”boot from network image”. De laptop zal verbinding maken met de server, de image downloaden en de task sequence doorlopen en Windows volledig installeren. Zoals reeds eerder vermeld, is dit gelukt op vijf van de laptops. Plots bleek echter de Windows boot image op de server niet meer zichtbaar te zijn voor de laptops. Na vele pogingen om dit op te lossen en na consultatie van mijn begeleider, is er beslist deze opdracht stop te zetten. 2.3 Bevindingen in het licht van log centralisatie Het niet volledig volbrengen van deze opdracht heeft het er wel toe geleid dat het nut van een centrale log server werd ge¨ıllustreerd. Doorheen het maken van deze opdracht heb ik vaak allerhande logs moeten consulteren op zowel de Windows server 2012 server als op de laptops. Deze logs bevatten steeds de relevante informatie om een bepaalde error te kunnen oplossen. Indien deze logs echter werden doorgestuurd naar een centrale log server, had ik volgende voordelen kunnen ondervinden: Logs moeten niet langer worden opgezocht in een bepaalde specifieke map die ver weg zit in de system files. Bepaalde keywords die kunnen duiden op een error in de logbestanden zouden eenvoudig kunnen worden opgezocht aan de hand van een query op de log server. Alle logs van verschillende laptops kunnen worden geraadpleegd van op een centrale locatie. Logs kunnen altijd worden geraadpleegd zelfs nadat een bepaalde laptop gecrasht is. Hoofdstuk 3 Concretisering van de opdracht 3.1 Inleiding Om een duidelijk beeld te geven van wat de opdracht inhoudt, is het nuttig eerst toe te lichten wat logbestanden juist zijn. Daarna wordt de situatie binnen Inventive Designers toegelicht vanuit het standpunt van de logbestanden. Hier worden enkel de vereisten van de opdracht uiteen gezet; de eigenlijke software die zal worden gebruikt om dit doel te bereiken wordt nadien uitvoerig toegelicht. 3.2 Wat zijn logbestanden? Een log is een stuk tekst dat automatisch gegenereerd wordt door een PC/server. De elementaire bestanddelen van een log zijn een timestamp en een bepaalde boodschap. Deze boodschap kan zowel een vaststelling zijn van een huidige status van de machine alsook een boodschap over een bepaalde gebeurtenis [21].Deze logs worden vaak verzameld in een logbestand met daarin een chronologische opeenvolging van logs. Het loggen van deze logs kan gebeuren op twee manieren. Enerzijds kan er logging gebeuren door software die standaard in het operating system zit, anderzijds kan dit gebeuren door software die bijkomstig wordt ge¨ınstalleerd door de gebruiker. 3.2.1 Operating system included Een van de bekendste logbestanden zijn de syslogs. Dit zijn logbestanden die automatisch worden aangemaakt door zowel Windows als Linux en waarin allerhande gebeurtenissen van de machine worden vastgelegd. De term gebeurtenissen lijkt vaag, maar dit is echter een bewuste 5 HOOFDSTUK 3. CONCRETISERING VAN DE OPDRACHT 6 keuze. Er worden namelijk logs aangemaakt van alles, gaande van de kernel tot het operating system. Deze syslogs vinden hun nut in meerdere domeinen, enkele voorbeelden zijn: security auditing, systeem analyse en debugging [42]. 3.2.2 Operating system excluded Niet alleen Windows zelf genereert logbestanden, veel software produceert ook zijn eigen logbestanden. Zo bestaat ook de mogelijkheid om software te installeren die enkel en alleen een log bijhoudt van een bepaalde hardware-wijziging binnen een PC. Een voorbeeld hiervan is GPUZ. Hiermee kan een logbestand worden bijgehouden van allerhande data van de GPU[17, 16]. Een Linux equivalent van deze software is Collectd. Dit is een data collector die als service op Linux kan worden gerund. Deze service kan dan hardware-informatie loggen van onder ander HDD state en CPU usage [7]. 3.3 Welke logbestanden moeten worden gecentraliseerd? De volledige lijst van logbestanden die moeten worden gecentraliseerd ziet er als volgt uit: Linux syslogs : hierin worden alle system events verzameld [42]. Windows Event logs : hierin worden alle system events verzameld [46]. Apache server logs : hierin worden alle Apache server events verzameld [2]. Linux server Hardware stats : een zelf aangemaakt logbestand waarin hardware stats van de machine worden verzameld. Scriptura logs: Scriptura is software die wordt gemaakt door Inventive Designers, deze maakt ook zijn eigen logbestanden aan [39]. Metric logs: dit kan alles zijn, zolang het maar een timestamp en metric bevat. 3.4 Waarom moeten deze logbestanden worden gecentraliseerd? Elk type logbestand dat wordt gecentraliseerd heeft zijn eigen nut. Daarenboven zijn er vele verschillende logs die zich in hetzelfde logbestand bevinden. Zo staan er in de Linux syslogs zowel logs die gaan over security als over software. In zijn geheel zal de log server voordelen bieden op volgende gebieden: security, hardware monitoring en software monitoring. Om deze HOOFDSTUK 3. CONCRETISERING VAN DE OPDRACHT 7 voordelen te concretiseren wordt er van elk type logbestand ´e´en log entry als voorbeeld gegeven om het nut ervan aan te tonen. 3.4.1 Linux syslogs Voorbeeld: Listing 3.1: Voorbeeld Linux syslog 1 May 13 0 7 : 5 8 : 2 4 E l a s t i c S e a r c h d h c l i e n t : DHCPREQUEST o f 1 0 . 0 . 0 . 9 9 on e t h 0 t o 1 0 . 0 . 0 . 2 4 3 p o r t 67 Nut: Geeft de gebruiker de mogelijkheid om de huidige DHCP toestand van de machine te kunnen nagaan [9]. Mogelijk kan hij hieraan merken dat de machine geen IP adres meer krijgt van de DHCP-server. 3.4.2 Windows Event logs Voorbeeld: Figuur 3.1: Voorbeeld Windows event log Nut: Geeft een overzicht van wanneer er is ingelogd op een host en of dit al dan niet succesvol was. Zo kan de system administrator een overzicht krijgen van mogelijke intrusions. HOOFDSTUK 3. CONCRETISERING VAN DE OPDRACHT 3.4.3 8 Apache server logs Voorbeeld: Listing 3.2: Voorbeeld Apache server log 1 [ Tue May 13 1 0 : 3 4 : 4 5 2 0 1 4 ] [ e r r o r ] [ c l i e n t 1 0 . 0 . 0 . 4 6 ] u s e r i n t r u d e r n o t found : / Nut: Indien een intuder toegang probeert te krijgen tot de centrale log server zal hiervan een log entry worden aangemaakt. In dit geval probeerde een gebruiker in te loggen met de username “intruder”. 3.4.4 Server Hardware stats Voorbeeld: Figuur 3.2: Voorbeeld Linux server hardware stats Nut: Dit commando geeft de huidige RAM usage van een machine weer. Deze data wordt dan gelogd en doorgestuurd naar de centrale log server. Aan de hand van deze data kan de gebruiker zien welke machine er een tekort aan RAM heeft. 3.4.5 Scriptura logs Voorbeeld: Listing 3.3: Voorbeeld Scriptura log 1 Apr 4 , 2014 1 2 : 1 1 : 4 2 PM CEST [ TPWorker −1] [ INFO ] R e n d e r i n g t o PDF c o m p l e t e d ( 1 page ( s ) was / were r e n d e r e d i n 61ms ) . [ WorkUnitID : {STEP= C r e a t e Output : S u b s t e p 1 | , FLOWINSTANCE=1396606300954 −7| , LOCALTEMPLATEPROCESSORTASK=L o c a l T e m p l a t e P r o c e s s o r T a s k HOOFDSTUK 3. CONCRETISERING VAN DE OPDRACHT 9 −1396606302671 −20| , FLOW=t e s t | , TEMPLATEPROCESSORSESSION= T e m p l a t e P r o c e s s o r S e s s i o n −1396606302670 −19|}] Nut: Scriptura is een programma dat onder andere PDF-bestanden genereert. In deze log kan de gebruiker zien hoeveel pagina’s deze PDF heeft en hoe lang het genereren heeft geduurd. Indien de tijd waarbinnen de PDF is gegenereerd zeer lang is, kan dit wijzen op een fout in de software. 3.4.6 Metric logs Voorbeeld: Listing 3.4: Voorbeeld metrics log 1 t i m e s t a m p =1397740523377; o s . o p e n f i l e d e s c r i p t o r s =220; o s . p r o c e s s . cpu . l o a d = 0 . 2 6 1 8 5 3 9 2 8 2 9 3 5 1 8 1 7 ; o s . mem . p h y s i c a l . f r e e =208424960; o s . l o a d a v g = 4 . 9 3 1 6 4 0 6 2 5 ; o s . mem . swap . f r e e =1073741824; o s . p r o c e s s . cpu . t i m e =231496584000; o s . cpu . l o a d = 0 . 3 1 1 5 3 2 7 0 0 9 4 8 5 7 7 1 6 ; jvm . u p t i m e =81533; jvm . t h r e a d . c o u n t =134; o s . o p e n f i l e d e s c r i p t o r s =220; s c r i p t u r a . l i c e n s e . c r e d i t s . consumed =0; s c r i p t u r a . l i c e n s e . c r e d i t s . r a t e =0; s c r i p t u r a . d o c u m e n t f l o w . p r o c e s s o r . t h r e a d s . a v a i l a b l e =250; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . c o m p l e t e d =5; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . a b o r t e d =0; s c r i p t u r a . d o c u m e n t f l o w . p r o c e s s o r . t h r e a d s . max=250; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . r u n n i n g =0; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . f a i l e d =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . t o t a l =3840; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . z p l =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . a f p =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . p d f =3840; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . t p c l =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . gc =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . r t f =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . ps =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . p c l =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . p f o =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . html =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t h r e a d s . r u n n i n g =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t a s k s . r u n n i n g =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t a s k s . c o m p l e t e d =5; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t a s k s . f a i l e d =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . x s l . r e q u e s t s =5; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . x s l . m i s s =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . d r o . r e q u e s t s =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . d r o . m i s s =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . s c d . r e q u e s t s =5; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . s c d . m i s s =0; Nut: In deze logs kan de verzender allerhande informatie steken zolang deze maar numeriek kan worden uitgedrukt. Uit deze log kan onder andere worden afgeleid wat de CPU load is. Een hoge CPU load zou kunnen wijzen op een endless loop. HOOFDSTUK 3. CONCRETISERING VAN DE OPDRACHT 3.5 10 Van waar komen deze log bestanden? De logbestanden die moeten worden verzameld zijn afkomstig van meerdere machines binnen Inventive Designers. Deze kunnen worden opgedeeld in verschillende categorie¨en. Wanneer er wordt gesproken over machines omvat dit computers, servers en virtuele machines. 3.5.1 Windows en Linux Een van de grootste verschillen tussen de machines waarvan de logs moeten worden verzameld, is het operating system. Er zijn namelijk zowel Windows als Linux machines. De verschillende Windows versies zijn : Windows 7 professional 32 bit Windows 7 professional 64 bit Windows Server 2012 R2 64 bit In het geval van Linux zijn er de verschillende distributies: Ubuntu Server 12.04 Ubuntu Desktop 12.04 In beide gevallen zorgt deze diversiteit van operating systems voor geen enkel probleem: de software die gebruikt wordt op de Linux servers werkt op alle distributies waarvan sprake is binnen Inventive Designers. Dit geldt ook voor de software die wordt gebruikt op de Windows machines, deze werkt op alle hierboven vermelde versies. 3.5.2 Fysieke- en virtuele machines De fysieke machines waarvan de logs worden verzameld, zijn fysieke servers en computers. Er zijn ook virtuele machines die worden gevirtualiseerd aan de hand van VMware, dit zijn zowel clients als servers. 3.5.3 Clients en servers Een laatste onderscheid dat kan worden gemaakt is het volgende: De servers van Inventive Designers. De computers van de werknemers. HOOFDSTUK 3. CONCRETISERING VAN DE OPDRACHT 3.6 11 Naar waar gaan deze logbestanden? Al deze logbestanden worden gecentraliseerd op een server, meer bepaald op een virtuele Ubuntu server 12.04. Hierop draait er onder meer een Elasticsearch server die zal instaan voor het opslaan van de data. De volledige werking en configuratie van deze server wordt uitvoerig toegelicht doorheen deze scriptie.(zie hoofstuk 4 op pagina 12) Hoofdstuk 4 Architectuur 4.1 Inleiding Het is niet onverstandig om allereerst een duidelijk beeld te schetsen van hoe de volledige architectuur van het project eruit ziet en dit in de vorm van een grafisch schema. Dit zal zorgen voor meer inzicht en een beter overzicht doorheen deze scriptie. Het schema zal beknopt worden toegelicht aan de hand van een korte omschrijving van alle componenten. Een uitgebreide bespreking van elke component van dit schema en de configuratie en werking ervan zal het merendeel van deze scriptie omvatten. 12 HOOFDSTUK 4. ARCHITECTUUR 4.2 Schema Figuur 4.1: Schema van de architectuur 13 HOOFDSTUK 4. ARCHITECTUUR 4.3 4.3.1 14 Beknopte toelichting van de architectuur Three sides architecture Allereerst dient te worden vermeld dat de term opstelling verwijst naar alle componenten die te zien zijn in het architectuurschema.(zie afbeelding 4.2 op pagina 13) Om een duidelijke structuur doorheen de opstelling te behouden, is de architectuur onderverdeeld in drie grote bouwblokken, met name: Client side: de machines die hun logs doorsturen naar de centrale log server. Server side: de log server zelf. End user side: de kant van de eindgebruiker die de centrale log server zal raadplegen. De toelichting van alle software die hier wordt vermeld volgt in hoofdstuk 5 en 6 vanaf pagina 16. 4.3.2 Client side software Alle clients sturen hun logbestanden door over een UDP-connectie naar de Elasticsearch server.(zie sectie 5.3 op pagina 17) Het enige dat de clients moeten weten is het IP-adres en het poortnummer naar waar ze hun logbestanden moeten doorsturen. Linux De Linux servers sturen hun syslog bestanden door naar de Elasticsearch server aan de hand van Rsyslog [37]. De hardware statistieken van de Linux servers worden doorgestuurd door Collectd [8]. Windows De Windows computers en Windows servers sturen ook hun syslog bestanden door. Deze zullen dit doen via een programma genaamd SyslogAgent [41]. Scriptura en metric logs Het doorsturen van deze logs gebeurt aan de hand van een Logstash shipper. Wat Logstash doet is, het monitoren van een logbestand en de nieuwe toevoegingen doorsturen naar de centrale log server. HOOFDSTUK 4. ARCHITECTUUR 4.3.3 15 Server side software Ubuntu Server De server waarop alle software zal worden gerund is een Ubuntu server 12.04. Hierop zullen de volgende programma’s worden ge¨ınstalleerd. Apache Server De Apache server staat in voor de authenticatie [3]. Deze zal er voor zorgen dat een gebruiker een username en wachtwoord zal moeten ingeven alvorens toegang te krijgen tot de website van de centrale log server. Logstash Zowel het opvangen van de data als het parsen ervan gebeurt door Logstash [27]. Logstash heeft als input twee verschillende bronnen: Logs die binnen komen via een UDP-connectie. Log files die zich reeds op de Ubuntu server bevinden. Nadat Logstash de logs geparsed heeft, stuurt hij deze door naar de Elasticsearch server. Elasticsearch server Het eigenlijke opslaan van de logs gebeurt op de Elasticsearch server die draait op de Ubuntu server [13]. Kibana Kibana is een grafische interface die een kijk geeft op de data die zich op de Elasticsearch server bevinden. Kibana is eenvoudig bereikbaar via elke web browser en is uitermate aanpasbaar [20]. 4.3.4 End user side software Web browser Het enige dat de eindgebruiker nodig heeft, is een web browser. Door hier het IP-adres van de log server in te geven, komt hij terecht op de website van de log server. Hoofdstuk 5 Bespreking van de client side software 5.1 Inleiding Waar de concretisering van de opdracht vertrok vanuit het standpunt van het logbestand zelf , zal de bespreking van de volledige opstelling vertrekken vanuit het standpunt van de gebruikte software.(zie hoofdstuk 3 op pagina 5) Hierbij wordt er gebruik gemaakt van de drie grote blokken binnen de architectuur: client side, server side, end user side.(zie afbeelding 4.2 op pagina 13) De installatie van deze software wordt nog niet vermeld, deze wordt behandeld in het hoofdstuk over de automatisatie van de installatie.(zie hoofdstuk 8 op pagina 35) 5.2 Omschrijving Om verwarring te vermijden, dient te worden vermeld dat ook servers kunnen worden aanzien als clients. Wanneer er over clients wordt gesproken omvat dit elke mogelijke machine die zijn logbestanden doorstuurt naar de centrale log server. Aangezien ook servers hun logs doorsturen naar de centrale log server, zullen ook deze servers vallen binnen het luik clients. Dit wordt ook duidelijk in het schema van de architectuur.(zie afbeelding 4.2 op pagina 13) Niet alleen kunnen servers ook clients zijn van de centrale log server, de server waarop de centrale log server wordt gehost kan ook zijn eigen logs doorsturen naar de centrale log server. In deze opstelling is dit het geval, aangezien zowel syslogs en hardware statistieken van de log server worden opgeslagen op de log server zelf. Hiervoor wordt client side software gebruikt die runt op de Ubuntu server waarop de centrale log server wordt gehost.(zie sectie 5.4.1 en 5.4.2 op pagina 18) Dit weerhoudt andere servers er uiteraard niet van deze sofware ook te kunnen gebruiken om hun logs naar de centrale log server door te sturen. 16 HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 5.3 17 Connectie met de centrale log server Doorheen de verschillende software is er een belangrijke lijn te trekken: het type van connectie met de server. De keuze bestaat tussen een UDP of een TCP connectie, ze hebben echter beide hun voor-en nadelen. Een overzicht hiervan bevindt zich in onderstaande tabel [43]. TCP Reliable - monitors message transmission, tracks data transfer to ensure receipt of all packets Ordered - buffering provisions to ensure correct order of data packets Heavyweight - dedicated connection, provisions for speed and congestion control Heavy overhead Lower speed UDP Unreliable best effort - no concept of acknowledgement, retransimssion, or timeout Not ordered - data arrives in order of receipt Lightweight - no dedidcated end-to-end connection, no congestion control Light overhead Higher speed De keuze voor een UDP verbinding tussen client en server berust op de volgende aspecten van een UDP connectie: Best effort delivery : dit is voldoende binnen deze opstelling. Indien sommige logs verloren gaan is dit een beperkt risico in vergelijking met de andere voordelen. Higher speed: de keuze voor UDP zorgt ervoor dat de logs sneller bij de log server zullen aankomen. Light overhead : minder overhead maakt de kans op congestion van het netwerk kleiner. De centrale log server is een ondersteunende dienst binnen Inventive Designers, daarom is een te grote druk op het netwerk niet wenselijk. Om deze reden wordt er in elke gebruikte client side software opgegeven om de logs door te sturen naar het IP-adres van de centrale log server via een UDP connectie. Om ervoor te zorgen dat de server een onderscheid kan maken tussen logs afkomstig van verschillende types logbestanden en software, wordt er gebruik gemaakt van een eigen poortnummer per type logbestand. Zo weet de centrale log server dat logs die binnenkomen via een specifieke poort, thuis horen in een bepaalde categorie. Elke client side software heeft zo zijn eigen poortnummer: Linux machine die syslogs verstuurt : poort 515. Linux machine die hardware statistieken verstuurt : poort 517. Windows server die Event logs verstuurt : poort 514. Windows desktop die Event logs verstuurt : poort 516. HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 5.4 5.4.1 18 Linux software: Rsyslog Omschrijving: Rsyslog is een programma dat standaard op vele Linux distributies ge¨ınstalleerd is, en geeft de gebruiker de mogelijkheid om de gegenereerde syslog logbestanden eenvoudig door te sturen en te filteren [37]. Ook op Ubuntu server 12.04, waarvan gebruik wordt gemaakt voor de centrale log server, staat Rsyslog standaard ge¨ınstalleerd. De functionaliteiten van Rsyslog stemmen ook perfect overeen met de verwachtingen binnen deze opstelling. Configuratie: De configuratie van Rsyslog gebeurt aan de hand van een config bestand dat zich op de volgende locatie bevindt : /etc/rsyslog.conf Om de syslogs door te sturen moet de volgende regel worden toegevoegd onderaan het rsyslog configuratie bestand: *.* @192.168.0.7:515 Deze regel vertaalt zich als volgt: *.* : alle syslogs moeten worden doorgestuurd [34]. @ : versturen over een UDP connectie, @ staat voor UDP en @@ staat voor TCP [35]. 192.168.0.7 : dit is het IP adres van de centrale log server [36]. :515 : dit is het poortnummer waarop de log server aan het luisteren is naar Linux syslog berichten. 5.4.2 Collectd Omschrijving: Collectd staat in voor het opvragen, loggen en doorsturen van een Linux machine zijn systeemstatistieken. Er is een zeer grote hoeveelheid aan statistieken om te loggen met Collectd[7]. Eens ge¨ınstalleerd en geconfigureerd start Collectd als daemon in de achtergrond. De systeemstatistieken die relevant zijn om te loggen binnen Inventive Designers zijn : CPU usage. RAM usage. Network traffic. Swap usage. HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 19 Disk usage. Configuratie De configuratie van Collectd gebeurt aan de hand van een config bestand dat zich op de volgende locatie bevindt : /etc/collectd/collectd.conf.(zie bijlage A.1 op pagina 53) Het doorsturen van elk type statistiek verreist zijn eigen regels in dit configuratie bestand. Toevoeging aan collectd.conf: Listing 5.1: collectd.conf: network configuration 1 <P l u g i n network > 2 <S e r v e r ” 1 0 . 0 . 0 . 9 9 ” ” 517 ”> 3 # To a v o i d an e r r o r 4 </ S e r v e r > 5 </P l u g i n > Deze regel zorgt ervoor dat de logs worden doorgestuurd naar het opgegeven IP-adres en poortnummer. Toevoeging aan collectd.conf: Listing 5.2: collectd.conf: RAM usage 1 L o a d P l u g i n memory Deze regel zorgt ervoor dat de huidige toestand van de RAM in de machine wordt doorgestuurd. Toevoeging aan collectd.conf: Listing 5.3: collectd.conf: network traffic 1 <P l u g i n i n t e r f a c e > 2 I n t e r f a c e ” eth0 ” 3 IgnoreSelected false 4 </P l u g i n > Deze regels zorgen ervoor dat de statistieken van de netwerk trafiek worden doorgestuurd van de gekozen interface. HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 20 Toevoeging aan collectd.conf: Listing 5.4: collectd.conf: swap usage 1 <P l u g i n ” swap ”> 2 ReportByDevice f a l s e 3 ReportBytes true 4 </P l u g i n > Deze regels zorgen ervoor dat de statistieken van het swap-gebruik worden doorgestuurd naar de centrale log server. Toevoeging aan collectd.conf: Listing 5.5: collectd.conf: disk usage 1 <P l u g i n df > 2 IgnoreSelected false 3 ReportByDevice true 4 ReportReserved true 5 ReportInodes false 6 ValuesAbsolute true 7 ValuesPercentage false 8 </P l u g i n > Deze regel zorgt ervoor dat de statistieken van de disk usage worden doorgestuurd naar de centrale log server. Toevoeging aan collectd.conf: Listing 5.6: collectd.conf: disk space 1 <P l u g i n d i s k > 2 IgnoreSelected false 3 </P l u g i n > Deze regel zorgt ervoor dat de statistieken van de disk space worden doorgestuurd naar de centrale log server. 5.4.3 Logstash shipper Omschrijving: Logstash is Linux software die ontwikkeld is voor het opvragen, parsen en doorsturen van logbestanden [27]. Aan zowel de server zijde als de client zijde van deze opstelling wordt er gebruik van gemaakt, de implementatie en werking ervan is echter verschillend. De functie van Logstash aan de client zijde is het opvragen, parsen en doorsturen van de metrics-en de Scriptura logs.(zie afbeelding 4.2 op pagina 13) Een belangrijke functionaliteit van Logstash is HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 21 het kunnen monitoren van een bepaald logbestand [24]. Dit houdt in dat telkens wanneer er een log wordt toegevoegd aan een van deze logbestanden, Logstash dit zal opmerken en de nieuwe log entry doorsturen naar de centrale log server. Een relevante opmerking is dat deze Logstash shipper ook in staat voor de parsing van de logs. Dit is iets dat ontbreekt bij de andere client side software.(zie sectie 5.4.2 en 5.4.1 op pagina 18) De parsing bij de andere client side software gebeurt aan de server zijde via de Logstash receiver.(zie sectie 6.1 op pagina 28) Aangezien de Logstash shipper reeds zijn eigen instantie van Logstash is, die in staat is tot parsing, wordt deze taak niet gedelegeerd naar de Logstash receiver. Een overzicht van de input en output van de Logstash shipper bevindt zich in bijlage A.4 op pagina 54. Configuratie: Net zoals vele Linux programma’s gebeurt de configuratie van Logstash aan de hand van een config file. Belangrijk bij Logstash is de vaste structuur die hierin te vinden is: input, filter en output [31]. Aangezien de configuratie van Logstash iets uitgebreider is dan die van Collectd, worden slechts enkele belangrijke stukken uitgekozen en toegelicht. Input Scriptura log: Listing 5.7: logshipper.conf: Scriptura input 1 2 3 4 5 6 7 8 9 10 11 input { file { p a t h => ” / v a r / l o g / s c r i p t u r a . l o g ” type => ” S c r i p t u r a L o g ” s i n c e d b p a t h => ” / . s i n c e d b 4 * ” c o d e c => m u l t i l i n e { p a t t e r n => ”%{MONTH} %{MONTHDAY} ” n e g a t e => t r u e what => ” p r e v i o u s ” } } Hier wordt het te observeren logbestand geselecteerd en vervolgens vermeld dat er hier sprake is van een multiline logbestand. Dit zorgt ervoor dat indien ´e´en enkele log entry bestaat uit meerdere regels, deze toch worden aanzien als ´e´en log entry [29]. Zonder deze multiline regels zou er bij elke nieuwe regel een nieuwe log entry worden gestart. Dit is uiteraard niet wenselijk indien deze nieuwe regel bij de vorige regels hoort. Logstash moet echter weten wanneer een nieuwe log entry wordt gestart, aangezien dit normaal gezien bij elke nieuwe regel is. Daarom wordt een patroon gespecificeerd dat het begin van een nieuwe log entry aanduidt. In het geval van Scriptura logs begint elke log entry met een maand en dag, dit wordt dus in Logstash opgegeven als patroon. HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 22 Input metric log: Listing 5.8: logshipper.conf: metric input 1 2 3 4 file { p a t h => ” / v a r / l o g / m e t r i c s . l o g ” type => ” M e t r i c s L o g ” s i n c e d b p a t h => ” / . s i n c e d b 5 * ” Metric logs zijn geen multiline logs, daarom is hun configuratie als input eenvoudiger, enkel de locatie van het logbestand opgeven is voldoende. Filter Scriptura log: Listing 5.9: logshipper.conf: Scriptura filter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 filter { i f [ type ] == ” S c r i p t u r a L o g ” { grok { match => [ ” message ” , ”%{MONTH: Month} %{MONTHDAY: MonthDay } , %{YEAR : Year } %{ TIME : Time} %{WORD: Moment} %{WORD: TimeZone } \[%{DATA: Thread } \ ] \[%{DATA: L o g L e v e l } \ ] R e n d e r i n g \ s * t o %{DATA: f i l e t y p e } c o m p l e t e d \ s * \(%{INT : a m o u n t o f p a g e s } %{DATA: d a t a } \ s * was \/ were \ s * r e n d e r e d \ s * i n \ %{INT : d u r a t i o n }ms\ s *%{GREEDYDATA : t i m e } ” ] match => [ ” message ” , ”%{MONTH: Month} %{MONTHDAY: MonthDay } , %{YEAR : Year } %{ TIME : Time} %{WORD: Moment} %{WORD: TimeZone } \[%{DATA: Thread } \ ] \[%{DATA: L o g L e v e l } \ ] %{GREEDYDATA : c o n t e n t } ” ] } mutate { a d d f i e l d => [ ” t i m e s t a m p ” , ”%{Month} %{MonthDay} %{Year } %{Time} ” ] c o n v e r t => [ ” a m o u n t o f p a g e s ” , ” f l o a t ” ] c o n v e r t => [ ” d u r a t i o n ” , ” f l o a t ” ] } } Logstash leest elke log entry in als ´e´en lange string. Indien dit zo wordt opgeslagen op de log server ontbreekt elke mogelijke contextuele plaatsing van deze log entry. Daarom wordt elke log entry geparsed naar verschillende fields met hun eigen value [33]. De field name geeft weer wat een bepaalde waarde voorstelt. De parsing gebeurt aan de hand van een Grok pattern waarin een patroon wordt gedefinieerd van alle onderdelen van een Scriptura log [26]. Indien dit patroon perfect overeenkomt met de binnenkomende logs, worden deze logs geparsed. Om hiervan zeker te zijn, kan het patroon eerst worden getest [25]. Wat parsing nu juist inhoudt, wordt het duidelijkst aan de hand van een voorbeeld. Een Scriptura log entry ziet er als volgt uit : HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 23 Input: Listing 5.10: Example Scriptura log 1 Apr 4 , 2014 1 2 : 1 1 : 4 2 PM CEST [ TPWorker −1] [ INFO ] R e n d e r i n g t o PDF c o m p l e t e d ( 1 page ( s ) was / were r e n d e r e d i n 61ms ) . [ WorkUnitID : {STEP= C r e a t e Output : S u b s t e p 1 | , FLOWINSTANCE=1396606300954 −7| , LOCALTEMPLATEPROCESSORTASK=L o c a l T e m p l a t e P r o c e s s o r T a s k −1396606302671 −20| , FLOW=t e s t | , TEMPLATEPROCESSORSESSION= T e m p l a t e P r o c e s s o r S e s s i o n −1396606302670 −19|}] Deze lange string wordt verolgens geparsed naar een contextuele opeenvolging van fields en values. Hiervoor wordt in Logstash een patroon aangemaakt dat overeenstemt met de Scriptura log entry [26]. Dit is het resultaat van deze parsing: Output: HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 24 Figuur 5.1: Scriptura log na filter De fields amount of pages en duration worden in een grafiek voorgesteld.(zie sectie 10.4 op pagina 44) Daarom worden deze fields via de mutate functie geconvert naar floats, indien dit niet gebeurt doen er zich errors voor omdat Logstash deze standaard opslaat als strings [30]. Filter metrics log: Listing 5.11: logshipper.conf: metric filter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 i f [ type ] == ” M e t r i c s L o g ” { kv { f i e l d s p l i t => ” ; ? ” } mutate { c o n v e r t => [ ” o s . cpu . l o a d ” , ” f l o a t ” ] c o n v e r t => [ ” o s . l o a d a v g ” , ” f l o a t ” ] c o n v e r t => [ ” o s . p r o c e s s . cpu . l o a d ” , ” f l o a t ” ] c o n v e r t => [ ” o s . p r o c e s s . cpu . t i m e ” , ” f l o a t ” ] c o n v e r t => [ ” o s . mem . p h y s i c a l . f r e e ” , ” f l o a t ” ] c o n v e r t => [ ” o s . mem . swap . f r e e ” , ” f l o a t ” ] c o n v e r t => [ ” o s . o p e n f i l e d e s c r i p t o r s ” , ” f l o a t ” ] c o n v e r t => [ ” jvm . u p t i m e ” , ” f l o a t ” ] c o n v e r t => [ ” jvm . t h r e a d . c o u n t ” , ” f l o a t ” ] } date { match => [ ” t i m e s t a m p ” , ”UNIX MS” ] t a r g e t => ” t i m e s t a m p ” } } Voor de parsing van metric logs wordt er een speciale KV-filter gehanteerd [28]. Deze heeft als unieke eigenschap dat het patroon van elke log entry niet vast hoeft te liggen. Dit zorgt ervoor dat ze binnen Inventive Designers elke mogelijke string van metrics kunnen wegschrijven naar dit bestand zonder hiervoor steeds de Logstash configuratie aan te hoeven passen. De enige voorwaarde is dat een log entry steeds moet vermelden wat de field naam is en wat de numerieke waarde van deze field is. Dit moet worden weggeschreven als volgt : field name1=value1; field name2=value2; field name3=value3;. Logstash zal het ; symbool gebruiken als delimiter tussen elke metric. Dit zorgt ervoor dat de log entry een onbeperkte lengte kan hebben zolang dit patroon maar wordt gehanteerd. De inhoud en de types van metrics die worden opgeslagen zijn zo volledig variabel. HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 25 Dit wordt het best ge¨ıllustreerd aan de hand van een voorbeeld. Een metric log entry ziet er als volgt uit : Input: Listing 5.12: Example metrics log 1 t i m e s t a m p =1397740523377; o s . o p e n f i l e d e s c r i p t o r s =220; o s . p r o c e s s . cpu . l o a d = 0 . 2 6 1 8 5 3 9 2 8 2 9 3 5 1 8 1 7 ; o s . mem . p h y s i c a l . f r e e =208424960; o s . l o a d a v g = 4 . 9 3 1 6 4 0 6 2 5 ; o s . mem . swap . f r e e =1073741824; o s . p r o c e s s . cpu . t i m e =231496584000; o s . cpu . l o a d = 0 . 3 1 1 5 3 2 7 0 0 9 4 8 5 7 7 1 6 ; jvm . u p t i m e =81533; jvm . t h r e a d . c o u n t =134; o s . o p e n f i l e d e s c r i p t o r s =220; s c r i p t u r a . l i c e n s e . c r e d i t s . consumed =0; s c r i p t u r a . l i c e n s e . c r e d i t s . r a t e =0; s c r i p t u r a . d o c u m e n t f l o w . p r o c e s s o r . t h r e a d s . a v a i l a b l e =250; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . c o m p l e t e d =5; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . a b o r t e d =0; s c r i p t u r a . d o c u m e n t f l o w . p r o c e s s o r . t h r e a d s . max=250; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . r u n n i n g =0; s c r i p t u r a . d o c u m e n t f l o w . i n s t a n c e s . f a i l e d =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . t o t a l =3840; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . z p l =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . a f p =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . p d f =3840; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . t p c l =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . gc =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . r t f =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . ps =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . p c l =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . p f o =0; s c r i p t u r a . f o r m a t t e r . p a g e s . r e n d e r e d . html =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t h r e a d s . r u n n i n g =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t a s k s . r u n n i n g =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t a s k s . c o m p l e t e d =5; s c r i p t u r a . t e m p l a t e p r o c e s s o r . t a s k s . f a i l e d =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . x s l . r e q u e s t s =5; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . x s l . m i s s =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . d r o . r e q u e s t s =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . d r o . m i s s =0; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . s c d . r e q u e s t s =5; s c r i p t u r a . t e m p l a t e p r o c e s s o r . c a c h e . s c d . m i s s =0; HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE Output: Figuur 5.2: Metrics log na filter 26 HOOFDSTUK 5. BESPREKING VAN DE CLIENT SIDE SOFTWARE 27 Output Logstash shipper: Listing 5.13: logshipper.conf: output 1 2 3 4 5 output { elasticsearch { h o s t => ” 1 0 . 0 . 0 . 9 9 ” c l u s t e r =>” d e f a u l t −c l u s t e r ” } Na de parsing moeten de logs worden doorgestuurd, hiervoor zorgen deze regels. De logs worden doorgestuurd naar de Elasticsearch server.(zie sectie 6.2 op pagina 30) Dit is de service op de centrale log server die instaat voor de opslag van de logs. Het enige dat de Logstash shipper hiervoor moet opgeven is het IP-adres van de log server en de naam van de Elasticsearch cluster [11]. De Logstash shipper is tevens de enige client side software die zijn logs rechtstreeks doorstuurt naar Elasticsearch op de log server. De reden hiervoor is dat deze logs reeds geparsed zijn door de Logstash shipper. In geval van andere client side software worden de logs niet rechtstreeks naar de Elasticsearch server gestuurd maar naar de centrale log server waar ze eerst zullen worden geparsed door de Logstash receiver.(zie sectie 6.1 op pagina 28) 5.4.4 SyslogAgent Omschrijving: SyslogAgent is een lightweight service die kan worden ge¨ınstalleerd op een Windows machine [41]. Na de initi¨ele installatie zal deze service, bij het opstarten van de machine, starten en de geselecteerde Windows Event logs doorsturen naar de opgegeven server. De selectie van Windows Event logs is gebaseerd op de noden binnen Inventive Designers, zo worden de logs binnen deze categorie¨en doorgestuurd: system, security, application en hardware events. Per categorie wordt ook de severity graad van de door te sturen logs bepaald. Configuratie: De configuratie van SyslogAgent verloopt via een grafische user interface, nadien worden alle settings opgeslagen in een registry file. De configuratie van SyslogAgent is zo goed als analoog voor een Windows server en Windows desktop. Het enige verschil is dat ze beiden naar een andere poortnummer van de centrale log server sturen. Dit zorgt ervoor dat de log server een onderscheid kan maken tussen de twee. Hoofdstuk 6 Bespreking van de server side software 6.1 6.1.1 Logstash receiver Omschrijving De werking van Logstash valt uiteen in drie onderdelen: input, filter en output [31]. De Logstash shipper en de Logstash receiver hebben een gelijkaardige werking in twee van deze drie onderdelen. Beiden hebben een filter die in staat voor de parsing van de logs en hebben als output de Elasticsearch server. De input bron is echter verschillend. De Logstash shipper heeft als bron logbestanden die rechtstreeks worden uitgelezen vanuit een bestand dat zich op dezelfde machine als de shipper bevind. De Logstash reciever heeft daarenboven als input verschillende UDP-poorten waarnaar de client side software zijn logs doorstuurt. 6.1.2 Configuratie Aangezien de configuratie van de Logstash receiver zeer gelijkaardig is aan die van de Logstash shipper, wordt enkel de input configuratie uitgelegd. Zowel de filter als de output vertonen meerder gelijkenissen wat een nadere omschrijving overbodig maakt. Een overzicht van de input en output van de Logstash receiver bevindt zich in bijlage A.4 op pagina 54. Input via UDP-poorten Listing 6.1: Input Logstash: UDP 1 2 3 input { udp { type => ” W i n d o w s C l i e n t S y s l o g ” 28 HOOFDSTUK 6. BESPREKING VAN DE SERVER SIDE SOFTWARE 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 29 p o r t => ” 514 ” } udp { type => ” W i n d o w s S e r v e r S y s l o g ” p o r t => ” 516 ” } udp { type => ” L i n u x S y s l o g ” p o r t => ” 515 ” } collectd{ type => ” C o l l e c t d l o g ” p o r t => ” 517 ” t y p e s d b => ” / o p t / l o g s t a s h − 1 . 4 . 0 / v e n d o r / c o l l e c t d / t y p e s . db ” } De Logstash shipper verwacht op een bepaalde UDP-poort een bepaald type logbestand. Zo kan de Log server een onderscheid maken tussen verschillende logs. Om dit onderscheid vast te leggen wordt er aan elke log die binnenkomt een type field toegevoegd met een value die omschrijft welk type log dit is [22]. Bij de logs die worden doorgestuurd via Collectd wordt er een iets andere syntax gebruikt dan bij gewone UDP transmissies, maar de werking ervan is identiek [23]. Input via file monitoring Listing 6.2: Input Logstash: File monitoring 1 2 3 4 5 6 7 8 9 10 11 12 file { p a t h => ” / v a r / l o g / a p a c h e 2 / a c c e s s . l o g ” type => ” apache−a c c e s s ” s i n c e d b p a t h => ”$HOME/ . s i n c e d b * ” } file { p a t h => ” / v a r / l o g / a p a c h e 2 / e r r o r . l o g ” type => ” a p a c h e e r r o r l o g ” s i n c e d b p a t h => ”$HOME/ . s i n c e d b 1 * ” } } Op de centrale log server wordt er ook gebruik gemaakt van een Apache server, deze produceert uiteraard ook zijn eigen logs.(zie sectie 6.4 op pagina 31) Aangezien de Apache logbestanden zich reeds bevinden op de centrale log server zelf, worden deze ingelezen aan de hand van file input in Logstash [24]. Zowel de access file als de error file wordt ingelezen. De access file geeft een overzicht van wie er heeft ingelogd en welke data deze gebruiker heeft opgevraagd. De error file geeft dan weer een overzicht van alle errors, hierin worden bijvoorbeeld foutieve HOOFDSTUK 6. BESPREKING VAN DE SERVER SIDE SOFTWARE 30 login pogingen opgeslagen. 6.2 Elasticsearch 6.2.1 Omschrijving Elasticsearch is een open source tool die instaat voor het opslaan en zoekbaar maken van alle ontvangen logs. Elke Elasticsearch instantie die binnen een onderneming draait, wordt een node genoemd. Momenteel wordt er bij Inventive Designers slechts ´e´en node gebruikt. Naar scalability en toekomstige uitbreidingen van de opstelling toe, zou het eenvoudig mogelijk zijn om Elasticsearch als een distributed systeem op te stellen. Meerdere Elasticsearch nodes kunnen binnen een bedrijf worden opgezet. Deze zullen samen een distributed cluster netwerk vormen om zo een grotere load aan te kunnen [13]. Om de logs op te slaan maakt Elasticsearch gebruik van indeces, elke dag wordt een nieuwe index bestand aangemaakt waarin alle logs worden opgeslagen [12]. 6.2.2 Configuratie De configuratie van Elasticsearch gebeurt via een config file waarin bepaalde instellingen worden meegegeven. Deze config file bevindt zich in /etc/elasticsearch/elasticsearch.yml, hierin wordt onder andere de cluster name en node name bepaald. 6.3 6.3.1 Kibana Omschrijving Kibana is een open source tool waarmee de data die is opgeslagen door Elasticsearch eenvoudig te raadplegen en te representeren is in een web browser naar keuze [20]. Aan de hand van Kibana worden er grafieken gegenereerd van alle relevante numerieke data die zich in de verzamelde logbestanden bevindt. Hiervoor wordt gebruik gemaakt van queries om bepaalde delen te isoleren en vervolgens worden hier grafieken van getekend [18]. Ook tekstuele data wordt eenvoudig raadpleegbaar in speciale tabellen. Een beter inzicht in wat Kibana juist doet wordt gegeven in het hoofdstuk resultaten.(zie hoofdstuk 10 op pagina 41) Hier worden screenshots gegeven van alle mogelijke Kibana configuraties. Belangrijk is wel reeds te vermelden dat er per type logbestand een individuele Kibana dashboard is. Zo ziet de Kibana dashboard van Windows Event logs er volledig anders uit dan die van Linux server hardware logs. Een kibana dashboard is een individuele webpagina die bestaat uit HTML en Javascript [19]. HOOFDSTUK 6. BESPREKING VAN DE SERVER SIDE SOFTWARE 6.3.2 31 Configuratie De configuratie van alle Kibana dashboards verloopt via een grafische user interface. De configuratie van een dashboard vertrekt steeds vanuit enkele queries die een bepaalde selectie logs uit de Elasticsearch server filteren. Elke query wordt daarna gebruikt om grafieken mee te tekenen van relevante data. Ieder dashboard wordt opgeslagen in een XML-bestand, dit maakt dat de dashboards makkelijk op te slaan en in te laden zijn. 6.4 6.4.1 Apache server Omschrijving Apache server is een open source http server die kan worden ge¨ınstalleerd op UNIX besturingssystemen [3]. Binnen Inventive Designers wordt deze Apache server gebruikt voor twee doeleinden: website hosting, autheticatie. 6.4.2 Authenticatie Authenticatie is nodig aangezien de toegang tot de centrale log server moet worden beperkt. Zonder authenticatie zou immers elke gebruiker binnen het bedrijf toegang kunnen krijgen tot alle logbestanden van de hele organisatie. Door te werken met een username en wachtwoord dat vooraf wordt bepaald kunnen enkel gebruikers met deze gegevens inloggen op de centrale log server. Het configureren van de authenticatie gebeurt aan de hand van twee stappen [1]: Aanpassen van de /etc/apache2/sites-available/default file waarin de toegang tot de Apache server kan worden beperkt. Hierin wordt de toegang tot de root directory beperkt door AllowOverride te wijzigen van None naar All. Aanmaken van twee files waarin de login en wachtwoorden worden opgeslagen: .htacces en .htpasswd. 6.4.3 Centrale log server website hosting Om de gebruiker een duidelijk overzicht te geven van alle verschillende Kibana dashboards en deze makkelijke toegankelijk te maken wordt de gebruiker eerst naar een website geleid. De website wordt omschreven als de centrale log server website. Deze website is gebaseerd op een HTML en CSS template [32] . De hosting van de website gebeurt op de Apache server die zich op de centrale log server bevindt. Een volledig overzicht van hoe deze website eruit ziet bevindt zich in sectie 10.2 op pagina 41. HOOFDSTUK 6. BESPREKING VAN DE SERVER SIDE SOFTWARE 6.5 32 Elastic HQ Om een overzicht te krijgen van de huidige toestand van de Elasticsearch server wordt Elastic HQ gebruikt. Dit is een open source dashboard waarin een compleet overzicht wordt gegenereerd van alle actieve nodes en verschillende statistieken over hun werking [10]. De exacte functie hiervan wordt het duidelijkst aan de hand van een screenshot van de Elastic HQ interface. Figuur 6.1: Elastic HQ interface 6.6 Backup and delete old logs with cron Om ervoor te zorgen dat de centrale log server kan blijven functioneren zonder dat er zich enige problemen voordoen, worden de logbestanden na enige tijd verwijderd. Indien dit niet zou gebeuren zou de log server na een bepaalde periode onvoldoende ruimte hebben op zijn harde schijf om de binnenkomende logs op te slaan. Om dit te voorkomen worden de index HOOFDSTUK 6. BESPREKING VAN DE SERVER SIDE SOFTWARE 33 bestanden waarin de logs worden opgeslagen na enige tijd verwijderd. Het commando waarmee dit gebeurt maakt gebruik van curator, dit is een script waarmee logs ouder dan een bepaalde termijn kunnen worden verwijderd van de log server citeElasticsearchCurator. Dit commando wordt vervolgens in een script gezet en dit script wordt via cron elke dag om 2 AM gestart. Listing 6.3: Log server: delete old logs 1 #! / b i n / b a s h 2 # s e t+e s t o p s t h e s c r i p t from s t o p p i n g when t h e r e ’ s an e r r o r 3 s e t +e 4 #d e l e t i n g l o g s o l d e r t h a n 30 d a y s 5 c u r a t o r −−h o s t E l a s t i c S e a r c h −d 30 6 s e t −e In het geval dat er data verloren gaat van de server of dat een gebruiker door een fout commando in te voeren alle data van de Elasticsearch server wist, is het belangrijk dat er een backup is van de vorige Elasticsearch server toestand, inclusief alle logs. Deze wordt gemaakt aan de hand van de ingebouwde snapshot and restore functie in Elasticsearch [14]. Ook dit wordt weer in een script gezet en via cron elke week uitgevoerd. Listing 6.4: Log server: backup logs 1 #! / b i n / b a s h 2 # s e t+e s t o p s t h e s c r i p t from s t o p p i n g when t h e r e ’ s no s n a p s h o t t o be removed 3 s e t +e 4 c u r l −XDELETE ” 1 0 . 0 . 0 . 9 9 : 9 2 0 0 / s n a p s h o t / my backup / s n a p s h o t 1 ? w a i t f o r c o m p l e t i o n=t r u e ” 5 c u r l −XPUT ” 1 0 . 0 . 0 . 9 9 : 9 2 0 0 / s n a p s h o t / my backup / s n a p s h o t 1 ? w a i t f o r c o m p l e t i o n=t r u e ” 6 s e t −e Hoofdstuk 7 Bespreking van de end user side software De end user zal de centrale log server kunnen raadplegen via elke web browser, zowel Chrome, Firefox en Internet Explorer zijn perfect geschikt. De gebruiker moet enkel het IP-adres van de centrale log server ingeven en hij zal op de website van de centrale log server terecht komen.(zie 10.2 op pagina 41) Via deze site kan hij doorlinken naar alle mogelijke Kibana dashboards.(zie A.1 vanaf pagina 53) 34 Hoofdstuk 8 Automatisatie van de installatie 8.1 Inleiding Het opzetten van een complexe omgeving zoals deze centrale log server vereist zeer veel werk. Daarom worden er een Bash scripts voorzien waarin de installatie en configuratie van alle software die gebruikt wordt binnen deze opstelling automatisch gebeurt [4]. In bijlage bevinden zich deze installatie scripts waarin in commentaar de werking volledig wordt uitgelegd.(zie hoofdstuk A op pagina 53) 8.2 Installeren en configureren van de centrale log server Dit is een van de grootste Bash scripts en zorgt ervoor dat op een standaard Ubuntu server de volledige gecentraliseerde log server kan worden ge¨ınstalleerd door ´e´en enkel script te runnen.(zie bijlage A.1 op pagina 53) Een opsomming van wat dit script allemaal doet ziet er als volgt uit : Installeren en configureren van Apache 2 server. Installeren en configureren van alle prerequisites. Installeren en configureren van Logstash. Installeren en configureren van Elasticsearch. Installeren en configureren van Collectd. Configureren van Rsyslog. Installeren en configureren van Elastic HQ. Instaleren van Kibana en aanmaken van Kibana dashboards. 35 HOOFDSTUK 8. AUTOMATISATIE VAN DE INSTALLATIE 36 Aanmaken van cron jobs voor backing up en verwijderen van oude logs. Verwijderen van alle bestanden die gebruikt zijn doorheen de installatie en niet langer nodig zijn. 8.3 Installeren en configureren van Rsyslog en de hardware shipper Om van een Linux machine de syslogs en de hardware statistieken door te sturen moeten Rsyslog en Collectd worden ge¨ınstalleerd .(zie secties 5.4.1 en 5.4.2 op pagina 18) De installatie en configuratie hiervan wordt ook uitgevoerd aan de hand van een Bash script.(zie bijlage A.1 op pagina 53) 8.4 Installeren en configureren van Scriptura-en metrics Logstash shipper Op de machine waar de Scriptura-en metric logs worden gegenereerd kan de Logstash shipper worden ge¨ınstalleerd om deze logs door te sturen naar de centrale log server. De installatie en configuratie hiervan wordt uitgevoerd aan de hand van een Bash script. Er zijn twee scripts voorzien: ´e´en voor installatie op de centrale log server zelf en ´e´en voor de installatie op een client server.(zie bijlage A.1 en A.1op pagina 53) 8.5 Installeren en configureren van SyslogAgent Ook voor Windows clients wordt er een installatie script voorzien, aangezien het hier gaat over Windows machines wordt er gewerkt met een batch file. Dit is het Windows equivalent van een Bash script, en is een perfecte manier om de installatie en configuratie van SyslogAgent te automatiseren [6].(zie bijlage A.1 op pagina 53) Het batch script ziet er zo uit: Listing 8.1: Install SyslogAgent 1 2 3 4 5 cd c : \ S y s l o g A g e n t SyslogAgent . exe − i n s t a l l 1 0 . 0 . 0 . 9 9 r e g e d i t . e x e /S S y s l o g −c o n f i g . r e g n e t s t a r t ” S y s l o g Agent ” pause Wat uniek is aan deze installatie is de manier waarop SyslogAgent wordt geconfigureerd. In de PDF die is meegeleverd bij het installatie bestand staat er uitgelegd hoe de configuratie HOOFDSTUK 8. AUTOMATISATIE VAN DE INSTALLATIE 37 kan worden gekopieerd naar andere machines.(zie bijlage A.2 op pagina 53) De stappen om de configuratie van een reeds ingestelde PC te kopi¨eren naar een andere PC zijn de volgende: Installeren van SyslogAgent PC 1. Configureren van SyslogAgent via de meegeleverde grafische user interface op PC 1. De registry entry kopi¨eren die zich op PC 1 bevindt op deze locatie : HKEY LOCAL MACHINE\SOFTWARE\Datagram\SyslogAgent. PC 1 specifieke data, met name de last run field, uit de registry file verwijderen zodat dit geen conflicten geeft op PC 2. SyslogAgent installeren op PC 2. Registry file inladen in de registry van PC 2 [5]. 8.6 Instructies Al deze installatie scripts zijn reeds zeer gebruiksvriendelijk aangezien een gebruiker die een centrale log server wil installeren deze enkel moet opstarten. Er zijn echter nog enkele kleine aspecten die niet kunnen geautomatiseerd worden. Zoals het ingeven van IP-adressen, wachtwoorden en usernames. Daarom zijn er nog enkele stappen die moeten gebeuren nog voor het script kan worden opgestart. Om dit alles duidelijk uit te leggen zijn er installatie instructies voorzien.(zie bijlage A.1 op pagina 53) Listing 8.2: installatie instructies 1 2 3 4 5 6 7 8 ########################################################## #I n s t a l l a t i o n i n s t r u c t i o n s f o r a c e n t r a l i z e d l o g s e r v e r :# ########################################################## ############################### ##### On t h e l o g s e r v e r : ##### ############################### ### T h i s w i l l a u t o m a t i c a l l y i n s t a l l and c o n f i g u r e : L o g s t a s h a s a r e c e i v e r , E l a s t i c s e a r c h , Kibana , Apache , w e b s i t e , C o l l e c t d , R s y s l o g and backup / d e l e t e cr o n −j o b s . 9 ### I t w i l l a l s o c l e a n up a l l r e m a i n i n g f i l e s . 10 11 ### E n t e r t h e f o l l o w i n g commands : 12 sudo −s 13 cd / 14 wget * l i n k t o z i p / l o g s e r v e r i n s t a l l . z i p * 15 u n z i p l o g s e r v e r i n s t a l l . z i p 16 ### You w i l l ha ve t o c ha n ge t h e IP a d d r e s s t o t h e IP a d d r e s s o f y o u r central log server . HOOFDSTUK 8. AUTOMATISATIE VAN DE INSTALLATIE 38 17 ### I t i s recommended t o u s e a s t a t i c IP t o a v o i d DHCP from c h a n g i n g y o u r IP and t h u s b r e a k i n g t h e l o g s e r v e r . 18 ### E n t e r t h e s e r v e r IP a d d r e s s i n t h e f o l l o w i n g commands , by r e p l a c i n g SERVERIPADDRESS . 19 f i n d . / r e s o u r c e s / * . / l o g s e r v e r i n s t a l l . s h −type f −exec sed − i −e ’ s / 1 0 . 0 . 0 . 9 9 / SERVERIPADDRESS/g ’ {} \ ; 20 21 ###Changing t h e Password and l o g i n name , ch a ng e YOURUSERNAME and YOURPASSWORD t o y o u r d e s i r e d username and p a s s w o r d . ( o p t i o n a l ) 22 f i n d . / l o g s e r v e r i n s t a l l . s h −type f −exec sed − i −e ’ s / i n v e n t i v e / YOURUSERNAME/g ’ {} \ ; 23 f i n d . / l o g s e r v e r i n s t a l l . s h −type f −exec sed − i −e ’ s / i d i d i d /YOURPASSWORD /g ’ {} \ ; 24 25 ###i n s t a l l a l l t h e components 26 b a s h l o g s e r v e r i n s t a l l . s h 27 28 ### s n a p s h o t / b a c k u p s a r e made o f t h e l a s t 30 d a y s e v e r y 7 days , i f you l o s e c r i t i c a l d a t a you can r e s t o r e a s n a p s h o t by u s i n g t h e f o l l o w i n g command : 29 c u r l −XPOST ” 1 0 . 0 . 0 . 9 9 : 9 2 0 0 / s n a p s h o t / my backup / s n a p s h o t 1 / r e s t o r e ” 30 31 32 #################################### 33 ##### On a L i n u x s e r v e r C l i e n t ##### 34 #################################### 35 36 ###T h i s w i l l a u t o m a t i c a l l y i n s t a l l and c o n f i g u r e : C o l l e c t d and R s y s l o g . 37 sudo −s 38 cd / 39 wget * l i n k t o f i l e / R s y s l o g A n d H a r d w a r e S h i p p e r . s h * 40 41 ### c h an ge t h e SERVERIPADDRESS . 42 f i n d . / R s y s l o g A n d H a r d w a r e S h i p p e r . s h −type f −exec sed − i −e ’ s / 1 0 . 0 . 0 . 9 9 / SERVERIPADDRESS/g ’ {} \ ; 43 44 ### r u n s c r i p t 45 b a s h R s y s l o g A n d H a r d w a r e S h i p p e r . s h 46 47 ###T h i s w i l l a u t o m a t c a l l y i n s t a l l a m e t r i c and s c r i p t u r a s h i p p e r 48 sudo −s 49 cd / 50 wget * l i n k t o f i l e / S c r i p t u r a A n d M e t r i c S h i p p e r . s h * 51 52 ### c h an ge t h e SERVERIPADDRESS . 53 f i n d . / S c r i p t u r a A n d M e t r i c S h i p p e r S t a n d a l o n e . s h −type f −exec sed − i −e ’ s / 1 0 . 0 . 0 . 9 9 / SERVERIPADDRESS/g ’ {} \ ; 54 55 ### c h an ge t h e s c r i p t u r a and m e t r i c s l o g l o c a t i o n , i m p o r t a n t i s t h a t you place a \ before every /. HOOFDSTUK 8. AUTOMATISATIE VAN DE INSTALLATIE 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 39 f i n d . / S c r i p t u r a A n d M e t r i c S h i p p e r . s h −type f −exec sed − i −e ’ s /\/ v a r \/ l o g \/ s c r i p t u r a . l o g /SCRIPTURALOCATION/g ’ {} \ ; ### r u n s c r i p t bash S c r i p t u r a A n d M e t r i c S h i p p e r . sh ###################################### ##### On a Windows s e r v e r C l i e n t ##### ###################################### T h i s w i l l a u t o m a t i c a l l y i n s t a l l and c o n f i g u r e S y s l o g a g e n t t o f r o w a r d y o u r Windows E v e n t l o g s . p l a c e t h e s y s l o g f o l d e r i n de r o o t o f y o u r C−d i s k . I s should look l i k e t h i s C:\ SyslogAgent \ I n s t a l l S y s l o g A g e n t . bat C:\ SyslogAgent \ SyslogAgent . exe C : \ S y s l o g A g e n t \ S y s l o g −c o n f i g . r e g Symply r u n I n s t a l l S y s l o g A g e n t . b a t a s a d m i n i s t r a t o r . ######################################## ##### On a Windows computer C l i e n t ##### ######################################## T h i s w i l l a u t o m a t i c a l l y i n s t a l l and c o n f i g u r e S y s l o g a g e n t t o f r o w a r d y o u r Windows E v e n t l o g s . 78 79 p l a c e t h e s y s l o g f o l d e r i n de r o o t o f y o u r C−d i s k . 80 I s s h o u l d l o o k l i k e t h i s 81 C : \ S y s l o g A g e n t \ I n s t a l l S y s l o g A g e n t . b a t 82 C : \ S y s l o g A g e n t \ S y s l o g A g e n t . e x e 83 C : \ S y s l o g A g e n t \ S y s l o g −c o n f i g . r e g 84 85 Symply r u n I n s t a l l S y s l o g A g e n t . b a t a s a d m i n i s t r a t o r . Hoofdstuk 9 How to use De werking van alle Kibana dashboards kan voor een onervaren gebruiker verwarrend zijn. Daarom is er op de log server website een pagina waarop uitgebreide instructies staan over hoe je alle dashboards kan gebruiken. Een overzicht van deze pagina aan de hand van screenshots geeft een goed inzicht in de werking van Kibana dashboards. De volledige pagina is te vinden in de bijlage, een screenshot van het bovenste deel van deze pagina is te vinden in figuur 10.2 op pagina 42. Op deze ”how to use” pagina worden de volgende aspecten behandeld: Beginpagina en keuze van dashboard. Basic dashboard controls. Your query optie. Grafieken. Tabellen. 40 Hoofdstuk 10 Resultaten 10.1 Inleiding Het resultaat van deze thesis wordt bekeken vanuit het standpunt van de eindgebruiker. Concreet komt dit neer op een overzicht van de verschillende Kibana dashboards en de data die hierin wordt weergegeven. Ook de centrale log server website die dient als een voorpagina voor al deze dashboards wordt kort toegelicht. Aangezien alle dashboards zeer uitgebreid zijn wordt er steeds een deel uitgekozen als afbeelding, de volledige screenshots van alle dashboards bevinden zich in bijlage.(zie sectie A.3 op pagina 53) De screenshots van de website zelf vertonen sommige kleurverschillen die er op de echte website niet zijn. Dit komt omdat de screenshots zijn genomen met een special tool waarmee een volledige screenshot van een website wordt genomen. Dit zorgt ervoor dat deze screenshots de volledige pagina omvatten ook al past deze niet binnen ´e´en venster. 10.2 Centrale log server website Op de centrale log server website vindt men de volgende onderdelen: Afbeelding en omschrijving van elk Kibana dashboard, inclusief links naar alle dashboards. Dropdown menu’s voor snel bereikbare links naar alle dashboards. Volledige how-to-use pagina waarop de werking van Kibana uitvoerig wordt uitgelegd aan de hand van screenshots. Pagina met een overzicht van de gebruikte architectuur zodat de gebruiker inzicht heeft in wat er achter de schermen gebeurt. 41 HOOFDSTUK 10. RESULTATEN Figuur 10.1: Centrale log server website homepage Figuur 10.2: How to use page 42 HOOFDSTUK 10. RESULTATEN 10.3 43 Full overview dashboard In dit dashboard wordt een volledig overzicht gegeven van alle logs die zich op de centrale log server bevinden, enkele belangrijke delen zijn: Overzicht van alle actieve hosts. Histogram van alle logs per type. Grafisch overzicht van alle logs per categorie. Tabellen van alle logs per categorie. Figuur 10.3: Full overview Figuur 10.4: Full overview all rows HOOFDSTUK 10. RESULTATEN 10.4 44 Linux server hardware monitor In dit dashboard wordt een overzicht gegeven van alle Linux server hardware logs, enkele belangrijke delen zijn: Overzicht van alle actieve servers. Histogram van alle Linux server hardware logs. Grafisch overzicht van verschillende hardware statistieken: CPU usage, RAM usage, SWAP usage, disk usage, data received, data transmitted en advanced disk IO stats. Tabel van alle hardware logs. Figuur 10.5: Linux server hardware monitor Figuur 10.6: Linux server hardware monitor all rows HOOFDSTUK 10. RESULTATEN 10.5 45 Linux server syslog monitor In dit dashboard wordt een overzicht gegeven van alle Linux server syslogs, enkele belangrijke delen zijn: Overzicht van alle actieve Linux servers. Histogram van alle Linux server syslogs. Grafisch overzicht van verschillende gegevens: syslog severity, syslog facility, syslog program en hosts. Tabel van alle Linux server syslogs. Figuur 10.7: Linux server syslog monitor Figuur 10.8: Linux server syslog monitor all rows HOOFDSTUK 10. RESULTATEN 10.6 46 Windows client event monitor In dit dashboard wordt een overzicht gegeven van alle Windows client events, enkele belangrijke delen zijn: Overzicht van alle actieve clients. Histogram van alle Windows client event logs. Grafisch overzicht van verschillende gegevens: loglevel, clients en programs. Tabel van alle Windows client event logs. Figuur 10.9: Windows client event monitor Figuur 10.10: Windows client event monitor all rows HOOFDSTUK 10. RESULTATEN 10.7 47 Windows server event monitor In dit dashboard wordt een overzicht gegeven van alle Windows server events, enkele belangrijke delen zijn: Overzicht van alle actieve Windows servers. Histogram van alle Windows server event logs. Grafisch overzicht van verschillende gegevens: loglevel, servers en programs. Tabel van alle Windows server event logs. Figuur 10.11: Windows server event monitor Figuur 10.12: Windows server event monitor all rows HOOFDSTUK 10. RESULTATEN 10.8 48 Apache server log monitor In dit dashboard wordt een overzicht gegeven van alle Apache server logs, enkele belangrijke delen zijn: Histogram van alle Apache logs. Grafisch overzicht van verschillende gegevens: accessed by, access trend, accessed size, amount of times accessed en errors. Tabel van alle Apache logs. Figuur 10.13: Apache server log monitor Figuur 10.14: Apache server log monitor all rows HOOFDSTUK 10. RESULTATEN 10.9 49 Scriptura log monitor In dit dashboard wordt een overzicht gegeven van alle Scriptura logs, enkele belangrijke delen zijn: Histogram van alle logs op basis van: alle logs, verschillende flow instance states en verschillende loglevels. Grafisch overzicht van verschillende gegevens: average creation time, pages created, file type created, loglevels, aborted vs ended en multiline logs. Tabel van alle Scriptura logs. Figuur 10.15: Scriptura log monitor Figuur 10.16: Scriptura log monitor all rows HOOFDSTUK 10. RESULTATEN 10.10 50 Metrics log monitor In dit dashboard wordt een overzicht gegeven van alle metric logs, enkele belangrijke delen zijn: Histogram van alle metric logs. Grafisch overzicht van verschillende gegevens: OS load average, OS cpu load, os process cpu load, os process cpu time, os memory physical free, os memory swap free, JVM uptime en KVM thread count. Tabel van alle metric logs. Figuur 10.17: Metrics log monitor Figuur 10.18: Metrics log monitor all rows HOOFDSTUK 10. RESULTATEN 10.11 51 Basic log monitor In dit dashboard wordt een standaard overzicht gegeven van alle logs, dit dashboard zit standaard in Kibana en moet niet worden geconfigureerd. Indien alle dashboards worden gewist van de server kan Kibana opnieuw worden ge¨ınstalleerd en zal dit dashboards er steeds standaard in staan. 11 Hoofdstuk Besluit De opdracht tot opstellen van een centrale log server is volledig volbracht. Logs van allerhande machines binnen Inventive Designers worden verzameld, doorgestuurd, geparsed en opgeslagen op een centrale log server. Als aanvulling op deze opdracht zijn er enkele onderdelen toegevoegd aan de opstelling die niet vooropgesteld waren, maar die bij het maken van de opstelling duidelijk hun voordelen hadden. Deze aanvullingen zijn: Het maken van backups en het verwijderen van oude logs. Monitoren van de Elasticsearch server zelf, aan de hand van ElasticHQ. Toevoegen van authenticatie. Automatische installatie van alle software. Instructies voor zowel gebruik als installatie. Deze onderdelen zijn niet noodzakelijk voor de werking van een centrale log server maar zijn wat de centrale log server binnen Inventive Designers onderscheidt van de rest. Interessant om op te merken is de keuze voor een volledig open source opstelling, alle software waarvan gebruik wordt gemaakt is volledig gratis. Dit staat in sterk contrast met centrale log servers solutions die worden aangeboden als kant- en-klare service door bedrijven zoals Splunk[40]. Ook de combinatie van Elasticsearch, Logstash en Kibana, zijn een goede keuze gebleken. Gedurende mijn stage kreeg ik zelf plots een mail van Kibana waarin zij zelf deze combinatie aanbevelen onder de naam ELK stack [15]. Zonder hiervan op de hoogte te zijn had ik reeds zelf voor deze combinatie gekozen. Als conclusie kan men stellen dat in het huidige klimaat van visualisatie en automatisatie deze centrale log server zeker zijn plaats zal vinden en zijn nut zal bewijzen. 52 Bijlage A Bijlagen A.1 Installatie bestanden InstallationInstructions.txt logserverinstall.sh collectd.conf logstash.conf InstallSyslogAgent.bat RsyslogAndHardwareShipper.sh ScripturaAndMetricShipper.sh ScripturaAndMetricShipperESserver.sh A.2 Manuals SyslogAgentManual.pdf A.3 Screenshots Homepage.png Architecture page.png 53 BIJLAGE A. BIJLAGEN HowToUse.png Full Overview.png Linux Server Hardware Monitor.png Linux Servers Syslog Monitor.png Apache Server Log Monitor.png Scriptura Log Monitor.png Metrics Log Monitor.png ElasticHQ.png A.4 Logstash input en output ScripturaLogMonitorInput.txt ScripturaLogMonitorOutput.png MetricsLogMonitorInput.txt MetricsLogMonitorOutput.png ApacheServerLogMonitorInput.txt ApacheServerLogMonitorOutput.png LinuxServerHardwareMonitorInput.png LinuxServerHardwareMonitorOutput.png LinuxServersSyslogMonitorInput.txt LinuxServersSyslogMonitorOutput.png WindowsClientsSyslogMonitorInput.png WindowsClientsSyslogMonitorOutput.png WindowsServersSyslogMonitorInput.png WindowsServersSyslogMonitorOutput.png A.5 Demo materiaal Promo-video : http://youtu.be/ZaFvbogwtQw 54 Bibliografie [1] Apache authentication. http://www.yolinux.com/TUTORIALS/ LinuxTutorialApacheAddingLoginSiteProtection.html/. 31 [2] Apache logs information. http://httpd.apache.org/docs/2.4/logs.html/. 6 [3] Apache server information. http://httpd.apache.org/. 15, 31 [4] Bash information. http://en.wikipedia.org/wiki/Bash (Unix shell)/. 35 [5] Batch file registry add. http://stackoverflow.com/questions/13809856/ run-reg-command-in-cmd-bat-file/. 37 [6] Batch information. http://www.makeuseof.com/tag/write-simple-batch-bat-file/. 36 [7] Collectd configuration file. http://collectd.org/documentation/manpages/collectd.conf. 5.shtml/. 6, 18 [8] Collectd information. http://collectd.org//. 14 [9] Dhcp information. Protocol/. 7 http://en.wikipedia.org/wiki/Dynamic Host Configuration [10] Elastic hq information. http://www.elastichq.org//. 32 [11] Elasticsearch cluster information. http://www.elasticsearch.org/guide/en/ elasticsearch/reference/current/modules-cluster.html/. 27 [12] Elasticsearch index information. http://www.elasticsearch.org/guide/en/elasticsearch/ reference/current/index-modules.html/. 30 [13] Elasticsearch overview. http://www.elasticsearch.org/overview/elasticsearch/. 15, 30 [14] Elasticsearch snapshot and restore information. http://www.elasticsearch.org/guide/en/ elasticsearch/reference/current/modules-snapshots.html/. 33 55 BIBLIOGRAFIE 56 [15] Elk stack information. elk-stack-devops-environment/. 52 http://www.elasticsearch.org/webinars/ [16] Gpu monitor tutorial. https://blog.trifork.com/2014/01/28/ using-logstash-Elasticsearch-and-kibana-to-monitor-your-video-card-a-tutorial/. 6 [17] Gpuz information. http://www.techpowerup.com/gpuz/. 6 [18] Kiban queries and filters information. http://www.elasticsearch.org/guide/en/kibana/ current/working-with-queries-and-filters.html/. 30 [19] Kibana git page. https://github.com/elasticsearch/kibana/. 30 [20] Kibana information. http://www.elasticsearch.org/overview/kibana/. 15, 30 [21] Log file information. http://en.wikipedia.org/wiki/Logfile/. 5 [22] Logastsh udp input information. http://logstash.net/docs/1.4.1/inputs/udp/. 29 [23] Logstash collectd input information. http://logstash.net/docs/1.4.1/inputs/collectd/. 29 [24] Logstash file input. http://logstash.net/docs/1.4.1/inputs/file/. 21, 29 [25] Logstash grok debugger. http://grokdebug.herokuapp.com/. 22 [26] Logstash grok pattern information. http://logstash.net/docs/1.4.1/filters/grok/. 22, 23 [27] Logstash information. http://logstash.net/. 15, 20 [28] Logstash kv-filter information. http://logstash.net/docs/1.4.1/filters/kv/. 24 [29] Logstash multiline information. http://logstash.net/docs/1.4.1/codecs/multiline/. 21 [30] Logstash mutate information. http://logstash.net/docs/1.4.1/filters/mutate/. 24 [31] Logstash tutorial. getting-started-with-logstash/. 21, 28 http://logstash.net/docs/1.4.1/tutorials/ [32] Obscura html template. obscura-free-responsive-html-template//. 31 http://elemisfreebies.com/11/20/ [33] Parsing information. http://en.wikipedia.org/wiki/Parsing/. 22 [34] Rsyslog configuration instructions 1. http://www.rsyslog.com/. 18 [35] Rsyslog configuration instructions 2. sending-messages-to-a-remote-syslog-server/. 18 [36] Rsyslog configuration instructions rsyslog-conf-tutorial.html/. 18 3. http://www.rsyslog.com/ http://shallowsky.com/blog/linux/ [37] Rsyslog information. http://www.rsyslog.com/. 14, 18 BIBLIOGRAFIE [38] Sccm information. Manager/. 3 57 http://en.wikipedia.org/wiki/System Center Configuration [39] Scriptura information. https://www.inventivedesigners.com/products/scriptura/. 6 [40] Splunk information. http://www.splunk.com/view/log-management/SP-CAAAC6F/. 52 [41] Syslog agent information. http://www.syslogserver.com/syslogagent.html/. 14, 27 [42] Syslog infromation. http://en.wikipedia.org/wiki/Syslog/. 6 [43] Tcp vs udp. http://www.rtcmagazine.com/articles/view/102819/. 17 [44] Windows deployment using windows server 2012 tutorial 1. http://www.scconfigmgr. com/2013/10/19/deploy-windows-8-1-with-configmgr-2012-r2/. 3 [45] Windows deployment using windows server 2012 tutorial 2. http://www.windows-noob.com/forums/index.php?/topic/ 7945-using-system-center-2012-configuration-manager-part-12-connecting-powershell-and-building 3 [46] Windows event logs information. http://windows.microsoft.com/en-au/windows/ what-information-event-logs-event-viewer#1TC=windows-7/. 6 [47] Windows server 2012 information. http://www.microsoft.com/en-us/server-cloud/ products/windows-server-2012-r2/#fbid=ZabVA7svoyF/. 3
© Copyright 2024 ExpyDoc