Es gibt ja einige Tools um die Logfiles von Webseiten auszulesen. Mir fallen dazu spontan noch folgende ein. Awstats, Piwik oder wie es mittlerweile heißt Matomo. Das führende dürfte Google Analytics sein. Jetzt nehmen wir mal an, wir möchten Google loswerden und machen das selber. Für einen Überblick dürften alle diese Tools reichen. Beim Umsehen bin ich über GoAccess gestolpert.

Beim durchlesen der Dokumentation kam ich zu dem Ergebnis, das sieht gut aus, das probieren wir mal ;) Also fing ich mal an ein wenig damit zu spielen. Das erste was auffiel, unter Debian reichte ein

    apt install goaccess

Das freut den Admin :) Mal schnell irgendwo her ein ***access.log*** kopiert und getestet. Sieht gut aus und sollte für mich völlig ausreichend sein.

Auf der Webseite findet man haufenweise Beispiele. Mit folgendem Beispiel konnte ich mal testen.

    goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html

Danach konnte man sich das mit 

    http://192.168.3.11/report.html

anschauen. Eine Live Demo findet man hier.

Dann kam die Überlegung, wie kann ich das mal ein wenig testen? Auf dem Server sollte es nicht drauf. Also kam es in eine VM bei mir zu Hause.

Ich brauchte also das access.log vom Server und dann den GoAccess-Dienst.

Dienst zum Abholen des Logs

    #!/bin/bash
    scp ssh root@DOMAIN:/var/log/nginx/access.log /root

Nicht vergessen

    chmod +x fetch.sh

Crontab


    
    # m h  dom mon dow   command
    * * * * *  /root/fetch.sh
    
Zum Testen mal jede Minute. Somit habe ich das Log jede Minute aktualisiert auf dem Server liegen.

GoAccess systemd

Für den Start von GoAccess lege ich einen SystemD Dienst an.

/etc/systemd/system/goaccess.service

    [Unit]
    Description=Goaccess Start
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/root/goaccess
    RemainAfterExit=true
    StandardOutput=journal
    
    [Install]
    WantedBy=multi-user.target

Dienst aktivieren

    systemctl enable goaccess.service

GoAccess Script

Es fehlt noch das Script in /root/goaccess

    #!/bin/bash
    goaccess /root/access.log -o /var/www/html/report.html --config-file=/etc/goaccess/goaccess.conf --log-format=COMBINED --ignore-crawlers  --restore --persist --db-path "/var/lib/goaccess-db" --real-time-html --daemonize
    
Auch die Datei braucht ein X
    chmod +x goaccess

Danach die Kiste durchstarten.

    root@:~# pstree
        systemd─┬─agetty
                ├─cron
                ├─dbus-daemon
                ├─dhclient───3*[{dhclient}]
                ├─goaccess───2*[{goaccess}]
                ├─nginx───4*[nginx]
                ├─rsyslogd───3*[{rsyslogd}]
                ├─sshd───sshd───sshd───bash───su───bash───pstree
                ├─systemd───(sd-pam)
                ├─systemd-journal
                ├─systemd-logind
                ├─systemd-timesyn───{systemd-timesyn}
                └─systemd-udevd
            
Ok läuft.

GoAccess Screen Shot

Jetzt schau ich mal, ob mir das gefällt und wenn ja, dann bleibt es :)