SlideShare uma empresa Scribd logo
1 de 23
Centrale Logging Drupal
Logging van meerdere
Drupal-sites
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?
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
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
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)
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)
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"
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",
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
WAAROM CENTRALE LOGGING?
Uiteindelijke situatie:
● Logging beschikbaar, doorzoekbaar en gevisualiseerd in Kibana
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
DE ELK-STACK
ELASTICSEARCH
LOGSTASH
KIBANA
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
DE ELK-STACK
● Logstash-Forwarder
● Logstash-Receiver
● Redis
● Logstash-Indexer
● ElasticSearch
● Nginx / Kibana
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
DE ELK-STACK
DRUPAL
WEBSERVER
LOGSTASH
(INDEXER)
LOGSTASH
(RECEIVER)
REDIS
(MESSAGEQUEUE)
ELASTICSEARCH KIBANA
(WEBINTERFACE)
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
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
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)
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
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
SCREENSHOTS - DRUPAL LOG
/var/log/drupal/drupal.log
Apr 29 13:55:03 www01 drupal: 5|1430308503|cron|127.0.0.1|0||http://site|http://site.nl/index.php|||Cron run completed.
Apr 29 14:00:02 www01 drupal: 5|1430308802|job_scheduler|127.0.0.1|0||http://site|http://site/index.php|||Finished processing
scheduled jobs (0 sec s, 0 total, 0 failed).
Apr 29 14:23:47 www01 drupal: 5|1430310227|user|109.232.42.91|0||https://www.site.nl|https://www.site.nl/|https://www.site.nl/||Login
attempt failed for a.user.
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
SCREENSHOTS - LOGSTASH-FORWARDER
/etc/logstash/logstash-forwarder.conf
"network": {
"servers": [ "java01.log01.webscale.nl:5000" ],
"timeout": 15,
"ssl ca": "/etc/logstash/java01.log01.webscale.nl.crt"
},
"files": [{
"paths": [ "/var/log/drupal/drupal.log" ],
"fields": { "type": "drupal", "fqdn": "www01.drupal01.webscale.nl" }
}, {
"paths": [ "/var/log/apache2/*access.log" ],
"fields": { "type": "apache-vhost", "fqdn": "www01.drupal01.webscale.nl" }
}, {
"paths": [ "/var/log/apache2/*error.log" ],
"fields": { "type": "apache-error", "fqdn": "www01.drupal01.webscale.nl" }
}
]
}
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
SCREENSHOTS - DRUPAL GROKFILTER
DRUPAL_SYSLOGID [a-zA-Z0-9._-]+
DRUPAL_TYPE [a-zA-Z0-9._ -]+
DRUPAL_TIME %{MONTH} %{DAY} %{TIME} %{YEAR}
DRUPAL_WATCHDOG %{SYSLOGTIMESTAMP:timestamp} %{IPORHOST:host} %{DRUPAL_SYSLOGID:drupal_sylogid}:
%{NUMBER:drupal_severity}|%{NUMBER:drupal_timestamp}|%{DRUPAL_TYPE:drupal_type}|%{IP:drupal_ip}|(?<drupal_uid>[^|]*)|(?<drupal_
username>[^|]*)|http(s)?://%{HOSTNAME:drupal_vhost}|(?<drupal_request>[^|]*)|(?<drupal_referer>[^|]*)|(?<drupal_link>[^|]*)|
(?<drupal_message>.*)
DRUPAL_WATCHDOG_VARNISH %{SYSLOGTIMESTAMP:timestamp} %{IPORHOST:host}
%{DRUPAL_SYSLOGID:drupal_sylogid}[%{NUMBER:drupal_syslogpid}]: %{NOTSPACE:varnish_interface} %{NOTSPACE:varnish_command}
%{IP:varnish_source_ip} %{NUMBER:varnish_source_port} %{IP:varnish_destination_ip} %{NUMBER:varnish_destination_port}
%{NOTSPACE:varnish_method} %{GREEDYDATA:varnish_message}
DRUPAL_WATCHDOG_CRON %{SYSLOGTIMESTAMP:timestamp} %{IPORHOST:host} %{DRUPAL_SYSLOGID:drupal_sylogid}:
http(s)?://%{HOSTNAME:drupal_vhost}|%{NUMBER:drupal_timestamp}|%{DRUPAL_TYPE:drupal_type}|%{IP:drupal_ip}|(?<drupal_request>[^|]
*)||%{NUMBER:drupal_severity}||(?<drupal_message>.*)
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
SCREENSHOTS - KIBANA DISCOVER
drupal_severity:[1 TO 4] OR drupal_type:php
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
SCREENSHOTS - KIBANA VISUALIZE
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
SCREENSHOTS - KIBANA DASHBOARD
CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL
VRAGEN?

