Files
iwz/doc/analyse.md
Michael Stangl 2379f4ac9f @
Skripte nach bin/ und lib/ umstrukturiert + WSL-Log-Analyse

Alle .bat-Skripte liegen jetzt in bin/, alle .py in lib/, .env(.example)
in bin/. setenv.bat setzt IWZ_* (inkl. IWZ_ENV) und PYTHONPATH; die
Launcher rufen setenv, aktivieren die .venv falls vorhanden und starten
das zugehoerige lib/-Skript. Die Python-Skripte lesen die .env ueber
IWZ_ENV (Fallback bin/.env).

Neu: Nutzungsanalyse per GoAccess (analyze.py/.bat) - laedt die
IONOS-Access-Logs per SFTP (paramiko) und erzeugt einen HTML-Report.
GoAccess laeuft ueber WSL (GOACCESS_MODE=wsl, Pfad-Uebersetzung nach
/mnt/c). install_py.bat prueft WSL+GoAccess und zeigt sonst den
Installationsweg. Doku in doc/analyse.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
2026-08-28 16:44:56 +02:00

4.6 KiB
Raw Permalink Blame History

Nutzungsanalyse der Website (Server-Logs + GoAccess)

Die neue Hugo-Seite verzichtet bewusst auf JavaScript-Tracking (kein Google Analytics, keine Cookies, kein Consent-Banner nötig). Stattdessen werten wir die Apache-Access-Logs aus, die IONOS ohnehin auf dem Server schreibt.

Ablauf des Skripts analyze.py:

  1. Verbindet sich per SFTP mit IONOS und lädt alle access.log*-Dateien aus dem /logs-Ordner nach ./logs/ herunter.
  2. Entpackt die rotierten .gz-Logs und fügt alles zu einer Datei zusammen.
  3. Lässt GoAccess darüberlaufen und erzeugt einen HTML-Report unter ./results/report_JJJJ-MM-TT.html, der automatisch im Browser geöffnet wird.

logs/ und results/ stehen in .gitignore und werden nicht eingecheckt.


Einmalige Einrichtung

1. Python-Abhängigkeit (paramiko)

pip install -r requirements.txt

2. GoAccess (über WSL – empfohlen)

GoAccess wird offiziell nur für Linux/macOS gebaut und ist in keinem Windows-Paketmanager verfügbar. Unter Windows ist der zuverlässigste Weg die WSL (Windows Subsystem for Linux). bin\install_py.bat prüft automatisch, ob WSL und GoAccess vorhanden sind, und zeigt sonst die passenden Befehle.

WSL installieren (falls noch nicht vorhanden, PowerShell als Administrator):

wsl --install

Danach Windows neu starten und die Ubuntu-Ersteinrichtung (Benutzer/Passwort) durchlaufen.

GoAccess in der WSL installieren:

wsl -e sudo apt update
wsl -e sudo apt install -y goaccess

In der .env steht dafür (Standard):

GOACCESS_MODE=wsl

Das Skript ruft GoAccess dann per wsl goaccess ... auf und übersetzt die Windows-Pfade automatisch nach /mnt/c/....

Alternative – nativer Windows-Build: Falls du kein WSL nutzen willst, lade den Cygwin-Build von https://goaccess.io/download, entpacke ihn (z. B. nach C:\tools\goaccess\) und setze in der .env:

GOACCESS_MODE=exe
GOACCESS_EXE=C:\tools\goaccess\goaccess.exe

3. IONOS-SFTP-Zugang in .env eintragen

Die Zugangsdaten stehen im IONOS-Kundenbereich unter Hosting → SFTP/SSH. Es sind dieselben, mit denen der /logs-Ordner erreichbar ist.

IONOS_SFTP_HOST=<z.B. home123456789.1and1-data.host oder access-5000000000.webspace-host.com>
IONOS_SFTP_PORT=22
IONOS_SFTP_USER=<SFTP-Benutzer>
IONOS_SFTP_PASSWORD=<SFTP-Passwort>
IONOS_LOGS_DIR=/logs

Die .env steht in .gitignore und wird nicht eingecheckt.


Nutzung

# Logs neu laden, Report bauen und im Browser öffnen:
analyze.bat
# oder:
python analyze.py

# Nur neu auswerten (ohne erneuten Download der schon geladenen Logs):
python analyze.py --no-download

Beim wiederholten Lauf werden bereits geladene, rotierte Logs übersprungen (gleiche Dateigröße) – nur das aktuell wachsende Log wird neu geholt.


Was im Report steht

GoAccess zeigt u. a.:

  • Eindeutige Besucher und Seitenaufrufe pro Tag
  • Meistbesuchte Seiten (welche Ferienwohnung interessiert am meisten?)
  • Referrer (woher kommen die Besucher – Google, direkte Eingabe, Links)
  • Länder / Sprachen, Browser, Betriebssysteme, Geräte
  • HTTP-Statuscodes (404-Fehler = tote Links finden)
  • Traffic-Volumen

Aufrufe von Suchmaschinen-Bots werden herausgefiltert (--ignore-crawlers), IP-Adressen im Report anonymisiert (--anonymize-ip).


DSGVO-Hinweis

Diese Auswertung passiert nur lokal auf deinem Rechner aus den ohnehin anfallenden Server-Logs. Es wird nichts an Dritte übertragen und kein Tracking-Code beim Besucher ausgeführt. Server-Logs mit IP-Adressen dürfen zu Sicherheits-/Betriebszwecken vorübergehend gespeichert werden; im GoAccess- Report sind die IPs zusätzlich anonymisiert. Ein Cookie-Consent-Banner ist für diese Art der Auswertung nicht erforderlich.


Fehlerbehebung

Report bleibt leer / „No data". Dann passt das Log-Format nicht. IONOS nutzt meist das Combined Log Format (LOG_FORMAT=COMBINED). Wirf einen Blick in die erste Zeile von logs/access.log.current:

  • Beginnt sie mit einer IP und enthält am Ende "...Referrer" "...User-Agent" → COMBINED ist korrekt.
  • Fehlen Referrer/User-Agent → LOG_FORMAT=COMMON.
  • Steht der Vhost-Name vor der IP → LOG_FORMAT=VCOMBINED.

Alternativ ein eigenes Format als GoAccess---log-format-String in .env hinterlegen (siehe https://goaccess.io/man#custom-log).

paramiko-Authentifizierungsfehler. SFTP-Host/-User/-Passwort im IONOS-Kundenbereich gegenprüfen. Der SFTP-Benutzer ist nicht zwingend identisch mit dem Login des Kundenbereichs.