workshop logfile analyse mit splunk
TRANSCRIPT
@mindbox_dd@hannes3686
Logfile Analyse mit Splunk
@mindbox_dd@hannes3686
@mindbox_dd@hannes3686
Aufbau von Logdaten
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Web Access Logfiles erfassen jeden einzelnen Zugriff
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
HTTP User Agent = Visitenkarte des Browsers
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
IP Adresse des Besuchers
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
IP Adresse des Besuchers
Achtung! Personenbeziehbare Daten.https://www.heise.de/newsticker/meldung/BGH-verhandelt-zur-Zulaessigkeit-von-IP-Adressen-Speicherung-auf-Websites-3625336.html
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
geladene Bytes
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
HTTP Status Code
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
aufgerufene URL
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Zeitstempel
Aufbau von Logdaten
@mindbox_dd@hannes3686
domain.de-2017-02-16:66.249.66.188 - - [16/Feb/2017:00:40:41 +0100] "GET /mieten/ http/1.1" 301 29737 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Domain + Tag
Aufbau von Logdaten
@mindbox_dd@hannes3686
Aufbau von Logdaten
jeder Zugriff = 1 Zeile bedeutet Millionen von Datensätzen schon bei mittelgroßen Websites Logfile im *.txt Format ist schnell mehrere GB groß
@mindbox_dd@hannes3686
Herausforderung
@mindbox_dd@hannes3686
Lösung: Splunk
Business Intelligence Software => ideal für Big Data
@mindbox_dd@hannes3686
Lösung: Splunk
Kostenlos: bis 500MB zusätzliche Daten / Tag
@mindbox_dd@hannes3686
Herausforderung
!$#&%$
5GB!?
@mindbox_dd@hannes3686
Gepackte Logdatei verwenden
@mindbox_dd@hannes3686
… oder Logdatei verkleinern
@mindbox_dd@hannes3686
Vorbereitung | Terminalbefehle
@mindbox_dd@hannes3686
Vorbereitung | Logdatei verkleinern
1. Terminal aufrufen 2. In das Verzeichnis mit den entpackten Logdateien wechseln 3. Mit grep-Befehl relevante Zeilen in eine neue Datei kopieren
Mac
@mindbox_dd@hannes3686
Vorbereitung | Terminalbefehle
pwd - Gibt aus, in welchem Ordner man sich befindet ls - Listet Dateien und Unterordner auf cd Verzeichnisname - wechselt Unterverzeichnis cd .. - wechselt ins übergeordnete Verzeichnis
Mac
@mindbox_dd@hannes3686
Vorbereitung | Terminalbefehle
Durchsucht alle Dateien im Verzeichnis & kopiert relevante Googlebot-Zeilen in die neue Datei logfile.txt
Grep „66.249.“ *.*>logfile.txt
Mac
@mindbox_dd@hannes3686
Vorbereitung | Logdatei verkleinern
1. Eingabeaufforderung aufrufen 2. In das Verzeichnis mit den entpackten Logdateien wechseln 3. Mit findstr-Befehl relevante Zeilen in eine neue Datei kopieren
Windows
@mindbox_dd@hannes3686
Vorbereitung | Terminalbefehle
pwd - Gibt aus, in welchem Ordner man sich befindet ls - Listet Dateien und Unterordner auf cd Verzeichnisname - wechselt Unterverzeichnis cd .. - wechselt ins übergeordnete Verzeichnis
Windows
@mindbox_dd@hannes3686
Vorbereitung | Terminalbefehle
Durchsucht alle Dateien im Verzeichnis & kopiert relevante Googlebot-Zeilen in die neue Datei logfile.txt
findstr /I /C:66.249 *.* >>logfile.txt
Windows
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
Logdaten bei Splunk importieren
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
Logdaten bei Splunk importieren
einmalig, einzelne Datei
mehrere Dateien, Verzeichnis überwachen
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
Logdaten bei Splunk importieren
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
Typ der Datenquelle wählen: access_combined Splunk zerlegt die Zeilen automatisch in ihre Bestandteile und indiziert sie
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
„Host“ definieren > beliebig definierbar, idealerweise wird Domainname gewählt
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
„Index“ neu anlegen, sonst werden später Daten verschiedener Server gemischt
@mindbox_dd@hannes3686
Splunk | Datenanalyse vorbereiten
Name definieren genügt
@mindbox_dd@hannes3686
Splunk | OberflächeBefehlszeile Zeitraum wählbar
extrahierte Felder
Suchtreffer
@mindbox_dd@hannes3686
Splunk | Oberfläche
Wechsel zwischen Diagrammen & tabellarischen Daten
@mindbox_dd@hannes3686
Splunk | Oberfläche
unterschiedliche Diagrammtypen wählbar
@mindbox_dd@hannes3686
Splunk | Analysen
Jede Suche beinhaltet host & clientip, um nur Google-Einträge zur richtigen Seite zu analysieren.
@mindbox_dd@hannes3686
Splunk | Analysen
Die wichtigsten Anweisungen:
• Die häufigsten … - | top 10 FELDNAME
• Diagramm mit Zeitverlauf - | timechart count by day - | timechart count by uri - | timechart span=1w count by uri
• Tabellarische Statistik - | stats count by status
• gewöhnliche Diagramme - | chart count by date_hour
• Pipe „|“ startet einen Befehl
@mindbox_dd@hannes3686
Splunk | AnalysenSuche nach IP = 18.452 Ereignisse
Suche nach „googlebot“ = 19.082 Ereignisse
1. Generelles Crawl-Verhalten
host="MBXIT-256-HaRi.local" clientip="66.249.*" | timechart count by day
@mindbox_dd@hannes3686
Splunk | Analysen2. Welche URLs werden am häufigsten aufgesucht?
host="MBXIT-256-HaRi.local" clientip="66.249.*" | top 10 uri
Startseite, Favicon, robots.txt, Hauptkategorien / gut rankende Seiten
stehen hier irrelevante URIs? => ggf. Optimierungsbedarf f. interne Verlinkung
@mindbox_dd@hannes3686
Splunk | Analysen3. Mit welchen User-Agents greift der Bot am meisten zu?
host="MBXIT-256-HaRi.local" clientip="66.249.*" | top 10 useragent
@mindbox_dd@hannes3686
Splunk | Analysen4. Wird „Link Juice“ vergeudet? Gibt es Fehlerseiten?
@mindbox_dd@hannes3686
Splunk | Analysen4. Wird „Link Juice“ vergeudet? Gibt es Fehlerseiten?
host="MBXIT-256-HaRi.local" clientip="66.249.*" | stats count by status
4** - 5** vermeiden, 302-307 Codes prüfen Status Codes erklärt unter: https://de.wikipedia.org/wiki/HTTP-Statuscode
@mindbox_dd@hannes3686
Splunk | Analysen5. Welche Seiten sind betroffen?
host="MBXIT-256-HaRi.local" clientip="66.249.*" status=404 OR status=410 OR status=500 | stats count by uri
host="MBXIT-256-HaRi.local" clientip="66.249.*" status=302 OR status=307 | stats count by uri
host="MBXIT-256-HaRi.local" clientip="66.249.*" status>301 status<400 | stats count by status
@mindbox_dd@hannes3686
Splunk | Analysen6. Sind Status-Code Probleme zeitlich bedingt?
host="MBXIT-256-HaRi.local" clientip="66.249.*" status=500 | timechart count by date_hour
host="MBXIT-256-HaRi.local" clientip="66.249.*" status=404 | timechart count by date_hour
@mindbox_dd@hannes3686
Splunk | Analysen7. Sind Status-Code Probleme zeitlich bedingt?
host="MBXIT-256-HaRi.local" clientip="66.249.*" status=404 | timechart limit=4 count by date_hour
@mindbox_dd@hannes3686
Splunk | Analysen8. Auf welche Dateigrößen trifft Google am häufigsten?
host="MBXIT-256-HaRi.local" clientip="66.249.*" | top 30 bytes
Welche Größen treten am häufigsten auf? 5,7kb ist nicht groß - ggf. eine Ressource, die sehr oft vorkommt und optimiert werden kann
host="MBXIT-256-HaRi.local" clientip="66.249.*" bytes=5729 | stats count by uri
@mindbox_dd@hannes3686
Splunk | Analysen9. Welche Requests produzieren die größte Datenlast?
host="MBXIT-256-HaRi.local" clientip="66.249.*" | stats max(bytes) count by uri
@mindbox_dd@hannes3686
Splunk | Analysen10. Welche HTML-URLs produzieren die größte Datenlast?
host="MBXIT-256-HaRi.local" clientip="66.249.*" uri!="*.pdf" AND uri!="*.jpg" | stats max(bytes) count by uri
Bis zu 2,8MB für Quellcode!
@mindbox_dd@hannes3686
Splunk | Analysen11. Wie verhält sich Google beim Crawling von Parameter-URLs
host="MBXIT-256-HaRi.local" clientip="66.249*" uri="*?*" | timechart count by status
@mindbox_dd@hannes3686
Splunk | Analysen12. Welche Parameter begegnen Google am häufigsten?
neues Feld aus Logdaten extrahieren
@mindbox_dd@hannes3686
Splunk | Analysen12. Welche Parameter begegnen Google am häufigsten?
neues Feld aus Logdaten extrahieren
@mindbox_dd@hannes3686
Splunk | Analysen12. Welche Parameter begegnen Google am häufigsten?
Ich möchte einen regulären Ausdruck selbst schreiben
(?<=[\?|&])+(?<parameter>[a-zA-Z0-9]+)
@mindbox_dd@hannes3686
Splunk | Analysen12. Welche Parameter begegnen Google am häufigsten?
299 Zugriffe über utm-Source in 2 Tagen?
host="MBXIT-256-HaRi.local" clientip=„66.249.*" | chart count by param
utm-Parameter in interner Linkstruktur verwendet
@mindbox_dd@hannes3686
Splunk | Analysen12. Welche Parameter-URLs crawlt Google am häufigsten
Website-Events werden nicht über Analytics-Parameter getrackt!
@mindbox_dd@hannes3686
Splunk | Monitoring
Auswertungen als Dashboard fürs Monitoring jede Analyse lässt sich umwandeln
@mindbox_dd@hannes3686
Splunk | Monitoring
Auswertungen als Dashboard fürs Monitoring
L e i p z i g , d e n 2 8 . N o v e m b e r 2 0 1 1
MÄRKTE VERSTEHEN
MARKEN ENTWICKELN: DIE ZEBRA-GROUP