observabilité des microservices Node.js avec OpenTelemetry et Jaeger sur Kubernetes
04/01/2026
observabilité des microservices Node.js avec OpenTelemetry et Jaeger sur Kubernetes
Pour garantir la fiabilité et optimiser les performances de vos microservices, mettre en place une couche d’« observabilité » est indispensable. Grâce à OpenTelemetry et Jaeger, vous pourrez collecter, tracer et analyser automatiquement chaque appel HTTP, requête base de données ou événement interne de vos services Node.js déployés sur Kubernetes. Ici, on détaille le déploiement pas à pas, des commandes Helm aux snippets de code.
Étape 1 : déployer Jaeger dans votre cluster Kubernetes
- Ajouter le repo Helm de Jaeger :
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts helm repo update - Installer Jaeger en observability namespace :
kubectl create namespace observability helm install jaeger jaegertracing/jaeger \ --namespace observability \ --set collector.security.tls.enabled=false \ --set agent.enabled=true - Vérifier le déploiement :
kubectl get pods -n observability # Vous devez voir jaeger-agent, jaeger-collector et jaeger-query
Étape 2 : instrumenter votre application Node.js
- Installer les dépendances OpenTelemetry :
npm install @opentelemetry/sdk-node \ @opentelemetry/api \ @opentelemetry/exporter-jaeger \ @opentelemetry/instrumentation-http \ @opentelemetry/instrumentation-express - Créer un fichier
tracer.jsà la racine :const { NodeSDK } = require('@opentelemetry/sdk-node'); const { JaegerExporter } = require('@opentelemetry/exporter-jaeger'); const { HttpInstrumentation } = require('@opentelemetry/instrumentation-http'); const { ExpressInstrumentation } = require('@opentelemetry/instrumentation-express'); const exporter = new JaegerExporter({ serviceName: 'my-node-service', host: 'jaeger-agent.observability.svc.cluster.local', port: 6832, }); const sdk = new NodeSDK({ traceExporter: exporter, instrumentations: [new HttpInstrumentation(), new ExpressInstrumentation()] }); sdk.start(); - Modifier votre script de démarrage dans
package.json:"start": "node -r ./tracer.js index.js"
Étape 3 : visualiser et analyser vos traces
- Exposer le service Jaeger Query :
kubectl port-forward svc/jaeger-query 16686:16686 -n observability - Ouvrir http://localhost:16686 et sélectionner votre service « my-node-service » pour consulter les temps de réponse et les goulots d’étranglement.
- Interroger des spans précis, filtrer par status HTTP ou durée, et générer des heatmaps pour suivre l’évolution sur la semaine.
Bonnes pratiques et optimisation
- Échantillonnage (sampling) : réduisez le taux à 1 % ou 5 % pour limiter l’overhead CPU/RAM (
sdk.configureTracer({ sampler: ... })). - Déployer un collector en sidecar pour agréger plusieurs protocoles (OTLP, Jaeger, Zipkin).
- Sécuriser Jaeger : activer TLS, configurer un NetworkPolicy pour restreindre les accès.
- Exporter aussi des métriques Prometheus pour compléter votre dashboard Grafana.
- Mesurer l’impact : surveillez un +5 % d’utilisation CPU et <10 ms de latence ajouté. Ajustez sampling si nécessaire.
Conclusion
En moins d’une heure, votre plateforme Kubernetes dispose désormais d’une observabilité avancée sur chaque appel de vos microservices Node.js. Vous anticipez les erreurs, optimisez les performances et améliorez l’expérience utilisateur. Besoin d’un accompagnement dédié ou d’augmenter votre équipe DevOps ? Nos experts sont là pour vous aider.
IMAGE_TAGS: observability, microservices

