Nous sommes heureux d'annoncer qu'une nouvelle fonctionnalité a été mise en place !
Il est maintenant possible d'envoyer un signal à une application hébergée par Scalingo.
Sur la plateforme Scalingo, l'envoi de signaux est un moyen utile de déclencher des événements tout en étant le propriétaire ou la personne collaboratrice d'une application. Cela peut être particulièrement utile à des fins de débogage.
Dans cet article, nous allons voir comment envoyer un signal défini par l'utilisateur (SIGUSR1
et SIGUSR2
) à une application hébergée par Scalingo. Pour plus d'informations, vous pouvez consulter la page de documentation Scalingo à propos de Send-Signal.).
Chez Scalingo, nous utilisons souvent le gestionnaire de signaux pour :
Un signal peut être envoyé avec notre CLI :
$ scalingo -a mon-app ps
+-------+---------+-------------+------+---------------------+
| NOM | STATUT | COMMANDE | TAILLE | CRÉÉE À |
+-------+---------+-------------+------+---------------------+
| web-1 | en cours d'exécution | sample-test | M | 2023/01/05 09:24:33 |
| web-2 | en cours d'exécution | sample-test | M | 2023/01/05 09:24:33 |
+-------+---------+-------------+------+---------------------+
$ scalingo -a my-app send-signal --signal SIGUSR1 web-1
-----> A envoyé le signal 'SIGUSR1' au conteneur 'web-1'.
L'exemple suivant est un échantillon de ce que l'on peut trouver sur notre compte GitHub Scalingo et qui peut être déployé rapidement sur la plateforme.
Dans cet exemple, nous allons attraper un SIGUSR1
et imprimer l'utilisation de la mémoire de notre processus.
La partie catch peut être résumée par ce code :
process.on("SIGUSR1", () => {
const used = process.memoryUsage();
console.log("Printing memory usage")
for (let key in used) {
console.log(`- ${key} ${Math.round(used[key] / 1024 / 1024 * 100) / 100} MB`);
}
});
var express = require('express')
var app = express()
// ...
Ici, nous devons écrire notre point d'entrée dans le Procfile
. Si nous ne le faisons pas, le point d'entrée par défaut d'une application node sera npm start
qui ne transmet pas les signaux à app.js
. Plus d'informations sur le processus qui capte le signal peuvent être trouvées dans notre documentation Scalingo.
web: node app.js
Une fois déployé sur Scalingo, nous pouvons facilement envoyer un signal à notre application conteneurisée :
$ scalingo -a my-app send-signal --signal SIGUSR1 web-1
-----> Envoi du signal 'SIGUSR1' au conteneur 'web-1'.
Ceci produira le log suivant dans notre application :
2023-01-10 15:13:22.147625033 +0100 CET [web-1] Printing memory Usage
2023-01-10 15:13:22.147633815 +0100 CET [web-1] - heapTotal 6.7 MB
2023-01-10 15:13:22.147633065 +0100 CET [web-1] - rss 38.89 MB
2023-01-10 15:13:22.147634619 +0100 CET [web-1] - heapUsed 4.59 MB
2023-01-10 15:13:22.147635164 +0100 CET [web-1] - external 1.39 MB
2023-01-10 15:13:22.147635509 +0100 CET [web-1] - arrayBuffers 0.03 MB
Dans cet article, nous avons découvert la nouvelle fonctionnalité permettant d'envoyer un signal à une application hébergée par Scalingo. Comme nous l'avons vu, cette fonctionnalité est très utile pour le débogage. Un nouveau champ de possibilités maintenant s'ouvre à vous, allez l'explorer !
Chez Scalingo (avec nos partenaires), nous utilisons des traceurs sur notre site.
Certains, essentiels et fonctionnels, sont nécessaires au bon fonctionnement du site et ne peuvent pas être refusés.
D'autres sont utilisés pour mesurer notre audience, entretenir notre relation avec vous et vous adresser de temps à autre du contenu qualitatif ainsi que de la publicité.