@cyrusk/shared-observability

v1.0.9

Published

Observability module for Node.js microservices: logging, tracing, and metrics

Readme

shared-observability

Module Node.js partagé pour l'observabilité des microservices :

  • Tracing (OpenTelemetry)
  • Metrics (Prometheus via prom-client)
  • Logging (Winston)

Installation

Installer via npm :

npm install @cyrusk/shared-observability

Utilisation

const express = require('express');
const {
  initTracing,
  initLogger,
  metricsMiddleware,
  exposeMetricsEndpoint
} = require('@cyrusk/shared-observability');

const app = express();
const serviceName = 'regulatory-compliance-service';

// Initialisation tracing et logging
initTracing(serviceName);
const logger = initLogger(serviceName);

// Middleware Prometheus
app.use(metricsMiddleware());
exposeMetricsEndpoint(app);

// Exemple de route
app.get('/health', (req, res) => {
  logger.info('Health check passed');
  res.send('OK ✅');
});

app.listen(3000, () => {
  logger.info(`${serviceName} is running`);
});

📚 API

| Méthode | Description | |------------------------------- |---------------------------------------------------------| | initTracing(serviceName) | Configure OpenTelemetry SDK avec nom de service | | initLogger(serviceName) | Crée un logger Winston enrichi avec le contexte | | metricsMiddleware() | Middleware Express pour collecter les métriques HTTP | | exposeMetricsEndpoint(app) | Expose /metrics compatible Prometheus | | getMetrics() | Accès manuel aux compteurs / histogrammes |

✅ Avantages

🌐 Compatible avec Jaeger, Tempo, Datadog (via OTLP exporter)

🧪 Utilisable en local, staging ou production

📦 Léger, modulaire, versionné (semver) via NPM

📁 Peut être intégré dans des shared modules internes ou en standalone

Licence

MIT — libre d’utilisation dans tous vos projets internes

👤 Auteur

Kossi Gotri Mainteneur principal

  • GitLab @kossi.gotri
  • Scope NPM @cyrusk