Surveillance des applications TypeScript : outils et pratiques

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 : des erreurs à la performance



La surveillance des applications TypeScript est un ensemble de pratiques et d'outils assurant l'observabilité (observability) du système en temps réel. Contrairement à la simple journalisation, la surveillance professionnelle inclut la collecte de métriques, le traçage des requêtes, l'agrégation des erreurs et l'alerte automatique. Pour TypeScript, fonctionnant à la fois sur le serveur (Node.js) et dans le navigateur, il est essentiel de disposer d'un système d'observation unifié. Dans cet article, nous analyserons les outils clés et des exemples de leur intégration.



Pourquoi surveiller les applications TypeScript ?

TypeScript est compilé en JavaScript, ce qui impose des particularités pour le débogage. Le code source typé se transforme en JS dynamique, et les erreurs de type peuvent n'apparaître qu'à l'exécution. Sans surveillance, vous risquez :

  • De manquer une TypeError ou une ReferenceError en production
  • De ne pas remarquer une dégradation des performances (requêtes lentes, fuites mémoire)
  • De perdre le contexte de l'erreur (stack trace, données utilisateur, environnement)


Composants principaux d'un système de surveillance

La pile de surveillance moderne repose sur trois piliers : logs, métriques (metrics) et traces. Pour les applications TypeScript, nous examinerons des bibliothèques spécifiques :



1. Sentry — le roi du suivi des erreurs

Sentry est une plateforme SaaS pour la surveillance des erreurs et des performances. Pour TypeScript, les paquets officiels @sentry/node et @sentry/react sont disponibles. Il intercepte automatiquement les exceptions, collecte les stack traces et le contexte.



Installation :

npm install @sentry/node @sentry/tracing


Initialisation de base dans Node.js :

import * as Sentry from '@sentry/node';import { ProfilingIntegration } from '@sentry/profiling-node';

Sentry.init({ dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0', integrations: [new ProfilingIntegration()], tracesSampleRate: 1.0, // fréquence de collecte des traces (0-1) profilesSampleRate: 1.0, // profilage des performances});

// Appel manuel en cas d'erreurapp.get('/api/users', async (req, res) => { try { const users = await getUsers(); res.json(users); } catch (error) { Sentry.captureException(error); res.status(500).send('Internal Server Error'); }});


Avantages :

  • Liaison automatique des erreurs avec les versions
  • Prise en charge des source maps pour TypeScript
  • Performance : surveillance des transactions lentes


2. OpenTelemetry — le standard de l'observabilité

OpenTelemetry (OTel) est un standard ouvert pour la collecte de télémétrie. Pour TypeScript, le paquet @opentelemetry/sdk-node est utilisé. OTel permet de collecter des traces et des métriques, puis de les envoyer vers n'importe quel système (Jaeger, Prometheus, Datadog).



Exemple d'intégration avec Express :

import { NodeSDK } from '@opentelemetry/sdk-node';import { getNodeAutoInstrumentations } from '@opentelemetry/instrumentation-node';

const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()], // l'exportateur peut être configuré sur OTLP ou la console});

sdk.start();

// Toute la logique Express est automatiquement tracéeimport express from 'express';const app = express();app.get('/data', (req, res) => { res.json({ status: 'ok' });});


OpenTelemetry instrumente automatiquement les bibliothèques populaires : Express, MongoDB, Redis, gRPC. Cela donne une image complète du parcours d'une requête à travers les services.



3. Prometheus + Grafana — métriques et visualisation

Pour la collecte de métriques (RPS, latence, erreurs) en TypeScript, on utilise la bibliothèque

Recommendations