Pour toute application, en particulier dans les environnements de production, la surveillance et la journalisation sont des composants essentiels. Ils fournissent un aperçu de l’état de santé, des performances et des problèmes potentiels de votre application. Dans les applications Node.js, la surveillance vous aide à suivre des mesures telles que les temps de réponse, l'utilisation de la mémoire, les taux d'erreur, etc., tandis que la journalisation capture des données essentielles sur les activités des utilisateurs, les erreurs et les performances du système. Cet article couvre les techniques efficaces de journalisation et de surveillance pour les applications Node.js, avec des exemples concrets et des extraits de code.
La journalisation et la surveillance fournissent des informations sur :
Node.js possède un objet console intégré, qui fournit des fonctionnalités de journalisation de base (console.log(), console.error(), etc.). Cependant, pour les applications évolutives, une journalisation structurée et configurable est essentielle.
// Basic logging in Node.js console.log("Application started"); console.error("An error occurred");
Pour les applications de production, utilisez des enregistreurs structurés comme Winston ou Bunyan.
Winston est une bibliothèque de journalisation populaire dans Node.js qui permet des niveaux de journalisation configurables et prend en charge plusieurs transports (par exemple, fichier, console, HTTP).
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ] }); // Log messages logger.info("This is an informational message"); logger.error("This is an error message");
Prometheus est un outil puissant pour collecter des métriques d'application, et Grafana vous permet de visualiser ces métriques à travers des tableaux de bord détaillés.
Installez le package prom-client :
npm install prom-client
Définissez des métriques telles que la durée des requêtes et les requêtes actives dans votre application Node.js :
const client = require('prom-client'); // Create metrics const requestDuration = new client.Histogram({ name: 'http_request_duration_seconds', help: 'Duration of HTTP requests in seconds', labelNames: ['method', 'status'] }); const activeRequests = new client.Gauge({ name: 'active_requests', help: 'Number of active requests' }); // Record metrics app.use((req, res, next) => { const end = requestDuration.startTimer(); activeRequests.inc(); res.on('finish', () => { end({ method: req.method, status: res.statusCode }); activeRequests.dec(); }); next(); });
Créez un point de terminaison pour exposer les métriques à Prometheus :
// Basic logging in Node.js console.log("Application started"); console.error("An error occurred");
Connectez Prometheus à Grafana et créez des tableaux de bord personnalisés pour visualiser des mesures telles que les taux de requêtes, la latence et l'utilisation de la mémoire.
Les contrôles de santé surveillent l'état de votre application et vous alertent des problèmes susceptibles d'affecter la disponibilité. Ils peuvent inclure des vérifications de base de la réponse du serveur, de l'utilisation de la mémoire ou de la connectivité de la base de données.
const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ] }); // Log messages logger.info("This is an informational message"); logger.error("This is an error message");
Intégrez des vérifications de l'état à des outils de surveillance tels que AWS CloudWatch ou Google Cloud Monitoring pour créer des alertes lorsque des problèmes surviennent.
Supposons que vous exécutiez une application de commerce électronique sur AWS, traitant des centaines de requêtes par seconde. Voici comment configurer une journalisation et une surveillance robustes :
Utilisez Winston pour enregistrer toutes les actions critiques, y compris les demandes des utilisateurs, les transactions réussies et les erreurs.
npm install prom-client
Utilisez Prometheus pour suivre des métriques telles que la durée des requêtes, les requêtes actives et l'utilisation de la mémoire. Cela peut aider à identifier les problèmes de performances pendant les périodes de trafic élevé.
Connectez les données Prometheus à Grafana et configurez des tableaux de bord pour surveiller les temps de réponse, l'utilisation du processeur et les taux d'erreur en temps réel. Configurez des alertes pour être averti de toute anomalie, telle que des pics de taux d'erreur ou une utilisation élevée de la mémoire.
Une journalisation et une surveillance efficaces sont essentielles pour gérer et faire évoluer les applications Node.js, en particulier en production. Les frameworks de journalisation comme Winston vous permettent de capturer des journaux structurés, tandis que les outils de surveillance comme Prometheus et Grafana offrent une visibilité sur les mesures de performances et vous aident à résoudre les problèmes plus rapidement. En mettant en œuvre ces outils, vous pouvez garantir que vos applications Node.js fonctionnent correctement, gèrent le trafic efficacement et offrent aux utilisateurs une expérience fiable.
Dans le prochain article, nous explorerons la sécurisation de votre application Node.js, en discutant de techniques telles que HTTPS, CORS, le cryptage des données, etc. Restez à l'écoute !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!