Mais conteúdo relacionado

Semelhante a Drupaljam2015 logstash

Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015Arjan Snaterse
 
Lucius Websystems Drupal Startersdag
Lucius Websystems Drupal StartersdagLucius Websystems Drupal Startersdag
Lucius Websystems Drupal StartersdagLuciuswebsystems
 
Profiel thymos rudi respen
Profiel thymos   rudi respenProfiel thymos   rudi respen
Profiel thymos rudi respenRudi Respen
 
General Drupal presentation in Dutch
General Drupal  presentation in DutchGeneral Drupal  presentation in Dutch
General Drupal presentation in DutchRoel Meester
 
2019 diy migration webinar gs nl
2019 diy migration webinar gs nl2019 diy migration webinar gs nl
2019 diy migration webinar gs nlEDB
 
Projectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamProjectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamBert Boerland
 
Oplijsting mogelijkheden open source
Oplijsting mogelijkheden open sourceOplijsting mogelijkheden open source
Oplijsting mogelijkheden open sourceguesta83c7d
 
oplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_sourceoplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_sourceguesta83c7d
 
Joomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla PerformanceJoomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla PerformanceSimon Kloostra
 
IPv6 news-nl-20121009
IPv6 news-nl-20121009IPv6 news-nl-20121009
IPv6 news-nl-20121009Bart Hanssens
 
Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8Raymond Muilwijk
 
Drupal + Open Atrium bij de Vlaamse Erfgoedbibliotheek
Drupal + Open Atrium bij de Vlaamse ErfgoedbibliotheekDrupal + Open Atrium bij de Vlaamse Erfgoedbibliotheek
Drupal + Open Atrium bij de Vlaamse ErfgoedbibliotheekDavid Coppoolse
 
Component-based ontwikkelen met OSGi: van embedded tot enterprise
Component-based ontwikkelen met OSGi: van embedded tot enterpriseComponent-based ontwikkelen met OSGi: van embedded tot enterprise
Component-based ontwikkelen met OSGi: van embedded tot enterpriseMarcel Offermans
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureMichaël Hompus
 
Drupal intro 2010
Drupal intro 2010Drupal intro 2010
Drupal intro 2010Hans Rossel
 
Wido den Hollander - IPv6
Wido den Hollander - IPv6Wido den Hollander - IPv6
Wido den Hollander - IPv6Splend
 

Semelhante a Drupaljam2015 logstash (20)

Joomla in een doosje
Joomla in een doosjeJoomla in een doosje
Joomla in een doosje
 
Zarafa als alternatief
Zarafa als alternatiefZarafa als alternatief
Zarafa als alternatief
 
Windows Server2008
Windows Server2008Windows Server2008
Windows Server2008
 
Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015Deployment strategieën, WP Meetup Enschede, 26-02-2015
Deployment strategieën, WP Meetup Enschede, 26-02-2015
 
Lucius Websystems Drupal Startersdag
Lucius Websystems Drupal StartersdagLucius Websystems Drupal Startersdag
Lucius Websystems Drupal Startersdag
 
Profiel thymos rudi respen
Profiel thymos   rudi respenProfiel thymos   rudi respen
Profiel thymos rudi respen
 
General Drupal presentation in Dutch
General Drupal  presentation in DutchGeneral Drupal  presentation in Dutch
General Drupal presentation in Dutch
 
2019 diy migration webinar gs nl
2019 diy migration webinar gs nl2019 diy migration webinar gs nl
2019 diy migration webinar gs nl
 
Projectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdamProjectpaas drupaljam 2013 rotterdam
Projectpaas drupaljam 2013 rotterdam
 
Oplijsting mogelijkheden open source
Oplijsting mogelijkheden open sourceOplijsting mogelijkheden open source
Oplijsting mogelijkheden open source
 
oplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_sourceoplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_source
 
Joomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla PerformanceJoomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla Performance
 
IPv6 news-nl-20121009
IPv6 news-nl-20121009IPv6 news-nl-20121009
IPv6 news-nl-20121009
 
Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8
 
Drupal + Open Atrium bij de Vlaamse Erfgoedbibliotheek
Drupal + Open Atrium bij de Vlaamse ErfgoedbibliotheekDrupal + Open Atrium bij de Vlaamse Erfgoedbibliotheek
Drupal + Open Atrium bij de Vlaamse Erfgoedbibliotheek
 
Component-based ontwikkelen met OSGi: van embedded tot enterprise
Component-based ontwikkelen met OSGi: van embedded tot enterpriseComponent-based ontwikkelen met OSGi: van embedded tot enterprise
Component-based ontwikkelen met OSGi: van embedded tot enterprise
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows Azure
 
