Meine Präsentation von der SEOkomm 2018 mit vielen Tipps und Empfehlungen rund um das Thema Logfile Analyse - inkl. Übersicht Marktübersicht der Tools, vielen Logfile Auditing Workflows, etc.
1. Bastian Grimm, Peak Ace AG | @basgr
20+ Tipps, um das Beste aus euren Logfiles herauszuholen
Data-driven Technical SEO
2. Und warum sind Logfiles wichtig für eure SEO-Arbeit?
Why should you care?
3. pa.ag@peakaceag3
Ich bin ja großer Fan diverser Crawling Tools, aber …
Only access log files do show how a search
engine’s crawler is behaving on your site; all
crawling tools simply are trying to simulate
their behavior!”
4. Ihr wollt wissen, welche Seiten Suchmaschinen priorisieren? Nur so wird
klar, welchen URLs ihr besondere Aufmerksamkeit gönnen solltet.
1. Crawl-Prioritäten verstehen
5. Google könnte Crawling-Verhalten ändern oder die Frequenz reduzieren,
wenn ihr permanent große Mengen an Fehlern produziert.
2. Crawling-Probleme verhindern
6. Ihr wollt Schwachstellen im Crawling (Hierarchie, interne Linkstruktur etc.)
mit potenziell seitenübergreifenden Folgen identifizieren.
3. Globale Probleme verstehen
7. Ihr wollt sichergehen, dass Google alles Wichtige crawlt: vor allem ranking-
relevante Inhalte, aber auch schnelles Auffinden von aktuellem Content.
4.Optimales Crawling ermöglichen
8. Ihr wollt sicherstellen, dass jegliche gewonnene Link Equity immer mit
korrekten Links und/oder Redirects weitergegeben wird.
5. Korrekte Verlinkung sicherstellen
9. Denkt dran, Details hängen vom individuellen Setup ab!
Die Charakteristiken eines Logfiles
10. … je nach Webserver (Apache, nginx, IIS etc.), Caching und jeweiliger
Konfiguration. Versteht zuerst euer Setup!
Inhalt & Struktur variieren …
11. pa.ag@peakaceag11
Wie sieht ein Logfile normalerweise aus?
Server IP/Hostname1
Timestamp (Datum & Zeit)2
Methode (GET/POST/HEAD)3
Request URL4
HTTP Statuscode5
Größe in Bytes6
Referrer7
User Agent8
188.65.114.xxx [23/Nov/2018:02:00:00 -0100]
/resources/whitepapers/seo-whitepaper/
HTTP/1.1" 200 512 "http://www.seokomm.at/"
"Mozilla/5.0 (compatible; Googlebot/2.1;
+http://www.google.com/bot.html)"
"GET
12. Logfile-Daten können einen auch schnell überfordern, weil man so viel
mit ihnen machen kann. Bereitet also eure Fragen richtig vor!
Ihr müsst die richtigen Fragen stellen!
13. pa.ag@peakaceag13
Logfile-Daten können z. B. von GA-Daten abweichen
Logfiles sind serverseitige Informationen, Google Analytics verwendet clientseitigen
Code. Da Daten aus verschiedenen Quellen stammen, können sie unterschiedlich sein!
Auch die Konfiguration innerhalb Google Analytics führt zu
Datenunterschieden gegenüber Logfiles – wie z. B. Filter!
14. Was ihr wissen müsst, wenn ihr nach Logfiles fragt:
Häufig gestellte Fragen
15. Wir interessieren uns nur für Crawler wie Google und Bing; Nutzerdaten
sind unnötig (Betriebssystem, Browser, Telefonnummer, Namen etc.)
1. Personenbezogene Daten in Logfiles
16. Wenn ihr woanders einen Cache-Server und/oder CDN betreibt, das Logs
erstellt, brauchen wir diese Daten ebenfalls.
2. Logfiles an verschiedenen Orten
26. pa.ag@peakaceag26
crawlOPTIMIZER: SaaS Logfile Auditing made in Vienna
Viele nützliche Reports, die einen einfachen Einstieg in das Thema Logfiles ermöglichen:
Mehr: https://www.crawloptimizer.com/
28. pa.ag@peakaceag28
Ryte BotLogs: Crawler Tracking via Pixel/Snippet
Ryte schreibt „eigene“ Logfiles, die ausschließlich Crawler-Zugriffe protokollieren.
Der große Vorteil: Kein (manuelles) Herumhantieren mit (großen) Logfiles.
Mehr: https://botlogs.ryte.com/
29. pa.ag@peakaceag29
Ryte BotLogs: Crawler Tracking via Pixel/Snippet
Super hilfreiche Timeline zur Darstellung einzelner (Crawl-) Events im zeitlichen Verlauf,
je nach User Agent und kategorisiert nach Priorität.
30. Up-/Downloads von Logfiles werden unnötig, einfache Freigabe-
funktionen, Möglichkeit mit sehr großen Datenmengen zu arbeiten etc.
Vorteil von SaaS: Echtzeit
31. Für einen leichten Einstieg: Trend Monitoring (im Zeitverlauf) & erste
Erkenntnisse sammeln
Let’s have a look at some data
32. pa.ag@peakaceag32
Einfachster Ansatz: Anomalien im Zeitverlauf erkennen
Tipp: Deswegen ist es sinnvoll, eure Logfiles regelmäßig zu checken (z. B. wöchentlich).
Das sieht erstmal ungewöhnlich
aus; ideale Grundlage für
weitere Nachforschungen.
33. pa.ag@peakaceag33
Crawl-Frequenz nach User Agent im zeitlichen Verlauf
Das Verständnis von Mustern und Unregelmäßigkeiten kann sehr hilfreich sein – schaut
euch das Crawl-Verhalten einzelner User-Agents immer auch im zeitlichen Verlauf an.
34. Sucht mit Logfiles nach Spambots oder Scrapern, um diese zu blockieren!
Welche anderen „Bots“ besuchen euch?
35. pa.ag@peakaceag35
Nicht jeder ist das, was er zu sein scheint!
Herausfinden, ob Googlebot wirklich Googlebot ist? Reverse DNS Lookup.
Bingbot kann genauso verifiziert werden, hier wäre die Antwort: *.search.msn.com.
Source: https://pa.ag/2JqOk8d
36. pa.ag@peakaceag36
Aktuelles Thema: Google MFI Switch
Checkt, ob der Google-Smartphone- den Desktopbot (im Crawl-Volumen) überholt hat.
Smartphonebot Crawl-
Volumen immer noch
niedriger als Desktop-Crawls
37. pa.ag@peakaceag37
Welche Seiten crawlt Googlebot am häufigsten?
Überprüft zusätzlich, ob diese mit den wichtigsten Seiten eurer Domain übereinstimmen.
Sind dies wirklich eure
wertvollsten Landingpages?
38. pa.ag@peakaceag38
Übersicht des Crawl-Volumens & Statuscodes je Verzeichnis
Ihr seht sofort, ob ihr Crawling-/Response-Probleme in einem Verzeichnis habt.
Tipp: Regelmäßig prüfen für eine kontinuierliche Performance der Top-Verzeichnisse.
43. pa.ag@peakaceag43
4xx Client Error: zu viele sind sicher kein positives Signal!
Maßnahme: wiederherstellen (200), weiterleiten (301) oder vollständig entfernen (410)
45. pa.ag@peakaceag45
5xx Server Error: meist infrastrukturell bedingt
Maßnahme: Genau beobachten und/oder mit der IT reden (Serververfügbarkeit etc.)
Achtung: 503-Antworten können ggf. gewollt sein (geplante Wartungsarbeiten).
Prüft mehrfach; was passiert
bei erneutem Versuch?
47. pa.ag@peakaceag47
Beste/schlechteste gecrawlte URLs & Ordner verstehen
Maßnahme: zusätzliche interne Verlinkungen auf stark gecrawlten Seiten hinzufügen
(Linkhubs), stärkere interne Verlinkung von wenig/schwach gecrawlten Seiten
Kann für zusätzliche interne Verlinkungen verwendet
werden (Discovery).
Offensichtlich schwach, entweder irrelevant (entfernen)
oder braucht mehr Aufmerksamkeit (mehr Links).
49. pa.ag@peakaceag49
Erkennt, ob (neue) URLs überhaupt gecrawlt wurden
Maßnahme: Wenn relevante URLs noch gar nicht gecrawlt wurden, ist eure interne
Verlinkung vermutlich zu schwach. Erwägt XML-Sitemaps, stärkere Verlinkung etc.
Wenn das wichtige URLs sind, habt
ihr möglicherweise ein Problem!
52. pa.ag@peakaceag52
Wasting server resources on pages […] will
drain crawl activity from pages that do actually
have value, which may cause a significant
delay in discovering great content on a site.
Das sagt Googles Webmaster Central Blog dazu:
Source: https://pa.ag/2HhsYoz
53. pa.ag@peakaceag53
Wenn ihr jemals mit solchen Domains zu tun hattet …
Mit >30.000.000.000 crawlbaren URLs (durch Parameternutzung) richtig umzugehen,
macht einen Unterschied in der organischen Performance – garantiert!
54. pa.ag@peakaceag54
Ähnlich wie zu sagen, alle Redirects seien gleich …
… in diesem Fall haben wir nur die Weiterleitungen von 302/307 auf 301 umgestellt.
55. pa.ag55
URL-Parameter verursachen die meisten Probleme
(Kombinierte) URL-Parameter erzeugen insbesondere bei großen Domains nicht selten
Millionen von unnötigen URLs, die Googlebot (wenn einmal gefunden) fleißig crawlt.
56. pa.ag56
Verhalten der URL-Parameter im Zeitverlauf überwachen
Seid bei neuen Parametern sowie bei deutlich erhöhtem Crawling von bereits
bekannten Parametern auf der Hut:
57. pa.ag@peakaceag57
Überwacht weniger (ranking-) relevante Dateitypen
Maßnahme: ggf. die Art der Integration / des Ladens dieser einzelnen Komponenten
(bspw. XML-Fragmente) überdenken (keine eigene URL notwendig?)
58. Noch bessere Insights durch das Kombinieren mehrerer Quellen
Verknüpfen von Crawl- & Logfile-Daten
59. pa.ag@peakaceag60
Gap-Analysen der Crawl-Quellen
Unterschiede in den Quellen zu verstehen kann dabei helfen, unterschiedliches
Verhalten nachzuvollziehen, z. B. Webcrawl vs. Sitemap – oder vs. Logfiles.
URLs, die beim Webcrawl gefunden
wurden, aber in keinem Logfile.
60. pa.ag@peakaceag61
Auffinden von versehentlichen noindex-Anweisungen
Diese Produkt-URL wird oft gecrawlt, wurde aber versehentlich nicht indexierbar gemacht.
Ein Abgleich der Crawl-Direktive mit dem Verhalten (Logfiles) half bei der Lösung.
61. pa.ag@peakaceag62
Nicht gecrawlte Seiten, die in der Sitemap vorhanden sind
Diese Daten weisen auf zu wenig interne Links innerhalb der Seitenarchitektur hin.
Verbessert eure Architektur und haltet auch eure XML-Sitemaps sauber!
Klickt hier, um die jeweiligen URLs
aufzurufen und zu untersuchen.
62. pa.ag@peakaceag63
Indexierbare Seiten, die nicht gecrawlt werden
Ein guter Ausgangspunkt, um mit der Optimierung zu beginnen, die Indexierung/
Konsolidierung zu überdenken oder diese URLs vollständig zu löschen.
63. Hier ein paar weitere Reports: je nachdem was ihr vorhabt …
Time for some more?
64. pa.ag@peakaceag65
Crawl-Frequenz nach Content-Typen im Zeitverlauf
Das Crawling von JS/CSS-Dateien zu beobachten (z. B. nach Frontend/Template-
Änderungen) kann helfen, die Verarbeitung durch Google zu verstehen.
65. pa.ag@peakaceag66
Analysiert Fehler nach Content-Typen gruppiert
Vielleicht hat (nur) Google Probleme mit einer ganz bestimmten Art von Content?
Kategorisiert z. B. eure 404er nach unterschiedlichen Dateitypen wie JS, CSS etc.
67. pa.ag@peakaceag68
Identifiziert (unbekannte) große URLs/Dateien
Je nach Details der Logfiles, z. B. nach durchschnittlicher Bytegröße sortieren und für
#webperf nutzen.
Vielleicht ladet ihr Sachen
ohne richtige Komprimierung?
Vielleicht müsst ihr eure Bilder
richtig optimieren?
68. pa.ag@peakaceag69
Integrate log file auditing into your regular
SEO workflow; one-off audits are good for a
start but it really becomes invaluable if you
combine it with web crawl data and do it on an
on-going basis.”
Logfile Auditing ist kein Projekt, sondern ein Prozess!
69. pa.ag@peakaceag70
Kurz zusammengefasst ...
Zum Nacharbeiten für die kommende Woche:
01
Keine One-fits-all-
Lösung
Logfilegröße, -menge
& -verfügbarkeit sind
ausschlaggebend für
die Toolauswahl.
02
Vorbereitung ist alles
Konkrete
Fragestellungen helfen
bei der effizienten
Analyse.
03
Crawl-Daten only
Seid präzise bei euren
Anfragen (an die IT),
ihr wollt nur wissen,
was Suchmaschinen
machen!
04
Reverse-DNS nutzen
Nicht jeder Crawler
ist, wer er vorgibt zu
sein – vertraut nicht
"blind“ auf den User
Agent.
05
URL-Parameter
sind nahezu immer
das größte Problem
(Kombinationen,
Reihenfolgen,
Konsistenz) – auditiert
diese zuerst.
71. Ich möchte: keine IT involvieren, unbegrenzte Skalierbarkeit, flexible
Berichte, mehrere (API-) Datenquellen und Nutzerfreundlichkeit!
Es muss einen anderen Weg geben!
72. „Sicher, solange ihr uns bezahlt!“
„Can you integrate with our
Google Data Studio reports?“
73. (Und jeder auf der #seokomm bekommt das als Geschenk, kostenlos!)
Wir haben uns da was überlegt:
74. pa.ag75
Der aktuell genutzte Tool Stack
(Wir haben es leider nicht mehr geschafft Searchmetrics & Majestic anzubinden)
Logfiles Google Analytics
Google Data
Studio
Google Search ConsoleInput Data Sources
Data Processing Output Data
DeepCrawl
Google Big
Query
Google Data
Prep
Google Apps
Script
79. pa.ag80
Workflow I: Logfiles abrufen, IPs löschen & bereitstellen
(A) Logfiles vom Server downloaden, (B) IP-Adressen löschen mit PowerShell, (C)
Logfiles zu einer Datei zusammenfügen (D) und auf Google Cloud Storage hochladen.
Weiterver-
arbeitung
Online
Upload
Download
auf den PC
B CA
Logfiles Google Cloud Storage
D
große Datensätze
speichern
CMD / SED
Logfiles in einer Datei
zusammenführen
PowerShell
IP-Adressen löschen
(DGSVO… und so!)
vom Server, CDN,
Cache, etc.
PowerShell Windows: (Get-Content example.txt) -replace "(b[0-9]{1,3}.){3}[0-9]{1,3}", '0.0.0.0‘ -replace "(([a-zA-Z0-9]{1,4}|):){1,7}([a-zA-Z0-9]{1,4}|:)", '0:0:0:0:0:0:0:0' | Out-File example.txt
CMD: cmd => cd desktop => cd logfiles => dir => copy * logfiles_all
Linux: sed -i -E 's/(b[0-9]{1,3}.){3}[0-9]{1,3}b'/0.0.0.0/ temp.log /// sed -i -E 's/(([a-zA-Z0-9]{1,4}|):){1,7}([a-zA-Z0-9]{1,4}|:)b'/0:0:0:0:0:0:0:0/ temp.log
80. pa.ag81
Workflow II: Logfile-Daten zur Visualisierung bringen
(1) Logfiles werden im Google Cloud Storage gespeichert, (6) in Dataprep verarbeitet,
(7) nach BigQuery exportiert, (8) in Data Studio via BigQuery Connector visualisiert.
8
Google Data Studio
Daten aller Quellen
visualisieren
Daten
senden
Daten
abbildenImportieren
Google Dataprep
6
Quellen bereinigen
und verknüpfen
7
Google Big Query
große Datensätze
verarbeiten
1
Logfiles
gespeichert in Google
Cloud Storage
81. pa.ag82
Workflow III: Logfile-Daten weiter anreichern
GA-, GSC- und DC-Daten werden über ihre APIs mithilfe von Google Apps Script
importiert.
GSC
API v3
GA
API v4
GA
GSC
Google Apps Script
Daten aus APIs abrufen
durch Definition von
Metriken & Settings (z.B.
Zeitspanne) via JS
2
3
65
DeepCrawl
API
4
82. pa.ag83
Logfiles
Workflow IV: Alles verknüpfen (& zukünftig noch mehr!)
Datenquellen mithilfe von Dataprep verknüpfen.
GSC-, GA- & DC-Daten senden
Daten
senden
Google Apps
Script
76
5 1
Searchmetrics Screaming FrogMajestic SEO
in Kürze manuellin Kürze
84. pa.ag85
#1 Logfile-Daten von Webservern, CDN, Cache etc.
Wie oft crawlen Bots tatsächlich? Was crawlen sie und wann?
Quelle: https://pa.ag/2zs9lcY
▪ Anzahl der Crawls/Anfragen pro Bot-Typ
▪ Identifizierung von Crawling-Mustern
▪ Fehler / Weiterleitungen
▪ 3xx
▪ 4xx
▪ 5xx
Ziel: Verbesserung der Seitenarchitektur
durch Analyse echter Bot-Crawling-Daten
LogfilesGoogle Cloud
Storage
Als Textdatei
importieren
(IP-Adressen
ausschließen!)
85. pa.ag
15TB (pro Datei), die in BigQuery verschoben werden sollen.
Größe ist definitiv KEIN Problem
87. pa.ag89
#2 Google Analytics API
Ergänzt Reports um Verhaltensdaten und Page-Speed-Metriken der User.
Google Analytics
Reporting API v4
Ziel: Vergleich des Crawling-Verhaltens mit Benutzer- und
Ladezeitdaten
URL-basierte Daten zu wichtigen Engagement-Metriken:
▪ Sessions
▪ User
▪ Absprungrate
▪ Durchschn. Verweildauer
▪ Durchschn. Server Response Time
▪ Durchschn. Seitenladezeit
▪ …
88. pa.ag90
#3 Google Search Console API
Performance-Daten der organischen Suche direkt von Google
Ziel: Vergleich des Crawling-Verhaltens mit organischen
Klickdaten & Abfrage gefundener Crawling-Fehler
Organische Klickdaten:
▪ Klicks
▪ Impressions
▪ …
URL-basierte Server-Response-Daten:
▪ Statuscode
Google Search
Console API v3
90. pa.ag92
#5 Google Apps Script I: GA
API-Zugriff: benutzerdefiniert verschiedene Dimensionen und Metriken aus GA erfassen
Quelle: https://pa.ag/2OWnjJa
Ziel: Google-Analytics-Daten (über die API) an BigQuery
senden
Google Apps Script
91. pa.ag93
#5 Google Apps Script II: GSC
API-Zugriff: JavaScript Code zum Abrufen von Crawl- und Suchanalysedaten der GSC
Quelle: https://pa.ag/2OWnjJa
Ziel: Daten aus der Google Search Console an BigQuery
senden
Google Apps Script
92. pa.ag94
#5 Google Apps Script III: DeepCrawl
API-Zugriff: benutzerdefiniert verschiedene Daten/Direktiven aus DeepCrawl erfassen
Quelle: https://pa.ag/2OWnjJa
Ziel: DeepCrawl-Daten (über API) an BigQuery senden
Google Apps Script
93. pa.ag95
#6 Google Cloud Dataprep I: Aufbereiten
Schritt 1: Daten aufbereiten und kombinieren für die anschließende Visualisierung
Quelle: https://pa.ag/2Q6rEde
Ziel: Bereinigen und Transformieren der Daten
Dataprep: „Excel on rocket fuel“
▪ Großartiger RegEx Support
▪ Daten auswählen und automatisiert
Vorschläge zur Verarbeitung erhalten
▪ Datenquellen verbinden durch z. B.
Full Inner/Outer Join, Left/Right Join …
Google Apps Script
94. pa.ag97
#6 Google Cloud Dataprep II: Verbinden (URL)
Schritt 2: Daten mehrerer Quellen verbinden mit verschiedenen Verknüpfungsoptionen
Quelle: https://pa.ag/2Q6rEde
Ziel: Kombination
von Daten aus
Logfiles, GSC, GA &
DeepCrawl
Google Apps Script
95. pa.ag98
#6 Google Cloud Dataprep III: Workflows
Kern des ganzen Prozesses: Quellen innerhalb verschachtelter Workflows verknüpfen
Ziel: Kombination von
Logfiles, GSC, GA und
DeepCrawl innerhalb des
Processing Flows
Google Apps Script
96. pa.ag99
#7 Google Cloud BigQuery I: Tabellen erstellen
Die BigQuery-Tabellenstruktur wird erstellt wie im Google Apps Script angegeben.
Quelle: https://pa.ag/2QWtiPQ
Ziel: Speichern von großen Datenmengen zum
schnelleren Abrufen und Verarbeiten
Google BigQuery
97. pa.ag100
#7 Google Cloud BigQuery II: Daten verfügbar machen
Data Warehouse mit superschneller SQL-Abfrage für sehr große Tabellen
Quelle: https://pa.ag/2QWtiPQ
Möglichkeit: Abfrage der Daten vor der Visualisierung
Google BigQuery
98. pa.ag101
#8 Google Data Studio: Visualisierung
Letzter Schritt: In der Visualisierung läuft alles zusammen. Verwendet BigQuery
Connectors, um Daten aus BigQuery-Tabellen in Google Data Studio zu laden.
Quelle: https://pa.ag/2xLAyoV
Ziel: Import und Visualisierung von Daten aus BigQuery
Google Data Studio
107. pa.ag@peakaceag110
We’re hiring! 30+ performance marketing jobs in Berlin!
Come and say “hello” or apply via jobs.pa.ag. We look forward to talking to you!
Always looking for talent!
Check out jobs.pa.ag