2. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
AGENDA
● WIE ZIJN WIJ?
● BELANG VAN LOGGING?
● WAAROM CENTRALE LOGGING?
○ VOOR DRUPAL-DEVS
○ VOOR SYSOPS
● DE ELK-STACK
○ COMPONENTEN
● WAT LEVERT HET OP?
● ERVARINGEN TOT NU TOE
● VRAGEN?
3. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WIE ZIJN WIJ?
● Webscale
○ Hosting sinds 2001
○ Hosting voor professionals
○ Gespecialiseerd in PHP frameworks
■ zoals Drupal
■ maar ook Symfony, Wordpress, Typo3 & Magento
○ ISO 9001 en 27001 NL datacenters
○ CISSP management
○ 100% open source
○ 300+ managed servers
○ 200+ Drupal sites
○ Webscale werkt voor:
■ Rijksoverheid, Gemeenten, Graydon, Jaguar Land Rover, ThiemeMeulenhoff
○ Webscale werkt met:
■ Cipix, d-Media, Merge, ezCompany
4. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
BELANG VAN LOGGING?
● Vastleggen van events
● Health-status van je applicatie / platform
● Troubleshooting
● Debugging
● Security
● Correlatie van events
● Statistieken gebruik
5. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAAROM CENTRALE LOGGING?
Voor de Devs:
● Alle logging inzichtelijk vanuit een lokatie
● Doorzoekbaar middels queries
● Monitoren van nieuwe sites na deployment (ACC en PROD)
● Monitoren van bestaande sites na nieuwe updates
● Monitoren van koppelingen met externe systemen
● Periodieke controle (bijv. elke maand een rapportage t.b.v. audits)
6. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAAROM CENTRALE LOGGING?
Voor de SysOps:
● Monitoren van errors
● Monitoren van ongewenst verkeer, proxy-requests, badbots, niet-legitieme requests
● Monitoren van performance
● Monitoren van verbruik resources, voor beslisvorming upgrades
● Correlaties leggen tussen events diverse logfiles van meerdere systemen
● Periodieke controle (bijv. elke maand een rapportage t.b.v. audits)
7. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAAROM CENTRALE LOGGING?
Het probleem:
● Logdata is “ongestructureerd” en lastig doorzoekbaar
● Vaak op meerdere servers
● Zoeken op basis van grep, awk en regex-magic
drupalsite.nl:80 80.60.70.109 - - [30/Mar/2015:12:26:22 +0200] "GET
/sites/drupalsite.nl/files/styles/actionblock-
image/public/uploads/actionblockimage/szwbannertoeslag300x250_0.gif?itok=0jUPhVnE HTTP/1.1" 200 39342
"http://www.kinderstadtilburg.nl/" "Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4
(KHTML, like Gecko) Version/8.0 Mobile/12B466 Safari/600.1.4"
drupalsite.nl:80 80.60.70.109 - - [30/Mar/2015:12:26:22 +0200] "GET
/sites/drupalsite.nl/modules/contrib/colorbox/styles/plain/images/loading_animation.gif HTTP/1.1" 200
2767 "http://www.drupalsite.nl/" "Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4
(KHTML, like Gecko) Version/8.0 Mobile/12B466 Safari/600.1.4"
drupalsite.nl:80 80.60.70.109 - - [30/Mar/2015:12:26:22 +0200] "GET
/sites/drupalsite.nl/themes/kinsbase/images/arrows.png HTTP/1.1" 200 408 "http://www.drupalsite.nl/"
"Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0
Mobile/12B466 Safari/600.1.4"
8. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAAROM CENTRALE LOGGING?
De oplossing:
● Transporteer de logging naar een centrale lokatie
● Identificeren van velden op basis van “grok-filters”
● Filteren en verrijken van de data
● Maak van iedere logregel een json-document
● Sla het json-document op in ElasticSearch
drupalsite.nl:80 80.60.70.109 - - [30/Mar/2015:12:26:22 +0200]
"GET /sites/drupalsite.nl/files/styles/actionblock-
image/public/uploads/actionblockimage/szwbannertoeslag300x250_0.g
if?itok=0jUPhVnE HTTP/1.1" 200 39342 "http://www.drupalsite.nl/"
"Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X)
AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B466
Safari/600.1.4"
{ "fqdn": "www01.drupal01.webscale.nl",
"http_vhost": "drupalsite.nl",
"http_port": "80",
"http_clientip": "80.60.70.109",
"http_ident": "-",
"http_auth": "-",
"http_timestamp": "30/Mar/2015:12:26:22 +0200",
"http_method": "GET",
9. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAAROM CENTRALE LOGGING?
Uiteindelijke situatie:
● Logging beschikbaar, doorzoekbaar en gevisualiseerd in Kibana
12. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
DE ELK-STACK
DRUPAL
WEBSERVER
LOGSTASH
(INDEXER)
LOGSTASH
(RECEIVER)
REDIS
(MESSAGEQUEUE)
ELASTICSEARCH KIBANA
(WEBINTERFACE)
13. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAT LEVERT HET OP?
● Logging centraal beschikbaar
● Logging eenvoudig doorzoekbaar
● Devs hoeven niet meer via ssh in te loggen op server bij onderzoek
● Dashboards via een webinterface geven duidelijk overzicht van de status
● Debugging eenvoudiger
● Root-cause-analysis vele malen sneller bij problemen
● Statistieken over gebruik Drupal-Sites
● Periodieke audits kosten minder tijd
14. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
ERVARINGEN TOT NU TOE
Positief:
● ELK is snel!
● Met de juiste opzet zeer stabiel
● Logstash-Forwarder lightweight en veilig (TLS)
● Logstash zeer flexibel en uitbreidbaar
● Makkelijk zoeken in Kibana
● Visualisaties veel eenvoudiger in Kibana4
● Biedt al snel toegevoegde waarde
15. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
ERVARINGEN TOT NU TOE
Negatief of wat kan beter:
● Maken grokfilters soms nog lastig
● Ontwikkeling van ELK gaat zeer snel, dus breekt soms bij nieuwe releases
● Documentatie en tutorials vaak out-of-date
● Schaalbare architectuur biedt wel wat uitdagingen
● Kibana nog beperkt in functionaliteit (t.o.v. bijv. Splunk)
● Kibana out-of-the-box geen authenticatie en autorisatie (wel met Shield-plugin)
16. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
ERVARINGEN TOT NU TOE
Lessons Learned en plannen voor de toekomst:
● Centrale logging biedt zeker een flinke toegevoegde waarde
● Zowel voor de Devs als voor SysOps
● Let goed op “_grokparsefailures”
● grokdebug.herokuapp.com is een lifesaver!
● Nog meer logfiles opnemen
● Eventueel uitfaseren logstash-forwarder voor rsyslog (Jessie)
● Verder experimenteren met clustered-elasticsearch
● Implementeren authenticatie en authorisatie