Déploiement
Déploiement • Chapitre 11 : Configuration du serveur et mise en production

Consultation des logs du serveur

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.

📜
/var/log/nginx/error.log

Enregistre les pannes de proxy_pass, les erreurs 502/504 et les problèmes de certificats.

🌐
/var/log/nginx/access.log

Historique de chaque requête HTTP reçue avec IP, temps de réponse et code de statut.

⚡
pm2 logs

Affiche le flux continu des console.log et console.error de vos applications Node.

🔍
journalctl -u

Inspecte les journaux du démon système systemd pour Nginx, Docker ou la BDD.

investigating-server-logs.sh
# 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"

Guide Approfondi & Architecture Système

1. Comment Lire une Ligne de Log Nginx Access

Une ligne standard d'accès ressemble à ceci :
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.

2. La Rotation des Logs (logrotate)

Attention à l'espace disque du serveur :

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.

Tableau de Diagnostic Rapide par les Logs

Message Rencontré dans le LogCause RéelleAction Immédiate
Connection refused while connecting to upstreamNode.js n'est pas démarré sur le port 3000Lancer 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 lenteInspecter la requête SQL incriminée et optimiser les index
client intended to send too large bodyFichier téléversé supérieur à client_max_body_sizeAugmenter client_max_body_size 50M; dans nginx.conf
Too many open filesLimite de descripteurs de fichiers système atteinteAugmenter ulimit -n dans /etc/security/limits.conf