@tracekit/node-apm 1.1.1 → 1.2.1

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 CHANGED
@@ -96,6 +96,74 @@ export class AppModule {}
96
96
 
97
97
  That's it! Your app is now automatically traced.
98
98
 
99
+ ## Local Development
100
+
101
+ Debug your application locally without creating a cloud account using TraceKit Local UI.
102
+
103
+ ### Quick Start
104
+
105
+ ```bash
106
+ # Install Local UI globally
107
+ npm install -g @tracekit/local-ui
108
+
109
+ # Start it
110
+ tracekit-local
111
+ ```
112
+
113
+ The Local UI will start at `http://localhost:9999` and automatically open in your browser.
114
+
115
+ ### How It Works
116
+
117
+ When running in development mode (`NODE_ENV=development`), the SDK automatically:
118
+
119
+ 1. Detects if Local UI is running at `http://localhost:9999`
120
+ 2. Sends traces to both Local UI and cloud (if API key is present)
121
+ 3. Falls back gracefully if Local UI is not available
122
+
123
+ **No code changes needed!** Just set `NODE_ENV=development`:
124
+
125
+ ```bash
126
+ export NODE_ENV=development
127
+ export TRACEKIT_API_KEY=your-key # Optional - works without it!
128
+ node app.js
129
+ ```
130
+
131
+ You'll see traces appear in real-time at `http://localhost:9999`.
132
+
133
+ ### Features
134
+
135
+ - Real-time trace viewing in your browser
136
+ - Works completely offline
137
+ - No cloud account required
138
+ - Zero configuration
139
+ - Automatic cleanup (1000 traces max, 1 hour retention)
140
+
141
+ ### Local-Only Development
142
+
143
+ To use Local UI without cloud sending:
144
+
145
+ ```bash
146
+ # Don't set TRACEKIT_API_KEY
147
+ export NODE_ENV=development
148
+ node app.js
149
+ ```
150
+
151
+ Traces will only go to Local UI.
152
+
153
+ ### Disabling Local UI
154
+
155
+ To disable automatic Local UI detection:
156
+
157
+ ```bash
158
+ export NODE_ENV=production
159
+ # or don't run Local UI
160
+ ```
161
+
162
+ ### Learn More
163
+
164
+ - GitHub: [https://github.com/Tracekit-Dev/local-debug-ui](https://github.com/Tracekit-Dev/local-debug-ui)
165
+ - npm: [@tracekit/local-ui](https://www.npmjs.com/package/@tracekit/local-ui)
166
+
99
167
  ## Code Monitoring (Live Debugging)
100
168
 
101
169
  TraceKit includes production-safe code monitoring for live debugging without redeployment.
@@ -211,6 +279,12 @@ tracekit.init({
211
279
 
212
280
  // Optional: Enable live code debugging (default: false)
213
281
  enableCodeMonitoring: true, // Enable breakpoints and snapshots
282
+
283
+ // Optional: Map hostnames to service names for service graph
284
+ serviceNameMappings: {
285
+ 'localhost:8082': 'payment-service',
286
+ 'localhost:8083': 'user-service',
287
+ },
214
288
  });
215
289
  ```
216
290
 
@@ -238,11 +312,109 @@ import { TracekitModule } from '@tracekit/node-apm/nestjs';
238
312
  export class AppModule {}
239
313
  ```
240
314
 
315
+ ## Automatic Service Discovery
316
+
317
+ TraceKit automatically instruments **outgoing HTTP calls** to create service dependency graphs. This enables you to see which services talk to each other in your distributed system.
318
+
319
+ ### How It Works
320
+
321
+ When your service makes an HTTP request to another service:
322
+
323
+ 1. ✅ TraceKit creates a **CLIENT span** for the outgoing request
324
+ 2. ✅ Trace context is automatically injected into request headers (`traceparent`)
325
+ 3. ✅ The receiving service creates a **SERVER span** linked to your CLIENT span
326
+ 4. ✅ TraceKit maps the dependency: **YourService → TargetService**
327
+
328
+ ### Supported HTTP Clients
329
+
330
+ TraceKit automatically instruments these HTTP libraries:
331
+
332
+ - ✅ **`http`** / **`https`** (Node.js built-in modules)
333
+ - ✅ **`fetch`** (Node 18+ native fetch API)
334
+ - ✅ **`axios`** (works via http module)
335
+ - ✅ **`node-fetch`** (works via http module)
336
+ - ✅ **`got`**, **`superagent`**, etc. (work via http module)
337
+
338
+ **Zero configuration required!** Just make HTTP calls as normal:
339
+
340
+ ```typescript
341
+ import axios from 'axios';
342
+ import fetch from 'node-fetch';
343
+
344
+ // All of these automatically create CLIENT spans:
345
+ await fetch('http://payment-service/charge');
346
+ await axios.get('http://inventory-service/check');
347
+ http.get('http://user-service/profile/123', callback);
348
+ ```
349
+
350
+ ### Service Name Detection
351
+
352
+ TraceKit intelligently extracts service names from URLs:
353
+
354
+ | URL | Extracted Service Name |
355
+ |-----|------------------------|
356
+ | `http://payment-service:3000` | `payment-service` |
357
+ | `http://payment.internal` | `payment` |
358
+ | `http://payment.svc.cluster.local` | `payment` |
359
+ | `https://api.example.com` | `api.example.com` |
360
+
361
+ This works seamlessly with:
362
+ - Kubernetes service names
363
+ - Internal DNS names
364
+ - Docker Compose service names
365
+ - External APIs
366
+
367
+ ### Custom Service Name Mappings
368
+
369
+ For local development or when service names can't be inferred from hostnames, use `serviceNameMappings`:
370
+
371
+ ```typescript
372
+ tracekit.init({
373
+ apiKey: process.env.TRACEKIT_API_KEY,
374
+ serviceName: 'my-service',
375
+ // Map localhost URLs to actual service names
376
+ serviceNameMappings: {
377
+ 'localhost:8082': 'payment-service',
378
+ 'localhost:8083': 'user-service',
379
+ 'localhost:8084': 'inventory-service',
380
+ 'localhost:5001': 'analytics-service',
381
+ },
382
+ });
383
+
384
+ // Now requests to localhost:8082 will show as "payment-service" in the service graph
385
+ const response = await fetch('http://localhost:8082/charge');
386
+ // -> Creates CLIENT span with peer.service = "payment-service"
387
+ ```
388
+
389
+ This is especially useful when:
390
+ - Running microservices locally on different ports
391
+ - Using Docker Compose with localhost networking
392
+ - Testing distributed tracing in development
393
+
394
+ ### Viewing Service Dependencies
395
+
396
+ Visit your TraceKit dashboard to see:
397
+
398
+ - **Service Map**: Visual graph showing which services call which
399
+ - **Service List**: Table of all services with health metrics
400
+ - **Service Detail**: Deep dive on individual services with upstream/downstream dependencies
401
+
402
+ ### Disabling Auto-Instrumentation
403
+
404
+ If you need to disable automatic HTTP client instrumentation:
405
+
406
+ ```typescript
407
+ tracekit.init({
408
+ apiKey: process.env.TRACEKIT_API_KEY,
409
+ autoInstrumentHttpClient: false, // Disable auto-instrumentation
410
+ });
411
+ ```
412
+
241
413
  ## What Gets Traced?
242
414
 
243
- ### HTTP Requests
415
+ ### Incoming HTTP Requests (SERVER spans)
244
416
 
245
- Every HTTP request is automatically traced with:
417
+ Every HTTP request to your service is automatically traced with:
246
418
 
247
419
  - Route path and HTTP method
248
420
  - Request URL and query parameters
@@ -251,6 +423,15 @@ Every HTTP request is automatically traced with:
251
423
  - User agent and client IP
252
424
  - Controller and handler names (NestJS)
253
425
 
426
+ ### Outgoing HTTP Requests (CLIENT spans)
427
+
428
+ Every HTTP request from your service is automatically traced with:
429
+
430
+ - Target URL and HTTP method
431
+ - HTTP status code
432
+ - Request duration
433
+ - `peer.service` attribute for service dependency mapping
434
+
254
435
  ### Errors and Exceptions
255
436
 
256
437
  All exceptions are automatically captured with:
package/dist/client.d.ts CHANGED
@@ -7,6 +7,8 @@ export interface TracekitConfig {
7
7
  enabled?: boolean;
8
8
  sampleRate?: number;
9
9
  enableCodeMonitoring?: boolean;
10
+ autoInstrumentHttpClient?: boolean;
11
+ serviceNameMappings?: Record<string, string>;
10
12
  }
11
13
  export declare class TracekitClient {
12
14
  private provider;
@@ -15,6 +17,7 @@ export declare class TracekitClient {
15
17
  private snapshotClient?;
16
18
  constructor(config: TracekitConfig);
17
19
  startTrace(operationName: string, attributes?: Record<string, any>): api.Span;
20
+ startServerSpan(operationName: string, attributes?: Record<string, any>): api.Span;
18
21
  startSpan(operationName: string, parentSpan?: api.Span | null, attributes?: Record<string, any>): api.Span;
19
22
  endSpan(span: api.Span, finalAttributes?: Record<string, any>, status?: string): void;
20
23
  addEvent(span: api.Span, name: string, attributes?: Record<string, any>): void;
@@ -27,6 +30,7 @@ export declare class TracekitClient {
27
30
  getTracer(): api.Tracer;
28
31
  getSnapshotClient(): SnapshotClient | undefined;
29
32
  captureSnapshot(label: string, variables?: Record<string, any>): Promise<void>;
33
+ private extractServiceName;
30
34
  private normalizeAttributes;
31
35
  }
32
36
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAiDlC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,GAAG,CAAC,IAAI;IAOjF,SAAS,CACP,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,EAC5B,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACnC,GAAG,CAAC,IAAI;IAcX,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBzF,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,IAAI;IAIlF,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAwBnD,OAAO,CAAC,gBAAgB;IAgClB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,OAAO;IAIvB,SAAS,IAAI,GAAG,CAAC,MAAM;IAKvB,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAKzC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF,OAAO,CAAC,mBAAmB;CAiB5B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAI1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA2OnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAMnC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAmFlC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,GAAG,CAAC,IAAI;IAWjF,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,GAAG,CAAC,IAAI;IAWtF,SAAS,CACP,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,EAC5B,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACnC,GAAG,CAAC,IAAI;IAcX,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBzF,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,IAAI;IAIlF,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAwBnD,OAAO,CAAC,gBAAgB;IAgClB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,OAAO;IAIvB,SAAS,IAAI,GAAG,CAAC,MAAM;IAKvB,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAKzC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxF,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,mBAAmB;CAiB5B"}
package/dist/client.js CHANGED
@@ -40,7 +40,190 @@ const resources_1 = require("@opentelemetry/resources");
40
40
  const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
41
41
  const sdk_trace_node_2 = require("@opentelemetry/sdk-trace-node");
42
42
  const api = __importStar(require("@opentelemetry/api"));
43
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
44
+ const instrumentation_http_1 = require("@opentelemetry/instrumentation-http");
45
+ const instrumentation_fetch_1 = require("@opentelemetry/instrumentation-fetch");
43
46
  const snapshot_client_1 = require("./snapshot-client");
47
+ const http = __importStar(require("http"));
48
+ class LocalUISpanProcessor {
49
+ constructor() {
50
+ this.localUIAvailable = false;
51
+ this.checkedHealth = false;
52
+ this.batchedSpans = [];
53
+ this.batchTimer = null;
54
+ this.LOCAL_UI_URL = 'http://localhost:9999';
55
+ this.BATCH_TIMEOUT_MS = 1000;
56
+ this.MAX_BATCH_SIZE = 100;
57
+ }
58
+ async detectLocalUI() {
59
+ if (this.checkedHealth) {
60
+ return this.localUIAvailable;
61
+ }
62
+ return new Promise((resolve) => {
63
+ const req = http.request(`${this.LOCAL_UI_URL}/api/health`, {
64
+ method: 'GET',
65
+ timeout: 500,
66
+ }, (res) => {
67
+ this.localUIAvailable = res.statusCode === 200;
68
+ this.checkedHealth = true;
69
+ if (this.localUIAvailable) {
70
+ console.log('🔍 Local UI detected at http://localhost:9999');
71
+ }
72
+ resolve(this.localUIAvailable);
73
+ });
74
+ req.on('error', () => {
75
+ this.localUIAvailable = false;
76
+ this.checkedHealth = true;
77
+ resolve(false);
78
+ });
79
+ req.on('timeout', () => {
80
+ req.destroy();
81
+ this.localUIAvailable = false;
82
+ this.checkedHealth = true;
83
+ resolve(false);
84
+ });
85
+ req.end();
86
+ });
87
+ }
88
+ onStart(span) {
89
+ }
90
+ onEnd(span) {
91
+ if (process.env.NODE_ENV !== 'development') {
92
+ return;
93
+ }
94
+ this.batchedSpans.push(span);
95
+ if (this.batchedSpans.length >= this.MAX_BATCH_SIZE) {
96
+ this.flushBatch();
97
+ }
98
+ else if (!this.batchTimer) {
99
+ this.batchTimer = setTimeout(() => {
100
+ this.flushBatch();
101
+ }, this.BATCH_TIMEOUT_MS);
102
+ }
103
+ }
104
+ async flushBatch() {
105
+ if (this.batchTimer) {
106
+ clearTimeout(this.batchTimer);
107
+ this.batchTimer = null;
108
+ }
109
+ if (this.batchedSpans.length === 0) {
110
+ return;
111
+ }
112
+ const isAvailable = await this.detectLocalUI();
113
+ if (!isAvailable) {
114
+ this.batchedSpans = [];
115
+ return;
116
+ }
117
+ const resourceSpans = this.convertSpansToOTLP(this.batchedSpans);
118
+ const payload = JSON.stringify(resourceSpans);
119
+ this.batchedSpans = [];
120
+ this.sendToLocalUI(payload);
121
+ }
122
+ sendToLocalUI(payload) {
123
+ const req = http.request(`${this.LOCAL_UI_URL}/v1/traces`, {
124
+ method: 'POST',
125
+ headers: {
126
+ 'Content-Type': 'application/json',
127
+ 'Content-Length': Buffer.byteLength(payload),
128
+ },
129
+ timeout: 1000,
130
+ }, (res) => {
131
+ res.resume();
132
+ });
133
+ req.on('error', () => {
134
+ });
135
+ req.on('timeout', () => {
136
+ req.destroy();
137
+ });
138
+ req.write(payload);
139
+ req.end();
140
+ }
141
+ convertSpansToOTLP(spans) {
142
+ const resourceSpansMap = new Map();
143
+ for (const span of spans) {
144
+ const resourceKey = JSON.stringify(span.resource.attributes);
145
+ if (!resourceSpansMap.has(resourceKey)) {
146
+ resourceSpansMap.set(resourceKey, {
147
+ resource: {
148
+ attributes: this.convertAttributes(span.resource.attributes),
149
+ },
150
+ scopeSpans: [],
151
+ });
152
+ }
153
+ const resourceSpans = resourceSpansMap.get(resourceKey);
154
+ let scopeSpan = resourceSpans.scopeSpans.find((ss) => ss.scope?.name === span.instrumentationLibrary.name);
155
+ if (!scopeSpan) {
156
+ scopeSpan = {
157
+ scope: {
158
+ name: span.instrumentationLibrary.name,
159
+ version: span.instrumentationLibrary.version,
160
+ },
161
+ spans: [],
162
+ };
163
+ resourceSpans.scopeSpans.push(scopeSpan);
164
+ }
165
+ scopeSpan.spans.push(this.convertSpan(span));
166
+ }
167
+ return {
168
+ resourceSpans: Array.from(resourceSpansMap.values()),
169
+ };
170
+ }
171
+ convertSpan(span) {
172
+ return {
173
+ traceId: span.spanContext().traceId,
174
+ spanId: span.spanContext().spanId,
175
+ parentSpanId: span.parentSpanId,
176
+ name: span.name,
177
+ kind: span.kind,
178
+ startTimeUnixNano: String(span.startTime[0] * 1e9 + span.startTime[1]),
179
+ endTimeUnixNano: String(span.endTime[0] * 1e9 + span.endTime[1]),
180
+ attributes: this.convertAttributes(span.attributes),
181
+ events: span.events.map((event) => ({
182
+ timeUnixNano: String(event.time[0] * 1e9 + event.time[1]),
183
+ name: event.name,
184
+ attributes: this.convertAttributes(event.attributes || {}),
185
+ })),
186
+ status: {
187
+ code: span.status.code,
188
+ message: span.status.message,
189
+ },
190
+ };
191
+ }
192
+ convertAttributes(attributes) {
193
+ return Object.entries(attributes).map(([key, value]) => ({
194
+ key,
195
+ value: this.convertValue(value),
196
+ }));
197
+ }
198
+ convertValue(value) {
199
+ if (typeof value === 'string') {
200
+ return { stringValue: value };
201
+ }
202
+ else if (typeof value === 'number') {
203
+ if (Number.isInteger(value)) {
204
+ return { intValue: String(value) };
205
+ }
206
+ return { doubleValue: value };
207
+ }
208
+ else if (typeof value === 'boolean') {
209
+ return { boolValue: value };
210
+ }
211
+ else if (Array.isArray(value)) {
212
+ return {
213
+ arrayValue: {
214
+ values: value.map((v) => this.convertValue(v)),
215
+ },
216
+ };
217
+ }
218
+ return { stringValue: String(value) };
219
+ }
220
+ async forceFlush() {
221
+ await this.flushBatch();
222
+ }
223
+ async shutdown() {
224
+ await this.flushBatch();
225
+ }
226
+ }
44
227
  class TracekitClient {
45
228
  constructor(config) {
46
229
  this.config = {
@@ -49,7 +232,9 @@ class TracekitClient {
49
232
  enabled: config.enabled ?? true,
50
233
  sampleRate: config.sampleRate ?? 1.0,
51
234
  enableCodeMonitoring: config.enableCodeMonitoring ?? false,
235
+ autoInstrumentHttpClient: config.autoInstrumentHttpClient ?? true,
52
236
  apiKey: config.apiKey,
237
+ serviceNameMappings: config.serviceNameMappings ?? {},
53
238
  };
54
239
  const resource = new resources_1.Resource({
55
240
  [semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: this.config.serviceName,
@@ -65,7 +250,31 @@ class TracekitClient {
65
250
  },
66
251
  });
67
252
  this.provider.addSpanProcessor(new sdk_trace_node_2.BatchSpanProcessor(exporter));
253
+ if (process.env.NODE_ENV === 'development') {
254
+ this.provider.addSpanProcessor(new LocalUISpanProcessor());
255
+ }
68
256
  this.provider.register();
257
+ if (this.config.autoInstrumentHttpClient) {
258
+ (0, instrumentation_1.registerInstrumentations)({
259
+ tracerProvider: this.provider,
260
+ instrumentations: [
261
+ new instrumentation_http_1.HttpInstrumentation({
262
+ requireParentforOutgoingSpans: true,
263
+ requireParentforIncomingSpans: false,
264
+ requestHook: (span, request) => {
265
+ if ('hostname' in request || 'host' in request) {
266
+ const hostname = request.hostname || request.host;
267
+ if (hostname) {
268
+ const serviceName = this.extractServiceName(hostname);
269
+ span.setAttribute('peer.service', serviceName);
270
+ }
271
+ }
272
+ },
273
+ }),
274
+ new instrumentation_fetch_1.FetchInstrumentation({}),
275
+ ],
276
+ });
277
+ }
69
278
  }
70
279
  this.tracer = api.trace.getTracer('@tracekit/node-apm', '1.0.0');
71
280
  if (this.config.enableCodeMonitoring) {
@@ -79,6 +288,12 @@ class TracekitClient {
79
288
  attributes: this.normalizeAttributes(attributes),
80
289
  });
81
290
  }
291
+ startServerSpan(operationName, attributes = {}) {
292
+ return this.tracer.startSpan(operationName, {
293
+ kind: api.SpanKind.SERVER,
294
+ attributes: this.normalizeAttributes(attributes),
295
+ }, api.context.active());
296
+ }
82
297
  startSpan(operationName, parentSpan, attributes = {}) {
83
298
  const options = {
84
299
  kind: api.SpanKind.INTERNAL,
@@ -170,6 +385,22 @@ class TracekitClient {
170
385
  await this.snapshotClient.checkAndCaptureWithContext(label, variables);
171
386
  }
172
387
  }
388
+ extractServiceName(hostname) {
389
+ if (this.config.serviceNameMappings[hostname]) {
390
+ return this.config.serviceNameMappings[hostname];
391
+ }
392
+ const hostWithoutPort = hostname.split(':')[0];
393
+ if (this.config.serviceNameMappings[hostWithoutPort]) {
394
+ return this.config.serviceNameMappings[hostWithoutPort];
395
+ }
396
+ if (hostname.includes('.svc.cluster.local')) {
397
+ return hostname.split('.')[0];
398
+ }
399
+ if (hostname.includes('.internal')) {
400
+ return hostname.split('.')[0];
401
+ }
402
+ return hostWithoutPort;
403
+ }
173
404
  normalizeAttributes(attributes) {
174
405
  const normalized = {};
175
406
  for (const [key, value] of Object.entries(attributes)) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAK1C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,cAAc,IAC/E,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAsE9D;AAGD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAE5D;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAEnE"}
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAS1C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,cAAc,IAC/E,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mBAwF9D;AAGD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAE5D;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAEnE"}
@@ -1,10 +1,46 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.createExpressMiddleware = createExpressMiddleware;
4
37
  exports.getCurrentSpan = getCurrentSpan;
5
38
  exports.getRequestContext = getRequestContext;
6
39
  const async_hooks_1 = require("async_hooks");
40
+ const api = __importStar(require("@opentelemetry/api"));
41
+ const core_1 = require("@opentelemetry/core");
7
42
  const requestContextStorage = new async_hooks_1.AsyncLocalStorage();
43
+ const propagator = new core_1.W3CTraceContextPropagator();
8
44
  function createExpressMiddleware(client, snapshotClient) {
9
45
  return async (req, res, next) => {
10
46
  if (!client.isEnabled() || !client.shouldSample()) {
@@ -12,12 +48,22 @@ function createExpressMiddleware(client, snapshotClient) {
12
48
  }
13
49
  const startTime = Date.now();
14
50
  const operationName = getOperationName(req);
15
- const span = client.startTrace(operationName, {
16
- 'http.method': req.method,
17
- 'http.url': req.originalUrl || req.url,
18
- 'http.route': req.route?.path || req.path,
19
- 'http.user_agent': req.get('user-agent') || '',
20
- 'http.client_ip': getClientIp(req),
51
+ const parentContext = propagator.extract(api.context.active(), req.headers, {
52
+ get(carrier, key) {
53
+ return carrier[key.toLowerCase()];
54
+ },
55
+ keys(carrier) {
56
+ return Object.keys(carrier);
57
+ },
58
+ });
59
+ const span = api.context.with(parentContext, () => {
60
+ return client.startServerSpan(operationName, {
61
+ 'http.method': req.method,
62
+ 'http.url': req.originalUrl || req.url,
63
+ 'http.route': req.route?.path || req.path,
64
+ 'http.user_agent': req.get('user-agent') || '',
65
+ 'http.client_ip': getClientIp(req),
66
+ });
21
67
  });
22
68
  req.__tracekitSpan = span;
23
69
  const requestContext = {
@@ -1 +1 @@
1
- {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracekit/node-apm",
3
- "version": "1.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "TraceKit APM for Node.js - Zero-config distributed tracing and code monitoring for Express and NestJS",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,15 +38,18 @@
38
38
  "homepage": "https://tracekit.dev",
39
39
  "dependencies": {
40
40
  "@opentelemetry/api": "^1.7.0",
41
- "@opentelemetry/sdk-trace-node": "^1.19.0",
42
41
  "@opentelemetry/exporter-trace-otlp-http": "^0.46.0",
42
+ "@opentelemetry/instrumentation": "^0.56.0",
43
+ "@opentelemetry/instrumentation-fetch": "^0.56.0",
44
+ "@opentelemetry/instrumentation-http": "^0.56.0",
43
45
  "@opentelemetry/resources": "^1.19.0",
46
+ "@opentelemetry/sdk-trace-node": "^1.19.0",
44
47
  "@opentelemetry/semantic-conventions": "^1.19.0"
45
48
  },
46
49
  "peerDependencies": {
47
- "express": "^4.18.0 || ^5.0.0",
48
50
  "@nestjs/common": "^10.0.0",
49
- "@nestjs/core": "^10.0.0"
51
+ "@nestjs/core": "^10.0.0",
52
+ "express": "^4.18.0 || ^5.0.0"
50
53
  },
51
54
  "peerDependenciesMeta": {
52
55
  "express": {
@@ -60,12 +63,12 @@
60
63
  }
61
64
  },
62
65
  "devDependencies": {
63
- "@types/express": "^4.17.21",
64
- "@types/node": "^20.10.0",
65
66
  "@nestjs/common": "^10.0.0",
66
67
  "@nestjs/core": "^10.0.0",
67
- "typescript": "^5.3.0",
68
- "express": "^4.18.0"
68
+ "@types/express": "^4.17.21",
69
+ "@types/node": "^20.10.0",
70
+ "express": "^4.18.0",
71
+ "typescript": "^5.3.0"
69
72
  },
70
73
  "engines": {
71
74
  "node": ">=16.0.0"