• 10 heures
  • Difficile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

Vous pouvez être accompagné et mentoré par un professeur particulier par visioconférence sur ce cours.

J'ai tout compris !

Gérer son application avec PM2

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

PM2 est un gestionnaire d'application (process manager) écrit entièrement en Node.js. Le code est open source et disponible sur Github et il existe une une documentation complète. Il va nous permettre de garantir que notre application reste en vie, et fournit tout un tas de fonctionnalités.

Prise en main

Installation

Avant toute chose, vous allez devoir installer PM2. ^^ Dégainez votre terminal : comme tout bon module Node.js, vous allez pouvoir l'appeler dans la console via npm en utilisant l'option globale -g :

npm install pm2 -g

Pour lancer ensuite votre application Node.js, il suffit d'écrire :

pm2 start app.js
pm2start
pm2start

Et voilà ! L’application sera automatiquement relancée en cas de crash ! PM2 lance un daemon qui va interagir avec vos applications et s'assurer de leur fonctionnement.

Pour avoir des infos sur l'application que vous avez lancée, il suffit de faire :

pm2 ls
pm2ls
pm2ls

Examinons les différents éléments de pm2ls un par un.

App name

Le nom avec lequel l'application est lancée. Pour utiliser un nom personnalisé, lancez PM2 avec l'option --name VOTRE_NOM.

id

Identifiant utilisé par PM2 pour identifier votre application

mode

fork ou cluster. Le mode fork est la façon standard de lancer une application, plus d'infos sur le mode cluster dans le chapitre suivant !

pid

Le process id, utilisé par votre système d'exploitation pour identifier l'application.

status

Le statut de l'application. Elle peut être stoppée par PM2 via 

pm2 stop app 

et redémarrée via 

pm2 restart app

restart

Le nombre de restarts actuel. Chaque fois que votre application est relancée, le compteur s'incrémente !

uptime

Le temps depuis lequel l'application fonctionne

cpu

Consommation actuelle CPU de l'application

mem

Consommation actuelle de mémoire RAM de l'application

watching

Mode watch On/Off. Plus d'infos un peu plus bas ! 

Mais... Je ne vois plus les logs de mon application. Où sont-ils passés ?  ‌:euh:

Les logs sont maintenant gérés par PM2. Pour voir les sorties en temps réel ainsi que les 10 dernières lignes de log, il suffit de taper la commande :

pm2 logs
pm2logs
pm2logs

Tadam ! Notre j'écoute sur 8080 est bien présent ici. Vous pouvez aussi voir les logs du daemon pm2 qui va garder chaque start, stop ou restart d'une application.

Par défaut, les logs sont enregistrés dans un fichier de log qui a pour nom ~/.pm2/logs/<name>-<out/err>-<id>.log.

Pour notre application d'exemple, j'aurai donc deux fichiers : ~/.pm2/logs/app-out-0.log pour la sortie standard et  ~/.pm2/logs/app-err-0.log  pour la sortie d'erreurs.

C'est parti pour le crash ! 

Notre application tourne et écoute sur le port 8080. Rendez-vous sur l'application via le navigateur puis lancez :

pm2 ls
pm2lscrash
pm2lscrash

 Ho ! Un restart à 1 et un uptime de 3s... Il s'est passé quelque chose ! Pour avoir plus de détails, lançons :

pm2 log
pm2logscrash
pm2logscrash

Comme vous le voyez, nous avons la même sortie d'erreur que celle vue précédemment, bien rangée dans son fichier d'erreurs. Au redémarrage, l'application a de nouveau écrit j'ecoute sur 8080, comme prévu. Et tout tourne !

Développer avec PM2

pm2 dispose de deux outils particulièrement pratiques pour le développement : le mode watch et la commande pm2 monit.

Mode watch

Le mode watch est activé en lançant une application via  --watch. Dès la moindre modification de fichier dans le dossier actuel ou les sous dossiers, PM2 va faire quitter l'application et la relancer avec les fichiers modifiés.

pm2 start app.js --watch

Ainsi il suffit de laisser tourner PM2, d'ouvrir votre éditeur favori et la moindre modification que vous enregistrez sera répercutée instantanément ! Le feu, non ? 

pm2 monit

Lançons la commande :

pm2 monit
pm2monit
pm2monit

Et hop ! Une fenêtre avec les performances en temps réel de notre application, droit dans la console. Elle est divisée en 4 onglets : la liste des applications lancées, les logs de ces applications, les stats de l'application sélectionnée et les paramètres de l'application.

Dans le chapitre suivant, nous allons servir de la petite soeur de cette commande, pm2 imonit, pour observer la répartition de charge lors d'un stress test ! 

Dans le troisième chapitre, nous allons plonger dans l'optimisation de votre application grâce au mode Cluster de Node.js et nous allons tenter de faire chauffer notre serveur via l'utilitaire artillery. :diable:

Exemple de certificat de réussite
Exemple de certificat de réussite