PM2 : journaux et supervision
Lire les journaux
Section intitulée « Lire les journaux »pm2 logs # tous les journaux, en directpm2 logs api # une applicationpm2 logs api --lines 100 # 100 dernières lignes puis suivipm2 logs api --err # erreurs seulementpm2 logs api --out # sortie standard seulementpm2 logs api --nostream --lines 50 # affiche puis rend la mainpm2 logs --json # format JSONChaque application écrit deux fichiers dans ~/.pm2/logs/ : <nom>-out.log (sortie standard) et <nom>-error.log (erreurs). En mode cluster, les instances écrivent toutes dans ces fichiers (avec merge_logs: true) ou dans des fichiers distincts par instance (<nom>-out-0.log, …).
tail -f ~/.pm2/logs/api-error.loggrep -i "error" ~/.pm2/logs/api-out.log | tailHorodater
Section intitulée « Horodater »pm2 start app.js --name api --log-date-format "YYYY-MM-DD HH:mm:ss"Ou, dans le fichier ecosystem, log_date_format: 'YYYY-MM-DD HH:mm:ss Z'.
Vider les journaux
Section intitulée « Vider les journaux »pm2 flush # vide tous les fichiers de journauxpm2 flush apiRotation des journaux
Section intitulée « Rotation des journaux »Sans rotation, les journaux grossissent sans limite. Le module pm2-logrotate s’en charge :
pm2 install pm2-logrotatepm2 set pm2-logrotate:max_size 10Mpm2 set pm2-logrotate:retain 7pm2 set pm2-logrotate:compress truepm2 set pm2-logrotate:rotateInterval '0 0 * * *'pm2 conf pm2-logrotate| Réglage | Sens |
|---|---|
max_size |
Taille à partir de laquelle le fichier est archivé |
retain |
Nombre d’archives conservées |
compress |
Compresse les archives |
rotateInterval |
Rotation planifiée (expression cron) |
Autre approche : logrotate du système avec l’option copytruncate sur ~/.pm2/logs/*.log (voir Ubuntu Server : outils utiles).
Tableau de bord
Section intitulée « Tableau de bord »pm2 monitpm2 monit affiche en direct, dans le terminal, la consommation de processeur et de mémoire par processus, ainsi que les journaux.
pm2 show api # détail d'une applicationpm2 jlist | python3 -m json.tool | head -40Indicateurs à surveiller
Section intitulée « Indicateurs à surveiller »| Indicateur | Où le lire | Signification |
|---|---|---|
↺ (redémarrages) |
pm2 list |
Augmente : plantages répétés |
status |
pm2 list |
errored : l’application n’a pas pu démarrer |
uptime |
pm2 show |
Court : redémarrages récents |
mem |
pm2 list |
Croissance continue : fuite de mémoire |
Taille de ~/.pm2/logs |
du -sh ~/.pm2/logs |
Journaux non tournés |
pm2 reset api # remet à zéro les compteurs de redémarragesScript de contrôle simple
Section intitulée « Script de contrôle simple »#!/bin/bash# alerte si une application n'est pas « online »set -euo pipefailstatuts=$(pm2 jlist | python3 -c 'import json, sysfor p in json.load(sys.stdin): print(p["name"], p["pm2_env"]["status"])')echo "$statuts" | awk '$2 != "online" { print "ALERTE : " $1 " est " $2; ko=1 } END { exit ko }'Planifié par un minuteur systemd ou cron, ce script peut notifier par e-mail ou webhook (voir systemd : minuteurs).
Supervision externe
Section intitulée « Supervision externe »Pour surveiller depuis l’extérieur, une vérification HTTP périodique d’une URL de santé (/sante) reste plus fiable que l’état du processus : un processus peut être online tout en étant bloqué. Exposer cette route dans l’application et la tester avec un outil de supervision.
Journaux et pare-feu
Section intitulée « Journaux et pare-feu »Les journaux peuvent contenir des données personnelles ou des erreurs détaillées : restreindre les droits du dossier (chmod 700 ~/.pm2) et ne jamais les publier tels quels.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
| Disque plein | Journaux sans rotation : installer pm2-logrotate, pm2 flush |
pm2 logs ne montre rien |
Application qui écrit ailleurs (out_file personnalisé) ou qui ne journalise pas |
| Journaux mélangés entre instances | merge_logs: true regroupe ; sinon un fichier par instance |
| Pas de date dans les lignes | Ajouter log_date_format |
pm2 monit illisible |
Agrandir le terminal ou utiliser pm2 logs et pm2 list |
Module pm2-logrotate absent après pm2 update |
pm2 install pm2-logrotate |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Les journaux de PM2 sont des fichiers, indépendants de journald. Pour le service pm2-<utilisateur> lui-même, journalctl -u pm2-<utilisateur> fonctionne de la même façon sur les deux versions.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Gestion des journaux
- Suite : Dépannage