Zum Inhalt springen
Blog

FiveM-Logs: Wo Discord-Webhooks scheitern und was besser geht

Discord-Webhook-Logs laufen ins Rate-Limit, sind nicht pro Spieler durchsuchbar und verlieren Anhänge. So loggst du mit ox_lib und gewinnst Beweise.

Von Termi

4 Min. Lesezeit
  • Logs
  • ox_lib
  • Discord
  • Evidence
Auf dieser Seite

Die meisten FiveM-Server loggen auf dieselbe Weise: ein Discord-Channel pro Kategorie, etwa Geld, Tode und Admin-Befehle, und in jedem Script eine Webhook-URL. Im ersten Monat klappt das. Dann kommt ein Entbannungsantrag zu etwas von vor drei Wochen, und jemand scrollt durch Tausende Embeds, um eine einzige Lizenz zu finden. Diese Anleitung zeigt, wo Discord-Logging an Grenzen stößt, wie du stattdessen strukturierte Logs mit ox_lib verschickst und wie daraus Beweise werden, die du dem Spieler zeigen kannst.

Wo Discord-Logging an Grenzen stößt

  • Rate-Limits. Discord begrenzt, wie schnell ein Webhook Nachrichten senden darf. An einem vollen Abend, an dem jede Überweisung, jeder Tod und jede Item-Bewegung geloggt wird, kommen Requests mit 429 Too Many Requests zurück, und ein Script ohne Wiederholung verliert diese Zeile.
  • Keine Ansicht pro Spieler. Um alles zu einem Spieler zu finden, durchsuchst du jeden Channel einzeln und bringst die Reihenfolge von Hand wieder in Ordnung.
  • Anhänge laufen ab. Screenshots, die über einen Webhook gepostet werden, bekommen signierte Links, die außerhalb von Discord nicht mehr funktionieren. Ein Link, den du in ein Ticket kopierst, ist also bald kaputt.
  • Jeder mit der URL kann posten. Eine Webhook-URL funktioniert wie ein Passwort. Steht sie in einem Client-Script, können Spieler sie auslesen und beliebige Nachrichten in deinen Log-Channel schicken.
  • Jeder Leser sieht alles. Channel-Rechte gibt es nur ganz oder gar nicht. Ein Probe-Moderator, der den Geld-Channel lesen darf, sieht jeden dort geloggten Identifier.

Strukturierte Logs mit ox_lib senden

ox_lib, das auf den meisten ESX-, QBCore- und Qbox-Servern ohnehin läuft, hat einen serverseitigen Logger. Ein Aufruf dort, wo die Aktion passiert, ersetzt den Webhook-Request:

server.lua
RegisterNetEvent('bank:transfer', function(to, amount)
    local src = source
    if not Bank.transfer(src, to, amount) then return end
    lib.logger(src, 'money.transfer', ('sent $%d to %s'):format(amount, to), 'amount:' .. amount, 'to:' .. to)
end)

Die Argumente sind die Server-ID des Spielers, ein Event-Name, eine Nachricht und beliebig viele Tags im Format schlüssel:wert. ox_lib hängt Name und Identifier des Spielers selbst an jede Zeile, bündelt die Zeilen in Batches und schickt sie an den Dienst, der in einem Convar steht:

server.cfg
set ox:logger "fivemanage"
set fivemanage:key "fd_live_…"
set fivemanage:dataset "city"

ox_lib bringt drei Dienste mit: Datadog, Grafana Loki und Fivemanage. Fivemanage speichert Logs im kostenlosen und im 8-$-Plan 15 Tage, bei Pro für 24 $ 90 Tage und bei Network für 79 $ 180 Tage.

An FiveDock senden

FiveDock nimmt die Batches an, die der Fivemanage-Logger von ox_lib verschickt, unverändert. ox_lib hat diese Adresse in einer Zeile von imports/logger/providers/fivemanage.lua. Richte sie auf FiveDock aus und nimm einen FiveDock-API-Token mit dem Scope logs:write als fivemanage:key:

