Les journaux d'événements (logs) sont la boîte noire de votre serveur. Sachez analyser les logs d'accès et d'erreurs Nginx, filtrer les traces d'exception PM2 en direct et utiliser journalctl pour diagnostiquer les pannes système.
Enregistre les pannes de proxy_pass, les erreurs 502/504 et les problèmes de certificats.
Historique de chaque requête HTTP reçue avec IP, temps de réponse et code de statut.
Affiche le flux continu des console.log et console.error de vos applications Node.
Inspecte les journaux du démon système systemd pour Nginx, Docker ou la BDD.
# 1. Suivre les logs de votre API Node.js en temps réel $ pm2 logs learnweb-api --lines 50 [PM2] Tailing last 50 lines for [learnweb-api] process 0|learnweb | 2026-10-11 14:45:10 [INFO] GET /api/v1/products - 200 OK (12ms) 0|learnweb | 2026-10-11 14:45:12 [ERROR] Database timeout on query: SELECT * FROM orders... 0|learnweb | Error: ETIMEDOUT at Connection.handleTimeout (/var/www/api/db.js:42) # 2. Inspecter les erreurs Nginx en temps réel $ sudo tail -f /var/log/nginx/error.log 2026/10/11 14:45:12 [error] 1024#1024: *84 Connect() failed (111: Connection refused) while connecting to upstream, client: 198.51.100.12, server: api.learnweb.com, request: "GET /api/v1/orders HTTP/1.1", upstream: "http://127.0.0.1:3000/orders" # 3. Filtrer les erreurs HTTP 500 dans les requêtes d'accès Nginx $ sudo grep " 500 " /var/log/nginx/access.log | tail -n 20 # 4. Consulter l'historique du service système Nginx $ sudo journalctl -u nginx --since "1 hour ago"
198.51.100.42 - - [11/Oct/2026:14:45:10 +0200] "POST /api/v1/login HTTP/2.0" 200 482 "https://learnweb.com" "Mozilla/5.0..."
198.51.100.42 : Adresse IP publique du visiteur.POST /api/v1/login : Méthode HTTP et ressource appelée.200 : Code de réponse renvoyé par votre serveur.482 : Taille de la réponse transférée en octets. Un site à fort trafic génère plusieurs gigaoctets de logs par mois. Linux utilise logrotate pour archiver automatiquement les fichiers de log (ex: access.log.1.gz) et supprimer les archives vieilles de plus de 30 jours, évitant ainsi la saturation du disque SSD.
| Message Rencontré dans le Log | Cause Réelle | Action Immédiate |
|---|---|---|
| Connection refused while connecting to upstream | Node.js n'est pas démarré sur le port 3000 | Lancer ou redémarrer le processus avec pm2 restart all |
| upstream timed out (110: Connection timed out) | Node.js est bloqué dans une boucle infinie ou BDD lente | Inspecter la requête SQL incriminée et optimiser les index |
| client intended to send too large body | Fichier téléversé supérieur à client_max_body_size | Augmenter client_max_body_size 50M; dans nginx.conf |
| Too many open files | Limite de descripteurs de fichiers système atteinte | Augmenter ulimit -n dans /etc/security/limits.conf |