Files
iwz/doc/analyse.md
T
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

147 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
```powershell
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):
```powershell
wsl --install
```
Danach Windows neu starten und die Ubuntu-Ersteinrichtung (Benutzer/Passwort)
durchlaufen.
**GoAccess in der WSL installieren:**
```powershell
wsl -e sudo apt update
wsl -e sudo apt install -y goaccess
```
In der `.env` steht dafür (Standard):
```text
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`:
>
> ```text
> 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.
```text
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
```powershell
# 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.