Surveillance des applications TypeScript : métriques et alertes

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Surveillance des applications TypeScript : métriques et alertes



Dans le développement web moderne, la surveillance des applications TypeScript n'est pas un luxe, mais une nécessité. Sans elle, vous risquez d'apprendre l'existence d'une panne uniquement par vos utilisateurs. Dans cet article, nous allons voir comment configurer une surveillance efficace pour les projets TypeScript, quelles métriques suivre et comment configurer des alertes pour être notifié des problèmes avant qu'ils ne deviennent critiques.



Pourquoi la surveillance des applications TypeScript est-elle si importante ?



TypeScript, étant un sur-ensemble de JavaScript, est souvent utilisé pour créer des systèmes d'entreprise complexes et des solutions serveur sur Node.js. Cependant, la nature dynamique de JavaScript sous le capot peut entraîner des erreurs d'exécution inattendues. La surveillance permet de :



  • Détecter les problèmes à un stade précoce — avant qu'ils n'affectent les utilisateurs.
  • Analyser les performances — identifier les goulots d'étranglement dans le code.
  • Prédire les pannes — en se basant sur les tendances des métriques.
  • Améliorer la qualité du code — comprendre quels modules sont les plus "problématiques".


Métriques clés pour les applications TypeScript



Pour qu'une surveillance soit efficace, il faut collecter les bonnes métriques. Divisons-les en trois groupes principaux.



1. Métriques techniques (méthode RED)



L'approche RED (Rate, Errors, Duration) est idéale pour les microservices et les API :



  • Rate (taux de requêtes) — le nombre de requêtes par seconde (RPS).
  • Errors (erreurs) — le pourcentage d'erreurs (4xx, 5xx).
  • Duration (temps de réponse) — le temps de traitement d'une requête (p50, p95, p99).


Exemple de collecte de métriques avec la bibliothèque prom-client :



import client from 'prom-client';import express from 'express';

const app = express();

// Création des métriquesconst httpRequestDuration = new client.Histogram({ name: 'http_request_duration_seconds', help: 'Duration of HTTP requests in seconds', labelNames: ['method', 'route', 'status_code'], buckets: [0.1, 0.5, 1, 2, 5]});

const httpRequestsTotal = new client.Counter({ name: 'http_requests_total', help: 'Total number of HTTP requests', labelNames: ['method', 'route', 'status_code']});

// Middleware pour la collecte des métriquesapp.use((req, res, next) => { const end = httpRequestDuration.startTimer(); res.on('finish', () => { const labels = { method: req.method, route: req.path, status_code: res.statusCode }; httpRequestsTotal.inc(labels); end(labels); }); next();});

// Endpoint pour Prometheusapp.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics());});

app.listen(3000, () => console.log('Server running on port 3000'));


2. Métriques métier



Ces métriques reflètent la santé de l'activité :



  • Nombre de transactions réussies.
  • Panier moyen (pour l'e-commerce).
  • Temps de réponse de la base de données.
  • Nombre d'utilisateurs actifs.


Exemple de métrique personnalisée pour le suivi des commandes :



const ordersCreated = new client.Counter({  name: 'orders_created_total',  help: 'Total number of orders created',  labelNames: ['status']});

// Quelque part dans le codeexport function createOrder(data: OrderData): Order { // logique de création de commande ordersCreated.inc({ status: 'success' }); return order;}


3. Métriques d'infrastructure



Pour les applications Node.js/TypeScript, les éléments critiques sont :



  • Utilisation de la mémoire (heap, RSS).
  • Charge CPU.
  • Nombre de descripteurs de fichiers ouverts.
  • Nombre de connexions actives.
  • Garbage collection (GC).


Exemple de collecte de métriques mémoire :





                
                

Blogs

Book Recommendations