JS-Tracking + Logfile-Import parallel: Verzehnfachung der Visits

Ich nutze aktuell noch Matomo 5.7 mit JS-Tracking. Da Adblocker einen Teil der Besucher unsichtbar machen, wollte ich zusätzlich die Server-Logdatei (access_ssl_log) via misc/log-analytics/import_logs.py einlesen, um die fehlenden Visits/Pageviews zu erhalten. Die Logdatei enthält nur Daten des aktuellen Tages, da zwischen 03–04 Uhr täglich rotiert und der Vortag archiviert wird.

Mein Problem nun

Vor dem Import hatte ich für heute auf der einen Domain ~10.000 Visits. Nach dem Import waren es dort plötzlich über 110.000 Visits, mehr als eine Verzehnfachung. Selbst eine Verdoppelung durch Doppelzählung wäre nicht akzeptabel, aber in der Form ist das doch völlig absurd.

Verwendetes Import-Skript

#!/bin/bash
PYTHON=/usr/bin/python3
MATOMO_LOG_IMPORT=/var/www/vhosts/example.com/analytics.example.com/matomo/misc/log-analytics/import_logs.py

$PYTHON $MATOMO_LOG_IMPORT \
  --url=https://data.example.com/matomo/ \
  --idsite=1 \
  /var/www/vhosts/example.com/logs/example.de/access_ssl_log

Import-Ausgabe

Logs import summary
-------------------
    242166 requests imported successfully
    7948 requests were downloads
    351187 requests ignored:
        14503 HTTP errors
        120446 HTTP redirects
        0 invalid log lines
        0 filtered log lines
        0 requests did not match any known site
        0 requests did not match any --hostname
        212814 requests done by bots, search engines...
        3424 requests to static resources (css, js, images, ico, ttf...)

Website import summary
----------------------
    242166 requests imported to 1 sites

Performance summary
-------------------
    Total time: 1301 seconds
    Requests imported per second: 186.03 req/sec

Processing your log data
------------------------

    In order for your logs to be processed by Matomo, you may need to run the following command:
     ./console core:archive --force-all-websites --url='https://data.example.com/matomo/'

Cronjob für JS-Tracking (Archivierung) der schon immer aktiv ist und alle 5 Minuten archiviert:

5 * * * * user /opt/plesk/php/8.4/bin/php \
  /var/www/vhosts/example.com/analytics.example.com/matomo/console \
  core:archive --url=https://data.example.com/matomo/ > /dev/null

Fragen

  1. Warum führt der Import zu einer mehr als Verzehnfachung? Aus welchem Grund entstehen so viele künstliche Visits?
  2. Ist der parallele Betrieb von JS-Tracking und Logfile-Import auf derselben Site-ID grundsätzlich falsch?
  3. Importiert import_logs.py auch POST-Requests (z.B. AJAX-Calls), die keine Seitenbesuche sind?

Würde mich freuen, falls mir jemand zu den Fragen weiterhelfen kann. Danke :slight_smile:

Because you imported raw server requests into the same property as JS tracking, and the importer counted many eligible requests that JS never counted as pageviews, while also not deduplicating against existing JS data

It is fundamentally wrong to import both into the same idsite, please see our guide here: Can I import data Using Matomo Server Log Analytics and using the standard Matomo JS at the same time? FAQ - Log Analytics tool - Matomo Analytics Platform

If the POST or ajax calls are in the log file they will be imported.

Thanks for the explanation, that already helps a lot.

I want to use Matomo to track only real website visitors. JS tracking is too incomplete for this, as ad blockers often block it. I am interested in log analysis, but AJAX/POST calls and bots should not be counted.

Which configuration or filters are recommended in log analysis to capture only genuine pageviews? Is Matomo even suitable for reliably tracking users and pageviews this way? Thanks. :slight_smile:

By default, the log importer will ignore bots, you would actually need to enable these in the import command using --enable-bots if you wanted to keep them in. The log file is essentially a text file. If you can identify the AJAX requests, you could “clean” the file prior to importing. There are more details here: How do I run the Log File importer script with default options? FAQ - General - Matomo Analytics Platform

