@lokalise/opentelemetry-fastify-bootstrap 2.0.1 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +12 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -55,6 +55,7 @@ initOpenTelemetry()
|
|
|
55
55
|
|--------|------|---------|-------------|
|
|
56
56
|
| `skippedPaths` | `string[]` | `['/health', '/metrics', '/']` | Paths to exclude from tracing |
|
|
57
57
|
| `consoleSpans` | `boolean` | `false` | Enable console span exporter for debugging |
|
|
58
|
+
| `spanProcessors` | `SpanProcessor[]` | `[]` | Additional span processors to register |
|
|
58
59
|
|
|
59
60
|
### Debugging with Console Spans
|
|
60
61
|
|
|
@@ -69,6 +70,24 @@ initOpenTelemetry({
|
|
|
69
70
|
|
|
70
71
|
When enabled, spans are printed to the console in addition to being sent to the OTLP exporter. This is useful for verifying that instrumentation is working correctly without needing to run a full observability stack.
|
|
71
72
|
|
|
73
|
+
### Adding Custom Span Processors
|
|
74
|
+
|
|
75
|
+
You can integrate additional span processors to send telemetry data to multiple destinations or add custom processing logic.
|
|
76
|
+
|
|
77
|
+
Multiple span processors work alongside the OTLP exporter and optional console span exporter:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { MyCustomSpanProcessor } from './custom-processor'
|
|
81
|
+
|
|
82
|
+
const { initOpenTelemetry } = await import('@lokalise/opentelemetry-fastify-bootstrap')
|
|
83
|
+
initOpenTelemetry({
|
|
84
|
+
consoleSpans: true, // Enable console debugging
|
|
85
|
+
spanProcessors: [
|
|
86
|
+
new MyCustomSpanProcessor({ /* config */ }),
|
|
87
|
+
],
|
|
88
|
+
})
|
|
89
|
+
```
|
|
90
|
+
|
|
72
91
|
## Features
|
|
73
92
|
|
|
74
93
|
- Automatic instrumentation for Node.js applications via `@opentelemetry/auto-instrumentations-node`
|
|
@@ -76,6 +95,7 @@ When enabled, spans are printed to the console in addition to being sent to the
|
|
|
76
95
|
- OTLP gRPC trace exporter
|
|
77
96
|
- Configurable path filtering
|
|
78
97
|
- Optional console span exporter for debugging
|
|
98
|
+
- Support for custom span processors
|
|
79
99
|
- Graceful shutdown support
|
|
80
100
|
|
|
81
101
|
## Graceful Shutdown
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
1
2
|
export interface OpenTelemetryOptions {
|
|
2
3
|
/**
|
|
3
4
|
* Paths to exclude from tracing.
|
|
@@ -10,6 +11,10 @@ export interface OpenTelemetryOptions {
|
|
|
10
11
|
* @default false
|
|
11
12
|
*/
|
|
12
13
|
consoleSpans?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Additional span processors to register with the OpenTelemetry SDK.
|
|
16
|
+
*/
|
|
17
|
+
spanProcessors?: SpanProcessor[];
|
|
13
18
|
}
|
|
14
19
|
/**
|
|
15
20
|
* Initialize OpenTelemetry instrumentation.
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { FastifyOtelInstrumentation } from '@fastify/otel';
|
|
|
2
2
|
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
|
3
3
|
import { OTLPTraceExporter as OTLPTraceExporterGrpc } from '@opentelemetry/exporter-trace-otlp-grpc';
|
|
4
4
|
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
5
|
-
import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
5
|
+
import { ConsoleSpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base';
|
|
6
6
|
function createLogEntry(level, msg, data) {
|
|
7
7
|
return {
|
|
8
8
|
level,
|
|
@@ -59,7 +59,7 @@ let sdk;
|
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
61
|
export function initOpenTelemetry(options = {}) {
|
|
62
|
-
const { skippedPaths = DEFAULT_SKIPPED_PATHS, consoleSpans = false } = options;
|
|
62
|
+
const { skippedPaths = DEFAULT_SKIPPED_PATHS, consoleSpans = false, spanProcessors = [], } = options;
|
|
63
63
|
logger.info('[OTEL] initOpenTelemetry called');
|
|
64
64
|
const isOpenTelemetryEnabled = process.env.NODE_ENV !== 'test' && process.env.OTEL_ENABLED?.toLowerCase() === 'true';
|
|
65
65
|
logger.info({
|
|
@@ -68,6 +68,7 @@ export function initOpenTelemetry(options = {}) {
|
|
|
68
68
|
isOpenTelemetryEnabled,
|
|
69
69
|
skippedPaths,
|
|
70
70
|
consoleSpans,
|
|
71
|
+
additionalSpanProcessorsCount: spanProcessors.length,
|
|
71
72
|
}, '[OTEL] Configuration');
|
|
72
73
|
if (isOpenTelemetryEnabled && !isInstrumentationRegistered) {
|
|
73
74
|
logger.info('[OTEL] Initializing OpenTelemetry SDK...');
|
|
@@ -79,13 +80,15 @@ export function initOpenTelemetry(options = {}) {
|
|
|
79
80
|
// or grpc://localhost:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export (grpc)
|
|
80
81
|
url: exporterUrl,
|
|
81
82
|
});
|
|
83
|
+
// Collect all span processors
|
|
84
|
+
const allSpanProcessors = [...spanProcessors];
|
|
85
|
+
if (consoleSpans) {
|
|
86
|
+
allSpanProcessors.push(new SimpleSpanProcessor(new ConsoleSpanExporter()));
|
|
87
|
+
}
|
|
82
88
|
// Setup SDK
|
|
83
89
|
sdk = new NodeSDK({
|
|
84
90
|
traceExporter,
|
|
85
|
-
|
|
86
|
-
spanProcessors: consoleSpans
|
|
87
|
-
? [new SimpleSpanProcessor(new ConsoleSpanExporter())]
|
|
88
|
-
: undefined,
|
|
91
|
+
spanProcessors: allSpanProcessors.length > 0 ? allSpanProcessors : undefined,
|
|
89
92
|
instrumentations: [
|
|
90
93
|
getNodeAutoInstrumentations({
|
|
91
94
|
'@opentelemetry/instrumentation-fastify': {
|
|
@@ -109,6 +112,9 @@ export function initOpenTelemetry(options = {}) {
|
|
|
109
112
|
if (consoleSpans) {
|
|
110
113
|
logger.info('[OTEL] Console span exporter enabled for debugging');
|
|
111
114
|
}
|
|
115
|
+
if (spanProcessors.length > 0) {
|
|
116
|
+
logger.info({ count: spanProcessors.length }, '[OTEL] Additional span processors registered');
|
|
117
|
+
}
|
|
112
118
|
logger.info('[OTEL] SDK started successfully - ready to send traces');
|
|
113
119
|
}
|
|
114
120
|
else {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAA;AACvF,OAAO,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|