JSPM

@rdcp.dev/otel-plugin

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q39580F
  • License Apache-2.0

OpenTelemetry integration plugin for RDCP SDK - Enterprise-grade trace correlation

Package Exports

  • @rdcp.dev/otel-plugin

Readme

@rdcp.dev/otel-plugin

OpenTelemetry integration plugin for RDCP SDK - Enterprise-grade trace correlation

npm version License: Apache-2.0

🎯 Overview

The @rdcp.dev/otel-plugin provides seamless integration between the RDCP SDK and OpenTelemetry, enabling automatic trace correlation in debug logs. This enterprise-grade plugin allows you to correlate debug output with distributed traces across your entire system.

Key Benefits

  • πŸ“Š Automatic Trace Correlation: Debug logs automatically include trace IDs and span IDs
  • πŸ”§ Zero Configuration: Works out-of-the-box with existing OpenTelemetry setup
  • πŸš€ Performance Optimized: Zero impact when OpenTelemetry is not available
  • 🏒 Enterprise Ready: Production-grade error handling and fallbacks
  • πŸ“¦ Optional Dependency: Core RDCP SDK works independently

πŸš€ Quick Start

Installation

npm install @rdcp.dev/otel-plugin @opentelemetry/api

Basic Usage

import { debug, enableDebugCategories } from '@rdcp.dev/server'
import { setupRDCPWithOpenTelemetry } from '@rdcp.dev/otel-plugin'

// Enable OpenTelemetry integration
setupRDCPWithOpenTelemetry()

// Enable debug categories
enableDebugCategories(['DATABASE', 'API_ROUTES'])

// Debug logs now include trace correlation automatically
debug.database('Query executed', { sql: 'SELECT * FROM users' })
// Output: πŸ”Œ [DB] [trace:90abcdef] Query executed [{ sql: 'SELECT * FROM users' }]

debug.api('Request processed', { method: 'GET', path: '/users/123' })
// Output: πŸ” [API] [trace:90abcdef] Request processed [{ method: 'GET', path: '/users/123' }]

πŸ“– Documentation

Setup Functions

setupRDCPWithOpenTelemetry(config?)

Enables OpenTelemetry integration with optional configuration.

import { setupRDCPWithOpenTelemetry } from '@rdcp.dev/otel-plugin'

// Basic setup
setupRDCPWithOpenTelemetry()

// With configuration
setupRDCPWithOpenTelemetry({
  enableTraceCorrelation: true,
  enableBaggage: true
})

Configuration Options:

Option Type Default Description
enableTraceCorrelation boolean true Enable automatic trace correlation
enableBaggage boolean true Extract baggage from OpenTelemetry context
customProvider TraceProvider undefined Use custom trace provider implementation

disableRDCPOpenTelemetry()

Disables OpenTelemetry integration.

import { disableRDCPOpenTelemetry } from '@rdcp.dev/otel-plugin'

disableRDCPOpenTelemetry()

isRDCPOpenTelemetryActive()

Checks if OpenTelemetry integration is currently active.

import { isRDCPOpenTelemetryActive } from '@rdcp.dev/otel-plugin'

if (isRDCPOpenTelemetryActive()) {
  console.log('OpenTelemetry integration is active')
}

Advanced Usage

Custom Provider

For advanced use cases, you can create your own trace provider:

import { createOpenTelemetryProvider, setupRDCPWithOpenTelemetry } from '@rdcp.dev/otel-plugin'
import type { TraceProvider } from '@rdcp.dev/otel-plugin'

// Create provider instance
const provider = createOpenTelemetryProvider()

// Custom setup logic...
if (provider.isConfigured()) {
  setupRDCPWithOpenTelemetry({ customProvider: provider })
}

With @opentelemetry/sdk-node:

import { NodeSDK } from '@opentelemetry/sdk-node'
import { setupRDCPWithOpenTelemetry } from '@rdcp.dev/otel-plugin'

// Initialize OpenTelemetry first
const sdk = new NodeSDK({
  // your OpenTelemetry configuration
})
sdk.start()

// Then enable RDCP integration
setupRDCPWithOpenTelemetry()

With Custom Tracer Provider:

import { trace } from '@opentelemetry/api'
import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'
import { setupRDCPWithOpenTelemetry } from '@rdcp.dev/otel-plugin'

// Initialize OpenTelemetry
const provider = new BasicTracerProvider()
trace.setGlobalTracerProvider(provider)

// Enable RDCP integration
setupRDCPWithOpenTelemetry()

πŸ—οΈ Architecture

This plugin implements the TraceProvider interface from @rdcp.dev/server, providing a clean abstraction between RDCP and OpenTelemetry:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Your App     β”‚    β”‚   @rdcp.dev/server   β”‚    β”‚ @rdcp.dev/otel-plugin   β”‚
β”‚                β”‚    β”‚                  β”‚    β”‚                     β”‚
β”‚ debug.api(...)─┼────►│ TraceProvider ───┼────►│ OpenTelemetryProviderβ”‚
β”‚                β”‚    β”‚ Interface        β”‚    β”‚                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                            β”‚
                                                            β–Ό
                                                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                                β”‚ OpenTelemetry API   β”‚
                                                β”‚ trace.getActiveSpan β”‚
                                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ§ͺ Testing

# Run tests
npm test

# Run with coverage
npm run test:coverage

# Watch mode
npm run test:watch

πŸ”§ Development

# Install dependencies
npm install

# Build
npm run build

# Type check
npm run type-check

# Lint
npm run lint

πŸ“¦ Compatibility

  • Node.js: >= 16.0.0
  • OpenTelemetry API: >= 1.0.0 < 2.0.0
  • RDCP Server: ^1.0.0

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide for details.

πŸ“„ License

MIT - see LICENSE for details.