Monitorer un service NodeJS avec PM2, sur une Debian 8 (Jessie)
J'ai déjà décrit le monitoring d'un service NodeJS avec Supervisor, c'est bien mais PM2 contrairement à Supervisor est spécialisé dans le pilotage de services NodeJS, et ça se voit.
L'installation est on ne peut plus simple:
npm install pm2 -g
pm2 startup
On suppose à l'évidence que NodeJS et NPM ont déjà été installés. La première ligne installe PM2, la seconde installe les scripts nécessaires pour relancer PM2 à chaque redémarrage du serveur.
Voilà, c'est tout. Afin de tester ce nouvel outil, créons un petit serveur web en NodeJS, qui écoutera sur le port 8080. On appelle notre programme 'app.js':
const http = require('http');

const hostname = '0.0.0.0';
const port = 8080;

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
La commande suivante suffit à lancer notre mini serveur web:
pm2 start app.js
Ou mieux encore, en donnant un nom clair au process:
pm2 start app.js --name my-process
Pour lister les processes monitorés:
pm2 list
On voit dans la liste un id pour chaque process. Celui-ci pourra servir pour exécuter les commandes suivantes.
Redémarrer un process:
pm2 restart [id]
Stopper un process (attention, il est juste stoppé, pas supprimé):
pm2 stop [id]
Supprimer un process:
pm2 delete [id]
Enfin, cerise sur le gâteau, on peut même afficher un écran de monitoring des processes en cours:
pm2 monit
Pour plus d'informations sur l'outil: http://pm2.keymetrics.io