Este artículo está disponible en francés.
1. Deux journaux différents #
Fonctionnement et trafic.
Distinguer #
| Journal | Contenu | Configuration |
|---|---|---|
Journal de Traefik (log) | Démarrage, erreurs de configuration, certificats, providers | log.level : ERROR (défaut), WARN, INFO, DEBUG |
Access logs (accessLog) | Une ligne par requête : client, routeur, service, statut, durée | désactivés par défaut |
Configuration #
log:
level: INFO
format: json
accessLog:
filePath: /var/log/traefik/access.log
format: json
bufferingSize: 100 # écriture groupée
filters:
statusCodes: ["400-599"] # n'enregistrer que les erreurs…
minDuration: 500ms # …ou les requêtes lentes
fields:
headers:
defaultMode: drop
names: { User-Agent: keep, Authorization: redact }2. Lire les access logs #
Les champs utiles.
Champs JSON principaux #
| Champ | Signification |
|---|---|
ClientHost | Adresse IP du client |
RequestMethod, RequestPath | Méthode et chemin |
RouterName, ServiceName | Routeur et service qui ont traité la requête |
DownstreamStatus | Statut renvoyé au client |
OriginStatus | Statut renvoyé par le backend (0 s'il n'a pas répondu) |
Duration | Durée totale en nanosecondes |
TraceId | Identifiant de trace si le tracing est activé |
Requêtes avec jq #
# Erreurs 5xx par service
jq -r 'select(.DownstreamStatus >= 500) | .ServiceName' access.log | sort | uniq -c | sort -rn
# Requêtes les plus lentes (ms)
jq -r '[(.Duration/1e6|floor), .RequestPath] | @tsv' access.log | sort -rn | head
# Le backend n'a pas répondu (502/504) : OriginStatus vaut 0
jq -c 'select(.OriginStatus == 0) | {RouterName, ServiceName, DownstreamStatus}' access.log3. Bonnes pratiques #
Utile, maîtrisé, conforme.
Règles #
- Format JSON, horodatage UTC et rotation (logrotate avec envoi de
USR1à Traefik pour rouvrir le fichier). - Masquer les en-têtes sensibles (
Authorization, cookies) : ce sont des données personnelles ou des secrets. - Filtrer en production à fort trafic (erreurs et requêtes lentes) et produire les volumes par des métriques plutôt que par les logs.
- Activer le tracing pour relier une ligne de log à une trace (
TraceId).
RGPD : Les adresses IP sont des données personnelles au sens du RGPD : définissez une durée de conservation.
Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
Artículos recomendados
Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité
Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...
Traefik : les métriques avec Prometheus et OpenTelemetry
Exposer les métriques de Traefik (Prometheus ou OTLP), comprendre les séries par entrypoint, rout...
Traefik : le tracing distribué avec OpenTelemetry
Activer le tracing de Traefik v3 avec OpenTelemetry (OTLP), propager le contexte W3C vers les app...
Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…)
Les middlewares Traefik modifient les requêtes et réponses entre le routeur et le service : authe...
Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)
Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD Ing...
L'API de Traefik : inspecter la configuration et sécuriser le tableau de bord
Utiliser l'API REST de Traefik pour inspecter routeurs, services, middlewares et entrypoints, l'e...
Traefik : vue d'ensemble, architecture et premier déploiement
Découvrir Traefik : reverse proxy et load balancer cloud-native, entrypoints, routers, services, ...
Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)
Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, ...
Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques
Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses appl...