iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
iducationducation
IndexArticlesFormationsProfilOutilsBibliothech
N°014 — 2026
Navigation
01Index02Articles03Formations04Profil05Outils06Bibliothech
N°014 — 2026
Formations
Node.js · Intermédiaire

PM2

Gérer, monitorer et déployer des applications Node.js en production avec PM2 — process manager, clusters, logs, déploiement automatisé et survie aux redémarrages.

PM2Node.jsNginxsystemd
01Introduction et installation02Commandes essentielles03Fichier de configuration ecosystem04Mode cluster et load balancing05Logs et monitoring06Persistance et démarrage automatique07Déploiement en production
Chapitre 5·12 min

Logs et monitoring

Une app en production que vous ne pouvez pas observer est un problème en attente de survenir. PM2 centralise les logs et donne un dashboard temps réel — sans installer d'outil externe.

Structure des logs

Par défaut, PM2 stocke tous les logs dans ~/.pm2/logs/ :

~/.pm2/logs/
├── api-out.log        # stdout de l'app "api"
├── api-error.log      # stderr de l'app "api"
├── worker-out.log
└── worker-error.log

En mode cluster avec merge_logs: false (défaut) :

~/.pm2/logs/
├── api-out-0.log      # worker 0
├── api-out-1.log      # worker 1
├── api-error-0.log
└── api-error-1.log

Avec merge_logs: true dans ecosystem.config.js, tout est dans un seul fichier par type. Beaucoup plus pratique pour grep et tail.

Lire les logs

# Toutes les apps, en temps réel
pm2 logs
 
# Une app spécifique
pm2 logs api
 
# N dernières lignes
pm2 logs api --lines 200
 
# Erreurs uniquement
pm2 logs api --err
 
# Désactiver la couleur (pour redirection)
pm2 logs api --no-color > debug.txt

Chaque ligne est préfixée avec le nom de l'app et le timestamp. En mode cluster, le préfixe inclut l'ID du worker : api-0, api-1.

pm2 monit — dashboard terminal

pm2 monit

Interface interactive divisée en trois zones :

  • Gauche : liste des processus avec CPU et mémoire en temps réel
  • Haut droite : logs en direct du processus sélectionné
  • Bas droite : métadonnées (PID, uptime, restarts, mode)

Naviguez avec les flèches. Quittez avec q. Aucune installation supplémentaire nécessaire.

Rotation des logs

Sans rotation, les fichiers logs grossissent jusqu'à remplir le disque. PM2 a un module officiel pour ça :

pm2 install pm2-logrotate

Configuration :

# Taille max avant rotation (défaut : 10M)
pm2 set pm2-logrotate:max_size 50M
 
# Nombre de fichiers à conserver (défaut : 30)
pm2 set pm2-logrotate:retain 7
 
# Compression des anciens logs
pm2 set pm2-logrotate:compress true
 
# Heure de rotation (format cron, défaut : minuit)
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'

Vérifier la configuration active :

pm2 conf pm2-logrotate

Après configuration, pm2-logrotate tourne en tant que module PM2 et gère automatiquement la rotation. Sur un VPS avec peu d'espace disque, retain: 3 et max_size: 20M suffisent pour la plupart des projets.

Chemin personnalisé des logs

Dans ecosystem.config.js, vous pouvez rediriger les logs vers n'importe quel dossier :

{
  name: 'api',
  script: './index.js',
  out_file: '/var/log/myapp/api-out.log',
  error_file: '/var/log/myapp/api-error.log',
  log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
  merge_logs: true,
}

Assurez-vous que l'utilisateur qui lance PM2 a les droits d'écriture sur le dossier cible.

Désactiver les logs

Pour les apps très verboseuses où vous gérez vous-même les logs (winston, pino vers un service externe) :

{
  out_file: '/dev/null',
  error_file: '/dev/null',
}

PM2 Plus — monitoring cloud

PM2 propose un dashboard web payant (PM2 Plus / KeyMetrics). Pour un projet perso ou une petite équipe, ça n'est pas nécessaire. pm2 monit + des logs bien configurés couvrent 95% des besoins.

Si vous voulez un monitoring plus sérieux sans coût, combinez PM2 avec un stack Grafana + Loki pour les logs et les métriques — mais c'est une infrastructure à part entière.

Alertes par email avec pm2-slack

Pour recevoir une notification quand une app crashe :

pm2 install pm2-slack
pm2 set pm2-slack:slack_url https://hooks.slack.com/services/VOTRE_WEBHOOK

Envoie un message Slack à chaque crash ou redémarrage. Remplace avantageusement les vérifications manuelles régulières.


Les logs sont gérés et ne rempliront plus le disque. Chapitre suivant : rendre PM2 persistant au reboot du serveur.

Précédent
Mode cluster et load balancing
Suivant
Persistance et démarrage automatique

Développeur fullstack passionné. J'apprends en construisant et je documente tout — front, back, outils. Le code s'apprend mieux en public.

Naviguer

IndexTous les articlesFormationsProfilOutilsBibliothech

Ailleurs

GitHub RSS

Newsletter

Les articles, libs et découvertes. Une fois par semaine, pas plus.

© 2026 William LoreeConçu & codé à la main