Hallo @Daijobou , ich hatte mich bei der Frage ein bisschen zurückgehalten. Nachdem Matomo (Support) hier im “deutschsprachigen Forum” nur noch auf Englisch antwortet … Zudem habe ich keine Erfahrung mit Access-Log-Tracking.

Meine Beobachtungen ergeben, dass Matomo stark nachgelassen hat im Bezug auf den immens gestiegenen Bot-Traffic und die Verwendung von AdBlockern. Das hat seine Gründe auch darin, dass Matomo in der Vergangenheit Fehler gemacht hat. Das derzeitige Matomo taugt nicht mehr viel.

Deine Beobachtungen deines Trackings ist zu kurz um daraus Schlüsse zu ziehen. Dass die Visits ver-x-facht werden können, kann seine Ursache in Bots haben, die nicht als solche erkannt und daher nicht gefiltert werden können. Diese sind aber meist nur temporär für ein paar Tage und verschwinden wieder. Solche Bots kann sich heute jeder in der Cloud kaufen, inklusive dem Feature stetig wechselnder IPs und auch User Agents. Human Visitis sind nur noch schwer zu erkennen.

Bei mir kam zwar noch keine Verzehnfachung, aber eine Verfünffachung vor, bei reinem JS-Tracking. Grund: Bot.

Das nächste Problem liegt in der Inkompatibilität von verschiedenen Tracking-Methoden. Matomo hält sich da in Schweigen, leider. Bisher habe ich nur die Info bekommen, dass verschiedenes nicht so funktioniere, wie ich dachte. Matomo würde das “anders” machen. Wie anders, das wurde nicht gesagt.

Normalerweise sollte es kein Problem sein verschiedene Tracking-Methoden miteinander zu mergen, da für die Erkennung eines Visitors die IP und der User-Agent verwendet werden, die im JS-Tracking, PHP-Tracking und Access-Log-Tracking gleich sind. Da zudem ein Time-Range verwendet wird (default: 30 Minuten), sollte eine Zeitversetzung der Timestamps von wenigen Sekunden oder auch Minuten dem nicht entgegenwirken. Es sollte also möglich sein. Warum es dies nicht ist, sagt Matomo nicht.

Bei dir ist schlecht zu sagen woran es liegen könnte. Wenn du alles mit Default-Einstellungen eingerichtet hast, sollte sowas eigentlich nicht passieren, außer dir hat temporär ein Bot reingekrätscht.

Was du alternativ ausprobieren könntest wäre das PHP-Tracking. Aber auch da gibt es von Seiten Matomo keine hilfreichen Infos zwecks dem Mergen mit JS-Tracking.

Beim Mergen von JS-Tracking und Access-Log-Tracking gibt es Seitens Matomo die eindeutige Ansage, dass dies nicht möglich sei. Das ist unverständlich, wieso dies nicht möglich sei. Rein technisch müsste es möglich sein. Matomo legt da wohl nur keinen Wert drauf und vernachlässigt es, womit Matomo in heutiger Zeit unbrauchbar geworden ist.

Hey, danke für deinen Beitrag! Ich habe Matomo inzwischen nach Jahren bei mir entfernt. Ich bin den Entwicklern für das Tool wirklich dankbar, aber für mich ist wichtig, die Anzahl der Seitenbesucher zu kennen und das liefert mir Matomo leider nicht ausreichend und deshalb ist es für mich aktuell nicht mehr nützlich.

Außerdem hätte ich es interessant gefunden zu sehen, wie viele Bot-/KI-/Crawler-Zugriffe erkannt wurden. Das wäre eine interessante Info fürs Dashboard gewesen.

Die Anleitung, wie man die Access-Logs für Matomo ausliest, ist mir leider zu unübersichtlich dokumentiert. Selbst KI-Tools kommen da nicht richtig durch und schlagen oft wenig hilfreiche Lösungen vor und für ausgedehnte Experimente fehlt mir aktuell einfach die Zeit.