Scriptie - Elektronica-ICT

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