Drupal intro 2010
Drupal intro 2010Drupal intro 2010
Drupal intro 2010
 
Wido den Hollander - IPv6
Wido den Hollander - IPv6Wido den Hollander - IPv6
Wido den Hollander - IPv6
 
Drupal 7 Architectuur
Drupal 7 ArchitectuurDrupal 7 Architectuur
Drupal 7 Architectuur
 

Drupaljam2015 logstash

  • 1. Centrale Logging Drupal Logging van meerdere Drupal-sites
  • 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
  • 10. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL DE ELK-STACK ELASTICSEARCH LOGSTASH KIBANA
  • 11. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL DE ELK-STACK ● Logstash-Forwarder ● Logstash-Receiver ● Redis ● Logstash-Indexer ● ElasticSearch ● Nginx / 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
  • 17. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL SCREENSHOTS - DRUPAL LOG /var/log/drupal/drupal.log Apr 29 13:55:03 www01 drupal: 5|1430308503|cron|127.0.0.1|0||http://site|http://site.nl/index.php|||Cron run completed. Apr 29 14:00:02 www01 drupal: 5|1430308802|job_scheduler|127.0.0.1|0||http://site|http://site/index.php|||Finished processing scheduled jobs (0 sec s, 0 total, 0 failed). Apr 29 14:23:47 www01 drupal: 5|1430310227|user|109.232.42.91|0||https://www.site.nl|https://www.site.nl/|https://www.site.nl/||Login attempt failed for a.user.
  • 18. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL SCREENSHOTS - LOGSTASH-FORWARDER /etc/logstash/logstash-forwarder.conf "network": { "servers": [ "java01.log01.webscale.nl:5000" ], "timeout": 15, "ssl ca": "/etc/logstash/java01.log01.webscale.nl.crt" }, "files": [{ "paths": [ "/var/log/drupal/drupal.log" ], "fields": { "type": "drupal", "fqdn": "www01.drupal01.webscale.nl" } }, { "paths": [ "/var/log/apache2/*access.log" ], "fields": { "type": "apache-vhost", "fqdn": "www01.drupal01.webscale.nl" } }, { "paths": [ "/var/log/apache2/*error.log" ], "fields": { "type": "apache-error", "fqdn": "www01.drupal01.webscale.nl" } } ] }
  • 19. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL SCREENSHOTS - DRUPAL GROKFILTER DRUPAL_SYSLOGID [a-zA-Z0-9._-]+ DRUPAL_TYPE [a-zA-Z0-9._ -]+ DRUPAL_TIME %{MONTH} %{DAY} %{TIME} %{YEAR} DRUPAL_WATCHDOG %{SYSLOGTIMESTAMP:timestamp} %{IPORHOST:host} %{DRUPAL_SYSLOGID:drupal_sylogid}: %{NUMBER:drupal_severity}|%{NUMBER:drupal_timestamp}|%{DRUPAL_TYPE:drupal_type}|%{IP:drupal_ip}|(?<drupal_uid>[^|]*)|(?<drupal_ username>[^|]*)|http(s)?://%{HOSTNAME:drupal_vhost}|(?<drupal_request>[^|]*)|(?<drupal_referer>[^|]*)|(?<drupal_link>[^|]*)| (?<drupal_message>.*) DRUPAL_WATCHDOG_VARNISH %{SYSLOGTIMESTAMP:timestamp} %{IPORHOST:host} %{DRUPAL_SYSLOGID:drupal_sylogid}[%{NUMBER:drupal_syslogpid}]: %{NOTSPACE:varnish_interface} %{NOTSPACE:varnish_command} %{IP:varnish_source_ip} %{NUMBER:varnish_source_port} %{IP:varnish_destination_ip} %{NUMBER:varnish_destination_port} %{NOTSPACE:varnish_method} %{GREEDYDATA:varnish_message} DRUPAL_WATCHDOG_CRON %{SYSLOGTIMESTAMP:timestamp} %{IPORHOST:host} %{DRUPAL_SYSLOGID:drupal_sylogid}: http(s)?://%{HOSTNAME:drupal_vhost}|%{NUMBER:drupal_timestamp}|%{DRUPAL_TYPE:drupal_type}|%{IP:drupal_ip}|(?<drupal_request>[^|] *)||%{NUMBER:drupal_severity}||(?<drupal_message>.*)
  • 20. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL SCREENSHOTS - KIBANA DISCOVER drupal_severity:[1 TO 4] OR drupal_type:php
  • 21. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL SCREENSHOTS - KIBANA VISUALIZE
  • 22. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL SCREENSHOTS - KIBANA DASHBOARD
  • 23. CENTRALE LOGGING DRUPALCENTRALE LOGGING DRUPAL VRAGEN?