Aller au contenu
Blog

Logs FiveM : où les webhooks Discord échouent, et quoi utiliser

Les logs par webhook Discord sont limités, introuvables par joueur et perdent leurs pièces jointes. Logguer avec ox_lib et en faire des preuves.

Par Termi

5 min de lecture
  • Logs
  • ox_lib
  • Discord
  • Evidence
Sur cette page

La plupart des serveurs FiveM loggent de la même façon : un salon Discord par catégorie, par exemple argent, morts et commandes admin, et une URL de webhook dans chaque script. Le premier mois, ça marche. Puis une demande de débannissement arrive pour un fait vieux de trois semaines, et quelqu’un fait défiler des milliers d’embeds pour retrouver une seule licence. Ce guide montre où le logging Discord casse, comment envoyer à la place des logs structurés avec ox_lib et comment les transformer en preuves que vous pouvez montrer au joueur.

Où le logging Discord casse

  • Limites de débit. Discord limite la vitesse à laquelle un webhook peut poster. Un soir de forte affluence, quand chaque virement, chaque mort et chaque déplacement d’objet est loggé, les requêtes reviennent en 429 Too Many Requests, et un script qui ne réessaie pas perd cette ligne.
  • Aucune vue par joueur. Pour trouver tout ce qui concerne un joueur, il faut fouiller chaque salon séparément et remettre l’ordre à la main.
  • Les pièces jointes expirent. Les captures postées via un webhook reçoivent des liens signés qui cessent de fonctionner hors de Discord, donc un lien copié dans un ticket finit par casser.
  • Quiconque a l’URL peut poster. L’URL d’un webhook se comporte comme un mot de passe. Si elle se trouve dans un script client, les joueurs peuvent la lire et poster ce qu’ils veulent dans votre salon de logs.
  • Chaque lecteur voit tout. Les permissions d’un salon sont tout ou rien : un modérateur à l’essai qui peut lire le salon argent voit tous les identifiants loggés dedans.

Envoyer des logs structurés avec ox_lib

ox_lib, que la plupart des serveurs ESX, QBCore et Qbox font déjà tourner, possède un logger côté serveur. Un appel à l’endroit où l’action se produit remplace une requête de webhook :

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)

Les arguments sont l’ID serveur du joueur, un nom d’événement, un message et autant de tags clé:valeur que vous voulez. ox_lib ajoute lui-même le nom et les identifiants du joueur à chaque ligne, regroupe les lignes en lots et les envoie au service indiqué dans un convar :

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

ox_lib propose trois services : Datadog, Grafana Loki et Fivemanage. Fivemanage conserve les logs 15 jours dans son offre gratuite et son offre à 8 $, 90 jours avec Pro à 24 $ et 180 jours avec Network à 79 $.

Les envoyer à FiveDock

FiveDock accepte tels quels les lots qu’envoie le logger Fivemanage d’ox_lib. ox_lib garde cette adresse sur une seule ligne de imports/logger/providers/fivemanage.lua. Pointez-la vers FiveDock et utilisez un token d’API FiveDock avec le scope logs:write comme fivemanage:key :

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

Mettre à jour ox_lib remplace ce fichier : modifiez donc la ligne de nouveau après chaque mise à jour, ou gardez-la dans votre propre copie d’ox_lib.

Chaque ligne arrive dans la Black Box avec la licence, l’ID Discord et le nom du joueur. À côté, on trouve tout ce que l’agent FiveDock enregistre lui-même : erreurs de script, signalements en jeu et captures d’écran.

Des logs aux preuves

Avec Metro, la Black Box transforme ces lignes en chronologie par joueur : toutes les lignes loggées pour une licence, de la connexion au virement jusqu’à la capture, dans l’ordre et à la seconde près. Un bouton convertit un extrait en dossier de preuves, un lien que vous pouvez remettre au joueur que vous venez de bannir.

La recherche couvre tous les joueurs, par licence, plaque ou mot, et vous pouvez enregistrer une recherche que vous lancez chaque nuit. Les alertes d’économie surveillent les mêmes lignes dans chaque offre : un virement au-dessus d’un seuil, ou de l’argent gagné trop vite, est posté sur Discord. Avec Metro, l’alerte déclenche aussi une sauvegarde à cette seconde, et les alertes d’objets en double repèrent le même numéro de série dans deux inventaires.

Le masquage par rôle de Metro garde les vraies adresses et les données de paiement hors de portée des stagiaires, ce qu’un salon Discord ne sait pas faire.

Combien de temps garder les logs

Les demandes de débannissement arrivent en général dans les quelques semaines qui suivent un bannissement. Gardez au moins 30 jours, ce que FiveDock City offre pour 12 € par mois. Free garde 7 jours, et Metro 90 jours plus une archive.

Comparé à Fivemanage

Fivemanage garde les logs plus longtemps pour le prix : 90 jours avec Pro à 24 $, 180 jours avec Network. Une offre FiveDock couvre en plus l’hébergement de fichiers, les sauvegardes de base de données, les signalements et les comptes staff, donc comparez la facture entière. Notre comparatif d’hébergement met les deux côte à côte.

Questions fréquentes

Comment logguer les actions des joueurs sur un serveur FiveM ?

Appelez lib.logger d’ox_lib dans le script serveur où l’action se produit, avec l’ID serveur du joueur, un nom d’événement et un message. ox_lib ajoute les identifiants du joueur et envoie des lots au service défini dans ox:logger. FiveDock accepte le format Fivemanage d’ox_lib et classe chaque ligne sous le joueur, si bien que le staff peut lire l’historique d’un joueur dans l’ordre.

Les webhooks Discord conviennent-ils aux logs FiveM ?

Comme flux de notifications pour un petit serveur, oui. Comme archive, ils sont insuffisants : les webhooks sont limités en débit, les liens des pièces jointes expirent, rien ne montre un joueur à travers plusieurs salons, et quiconque trouve l’URL d’un webhook peut y poster.

Combien de temps un serveur FiveM doit-il garder ses logs ?

Au moins aussi longtemps que votre délai de recours, en général deux à quatre semaines. 30 jours suffisent à la plupart des serveurs. Gardez-en 90 si vous traitez des demandes de remboursement ou de longues enquêtes.

Puis-je utiliser le logger d’ox_lib sans Fivemanage ?

Oui. Définissez ox:logger sur datadog ou loki pour ces services, ou gardez fivemanage et remplacez son adresse par celle de FiveDock, qui accepte les mêmes lots.

Tous les articles