ox_lib/imports/logger/providers/fivemanage.lua
endpoint = 'https://api.fivedock.dev/api/logs/batch',

Ein Update von ox_lib ersetzt diese Datei. Ändere die Zeile deshalb nach jedem Update erneut oder pflege sie in einer eigenen Kopie von ox_lib.

Jede Zeile landet in der Black Box, mit Lizenz, Discord-ID und Namen des Spielers. Daneben liegt alles, was der FiveDock-Agent selbst aufzeichnet: Script-Fehler, Ingame-Reports und Screenshots.

Von Logs zu Beweisen

Mit Metro macht die Black Box aus diesen Zeilen eine Timeline pro Spieler: jede geloggte Zeile zu einer Lizenz, vom Beitritt über die Überweisung bis zum Screenshot, der Reihe nach und auf die Sekunde genau. Ein Klick macht aus einem Ausschnitt ein Beweispaket, einen Link, den du dem eben gebannten Spieler geben kannst.

Die Suche deckt alle Spieler ab, nach Lizenz, Kennzeichen oder Stichwort, und eine Suche, die du jede Nacht brauchst, kannst du speichern. Wirtschafts-Alarme überwachen dieselben Zeilen in jedem Plan: Eine Überweisung über einem Schwellenwert oder zu schnell wachsendes Geld wird an Discord gemeldet. Mit Metro legt der Alarm in derselben Sekunde auch ein Backup an, und Alarme für doppelte Items erkennen dieselbe Seriennummer in zwei Inventaren.

Die rollenbasierte Maskierung von Metro hält echte Adressen und Zahlungsdaten von Trainees fern, was ein Discord-Channel nicht kann.

Wie lange Logs aufbewahren

Entbannungsanträge kommen meist innerhalb weniger Wochen nach dem Bann. Bewahre mindestens 30 Tage auf. FiveDock City bietet das für 12 € im Monat. Free speichert 7 Tage, Metro 90 Tage plus Archiv.

Im Vergleich zu Fivemanage

Fivemanage speichert Logs fürs Geld länger: 90 Tage bei Pro für 24 $, 180 Tage bei Network. Ein FiveDock-Plan deckt aber auch Datei-Hosting, Datenbank-Backups, Reports und Team-Zugänge ab, vergleiche also die ganze Rechnung. Unser Hosting-Vergleich stellt beide nebeneinander.

Häufige Fragen

Wie logge ich Spieleraktionen auf einem FiveM-Server?

Rufe lib.logger aus ox_lib im Server-Script auf, in dem die Aktion passiert, mit der Server-ID des Spielers, einem Event-Namen und einer Nachricht. ox_lib hängt die Identifier des Spielers an und schickt Batches an den Dienst, der in ox:logger steht. FiveDock nimmt das Fivemanage-Format von ox_lib an und ordnet jede Zeile dem Spieler zu, sodass das Team den Verlauf eines Spielers der Reihe nach lesen kann.

Taugen Discord-Webhooks für FiveM-Logs?

Als Benachrichtigungsfeed für einen kleinen Server schon. Als Protokoll reichen sie nicht: Webhooks haben Rate-Limits, Anhangslinks laufen ab, nichts zeigt einen Spieler über mehrere Channels hinweg, und jeder, der eine Webhook-URL findet, kann darauf posten.

Wie lange sollte ein FiveM-Server Logs aufbewahren?

Mindestens so lange wie dein Einspruchsfenster, meist zwei bis vier Wochen. 30 Tage reichen für die meisten Server. Nimm 90, wenn du Erstattungsanfragen oder lange Untersuchungen bearbeitest.

Kann ich den Logger von ox_lib ohne Fivemanage nutzen?

Ja. Setze ox:logger auf datadog oder loki für diese Dienste, oder lass fivemanage stehen und ändere dessen Adresse auf die von FiveDock, das dieselben Batches annimmt.

Alle Artikel