Observabilité en JavaScript : traçage, métriques et logs pour Node.js

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

Votre application est une boîte noire ? Il est temps d'y remédier

\n\n

Avez-vous déjà pensé : « Pourquoi mon service Node.js ralentit alors que le code est parfait ? » Ou avez-vous reçu une plainte d'un utilisateur sans pouvoir comprendre ce qui n'a pas fonctionné ? Cela vous parle ? Bienvenue dans un monde où, sans observabilité en JavaScript, vous travaillez à l'aveugle.

\n\n

L'observabilité n'est pas qu'un mot à la mode. C'est une approche qui transforme votre code d'une boîte noire en un système transparent. Nous apprendrons à lui poser des questions : « Qui est le coupable ? » (traçage), « Que se passe-t-il en ce moment ? » (métriques) et « Que s'est-il passé hier à 3h15 ? » (logs).

\n\n

Dans cet article, nous aborderons les trois piliers de l'observabilité dans Node.js : le traçage, les métriques et les logs. Vous obtiendrez des exemples de code prêts à l'emploi et comprendrez comment mettre en œuvre ces pratiques dès aujourd'hui. C'est parti !

\n\n

Traçage en JavaScript : le voyage d'une requête

\n\n

Imaginez qu'un utilisateur clique sur le bouton « Passer commande ». Cette requête traverse l'API Gateway, le service d'authentification, le panier, la passerelle de paiement et la base de données. Si quelque chose se casse, où chercher ? Le traçage (ou distributed tracing) vous donne une carte de ce voyage.

\n\n

Qu'est-ce que le traçage en termes simples

\n\n

Le traçage est une méthode pour suivre le chemin d'une requête spécifique à travers tous les microservices et fonctions. Chaque étape est un span, et toute la chaîne est une trace. Vous voyez combien de temps chaque étape a pris et où l'erreur s'est produite.

\n\n

OpenTelemetry : le standard pour l'observabilité en JavaScript

\n\n

OpenTelemetry (OTel) est le standard industriel pour la collecte de traces, de métriques et de logs. Il est supporté par tous les grands clouds et outils (Jaeger, Zipkin, Grafana).

\n\n

Installation :

\n
npm install @opentelemetry/api @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-node
\n\n

Exemple de base de traçage pour une application Express :

\n
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');\nconst { SimpleSpanProcessor } = require('@opentelemetry/sdk-trace-base');\nconst { ConsoleSpanExporter } = require('@opentelemetry/exporter-console');\nconst { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express');\nconst { HttpInstrumentation } = require('@opentelemetry/instrumentation-http');\n\nconst provider = new NodeTracerProvider();\nprovider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));\nprovider.register();\n\nconst { getTracer } = require('@opentelemetry/api');\nconst tracer = getTracer('my-app');\n\n// Traçage automatique HTTP et Express\nconst { registerInstrumentations } = require('@opentelemetry/instrumentation');\nregisterInstrumentations({\n  tracerProvider: provider,\n  instrumentations: [\n    new ExpressInstrumentation(),\n    new HttpInstrumentation()\n  ]\n});\n\n// Désormais, chaque requête créera une trace avec des spans\nconst express = require('express');\nconst app = express();\n\napp.get('/api/order', async (req, res) => {\n  // Span manuel pour la logique métier\n  const span = tracer.startSpan('processPayment');\n  try {\n    // ... votre logique\n    await new Promise(r => setTimeout(r, 100)); // simulation\n    span.setStatus({ code: 1 }); // OK\n  } catch (err) {\n    span.setStatus({ code: 2, message: err.message }); // ERROR\n    throw err;\n  } finally {\n    span.end();\n  }\n  res.send('Order created');\n});\n\napp.listen(3000);
\n\n

Vous verrez désormais dans la console des données structurées : quelle requête, combien de temps chaque middleware a pris, où l'erreur s'est produite. C'est l'observabilité javascript en action.

\n\n

Métriques : le pouls de votre application

\n\n

Le traçage est utile pour les requêtes individuelles, mais qu'en est-il de la vue d'ensemble ? Combien de requêtes par seconde ? Quelle est la latence ? Combien de mémoire votre Node.js consomme-t-il ? Les métriques répondent à ces questions.

\n\n

Prometheus et le client pour Node.js

\n\n

Prometheus est le standard de facto pour la collecte de métriques. Il « tire » les données de votre application via HTTP.

Blogs

Book Recommendations