@tracekit/node-apm 1.1.1 → 1.2.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 +115 -2
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +48 -0
- package/dist/client.js.map +1 -1
- package/dist/middleware/express.d.ts.map +1 -1
- package/dist/middleware/express.js +52 -6
- package/dist/middleware/express.js.map +1 -1
- package/package.json +11 -8
package/README.md
CHANGED
|
@@ -211,6 +211,12 @@ tracekit.init({
|
|
|
211
211
|
|
|
212
212
|
// Optional: Enable live code debugging (default: false)
|
|
213
213
|
enableCodeMonitoring: true, // Enable breakpoints and snapshots
|
|
214
|
+
|
|
215
|
+
// Optional: Map hostnames to service names for service graph
|
|
216
|
+
serviceNameMappings: {
|
|
217
|
+
'localhost:8082': 'payment-service',
|
|
218
|
+
'localhost:8083': 'user-service',
|
|
219
|
+
},
|
|
214
220
|
});
|
|
215
221
|
```
|
|
216
222
|
|
|
@@ -238,11 +244,109 @@ import { TracekitModule } from '@tracekit/node-apm/nestjs';
|
|
|
238
244
|
export class AppModule {}
|
|
239
245
|
```
|
|
240
246
|
|
|
247
|
+
## Automatic Service Discovery
|
|
248
|
+
|
|
249
|
+
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.
|
|
250
|
+
|
|
251
|
+
### How It Works
|
|
252
|
+
|
|
253
|
+
When your service makes an HTTP request to another service:
|
|
254
|
+
|
|
255
|
+
1. ✅ TraceKit creates a **CLIENT span** for the outgoing request
|
|
256
|
+
2. ✅ Trace context is automatically injected into request headers (`traceparent`)
|
|
257
|
+
3. ✅ The receiving service creates a **SERVER span** linked to your CLIENT span
|
|
258
|
+
4. ✅ TraceKit maps the dependency: **YourService → TargetService**
|
|
259
|
+
|
|
260
|
+
### Supported HTTP Clients
|
|
261
|
+
|
|
262
|
+
TraceKit automatically instruments these HTTP libraries:
|
|
263
|
+
|
|
264
|
+
- ✅ **`http`** / **`https`** (Node.js built-in modules)
|
|
265
|
+
- ✅ **`fetch`** (Node 18+ native fetch API)
|
|
266
|
+
- ✅ **`axios`** (works via http module)
|
|
267
|
+
- ✅ **`node-fetch`** (works via http module)
|
|
268
|
+
- ✅ **`got`**, **`superagent`**, etc. (work via http module)
|
|
269
|
+
|
|
270
|
+
**Zero configuration required!** Just make HTTP calls as normal:
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
import axios from 'axios';
|
|
274
|
+
import fetch from 'node-fetch';
|
|
275
|
+
|
|
276
|
+
// All of these automatically create CLIENT spans:
|
|
277
|
+
await fetch('http://payment-service/charge');
|
|
278
|
+
await axios.get('http://inventory-service/check');
|
|
279
|
+
http.get('http://user-service/profile/123', callback);
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Service Name Detection
|
|
283
|
+
|
|
284
|
+
TraceKit intelligently extracts service names from URLs:
|
|
285
|
+
|
|
286
|
+
| URL | Extracted Service Name |
|
|
287
|
+
|-----|------------------------|
|
|
288
|
+
| `http://payment-service:3000` | `payment-service` |
|
|
289
|
+
| `http://payment.internal` | `payment` |
|
|
290
|
+
| `http://payment.svc.cluster.local` | `payment` |
|
|
291
|
+
| `https://api.example.com` | `api.example.com` |
|
|
292
|
+
|
|
293
|
+
This works seamlessly with:
|
|
294
|
+
- Kubernetes service names
|
|
295
|
+
- Internal DNS names
|
|
296
|
+
- Docker Compose service names
|
|
297
|
+
- External APIs
|
|
298
|
+
|
|
299
|
+
### Custom Service Name Mappings
|
|
300
|
+
|
|
301
|
+
For local development or when service names can't be inferred from hostnames, use `serviceNameMappings`:
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
tracekit.init({
|
|
305
|
+
apiKey: process.env.TRACEKIT_API_KEY,
|
|
306
|
+
serviceName: 'my-service',
|
|
307
|
+
// Map localhost URLs to actual service names
|
|
308
|
+
serviceNameMappings: {
|
|
309
|
+
'localhost:8082': 'payment-service',
|
|
310
|
+
'localhost:8083': 'user-service',
|
|
311
|
+
'localhost:8084': 'inventory-service',
|
|
312
|
+
'localhost:5001': 'analytics-service',
|
|
313
|
+
},
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
// Now requests to localhost:8082 will show as "payment-service" in the service graph
|
|
317
|
+
const response = await fetch('http://localhost:8082/charge');
|
|
318
|
+
// -> Creates CLIENT span with peer.service = "payment-service"
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
This is especially useful when:
|
|
322
|
+
- Running microservices locally on different ports
|
|
323
|
+
- Using Docker Compose with localhost networking
|
|
324
|
+
- Testing distributed tracing in development
|
|
325
|
+
|
|
326
|
+
### Viewing Service Dependencies
|
|
327
|
+
|
|
328
|
+
Visit your TraceKit dashboard to see:
|
|
329
|
+
|
|
330
|
+
- **Service Map**: Visual graph showing which services call which
|
|
331
|
+
- **Service List**: Table of all services with health metrics
|
|
332
|
+
- **Service Detail**: Deep dive on individual services with upstream/downstream dependencies
|
|
333
|
+
|
|
334
|
+
### Disabling Auto-Instrumentation
|
|
335
|
+
|
|
336
|
+
If you need to disable automatic HTTP client instrumentation:
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
tracekit.init({
|
|
340
|
+
apiKey: process.env.TRACEKIT_API_KEY,
|
|
341
|
+
autoInstrumentHttpClient: false, // Disable auto-instrumentation
|
|
342
|
+
});
|
|
343
|
+
```
|
|
344
|
+
|
|
241
345
|
## What Gets Traced?
|
|
242
346
|
|
|
243
|
-
### HTTP Requests
|
|
347
|
+
### Incoming HTTP Requests (SERVER spans)
|
|
244
348
|
|
|
245
|
-
Every HTTP request is automatically traced with:
|
|
349
|
+
Every HTTP request to your service is automatically traced with:
|
|
246
350
|
|
|
247
351
|
- Route path and HTTP method
|
|
248
352
|
- Request URL and query parameters
|
|
@@ -251,6 +355,15 @@ Every HTTP request is automatically traced with:
|
|
|
251
355
|
- User agent and client IP
|
|
252
356
|
- Controller and handler names (NestJS)
|
|
253
357
|
|
|
358
|
+
### Outgoing HTTP Requests (CLIENT spans)
|
|
359
|
+
|
|
360
|
+
Every HTTP request from your service is automatically traced with:
|
|
361
|
+
|
|
362
|
+
- Target URL and HTTP method
|
|
363
|
+
- HTTP status code
|
|
364
|
+
- Request duration
|
|
365
|
+
- `peer.service` attribute for service dependency mapping
|
|
366
|
+
|
|
254
367
|
### Errors and Exceptions
|
|
255
368
|
|
|
256
369
|
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
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAI1C,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;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;IA8ElC,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,6 +40,9 @@ 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");
|
|
44
47
|
class TracekitClient {
|
|
45
48
|
constructor(config) {
|
|
@@ -49,7 +52,9 @@ class TracekitClient {
|
|
|
49
52
|
enabled: config.enabled ?? true,
|
|
50
53
|
sampleRate: config.sampleRate ?? 1.0,
|
|
51
54
|
enableCodeMonitoring: config.enableCodeMonitoring ?? false,
|
|
55
|
+
autoInstrumentHttpClient: config.autoInstrumentHttpClient ?? true,
|
|
52
56
|
apiKey: config.apiKey,
|
|
57
|
+
serviceNameMappings: config.serviceNameMappings ?? {},
|
|
53
58
|
};
|
|
54
59
|
const resource = new resources_1.Resource({
|
|
55
60
|
[semantic_conventions_1.SemanticResourceAttributes.SERVICE_NAME]: this.config.serviceName,
|
|
@@ -66,6 +71,27 @@ class TracekitClient {
|
|
|
66
71
|
});
|
|
67
72
|
this.provider.addSpanProcessor(new sdk_trace_node_2.BatchSpanProcessor(exporter));
|
|
68
73
|
this.provider.register();
|
|
74
|
+
if (this.config.autoInstrumentHttpClient) {
|
|
75
|
+
(0, instrumentation_1.registerInstrumentations)({
|
|
76
|
+
tracerProvider: this.provider,
|
|
77
|
+
instrumentations: [
|
|
78
|
+
new instrumentation_http_1.HttpInstrumentation({
|
|
79
|
+
requireParentforOutgoingSpans: true,
|
|
80
|
+
requireParentforIncomingSpans: false,
|
|
81
|
+
requestHook: (span, request) => {
|
|
82
|
+
if ('hostname' in request || 'host' in request) {
|
|
83
|
+
const hostname = request.hostname || request.host;
|
|
84
|
+
if (hostname) {
|
|
85
|
+
const serviceName = this.extractServiceName(hostname);
|
|
86
|
+
span.setAttribute('peer.service', serviceName);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
}),
|
|
91
|
+
new instrumentation_fetch_1.FetchInstrumentation({}),
|
|
92
|
+
],
|
|
93
|
+
});
|
|
94
|
+
}
|
|
69
95
|
}
|
|
70
96
|
this.tracer = api.trace.getTracer('@tracekit/node-apm', '1.0.0');
|
|
71
97
|
if (this.config.enableCodeMonitoring) {
|
|
@@ -79,6 +105,12 @@ class TracekitClient {
|
|
|
79
105
|
attributes: this.normalizeAttributes(attributes),
|
|
80
106
|
});
|
|
81
107
|
}
|
|
108
|
+
startServerSpan(operationName, attributes = {}) {
|
|
109
|
+
return this.tracer.startSpan(operationName, {
|
|
110
|
+
kind: api.SpanKind.SERVER,
|
|
111
|
+
attributes: this.normalizeAttributes(attributes),
|
|
112
|
+
}, api.context.active());
|
|
113
|
+
}
|
|
82
114
|
startSpan(operationName, parentSpan, attributes = {}) {
|
|
83
115
|
const options = {
|
|
84
116
|
kind: api.SpanKind.INTERNAL,
|
|
@@ -170,6 +202,22 @@ class TracekitClient {
|
|
|
170
202
|
await this.snapshotClient.checkAndCaptureWithContext(label, variables);
|
|
171
203
|
}
|
|
172
204
|
}
|
|
205
|
+
extractServiceName(hostname) {
|
|
206
|
+
if (this.config.serviceNameMappings[hostname]) {
|
|
207
|
+
return this.config.serviceNameMappings[hostname];
|
|
208
|
+
}
|
|
209
|
+
const hostWithoutPort = hostname.split(':')[0];
|
|
210
|
+
if (this.config.serviceNameMappings[hostWithoutPort]) {
|
|
211
|
+
return this.config.serviceNameMappings[hostWithoutPort];
|
|
212
|
+
}
|
|
213
|
+
if (hostname.includes('.svc.cluster.local')) {
|
|
214
|
+
return hostname.split('.')[0];
|
|
215
|
+
}
|
|
216
|
+
if (hostname.includes('.internal')) {
|
|
217
|
+
return hostname.split('.')[0];
|
|
218
|
+
}
|
|
219
|
+
return hostWithoutPort;
|
|
220
|
+
}
|
|
173
221
|
normalizeAttributes(attributes) {
|
|
174
222
|
const normalized = {};
|
|
175
223
|
for (const [key, value] of Object.entries(attributes)) {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAmE;AACnE,sFAA4E;AAC5E,wDAAoD;AACpD,8EAAiF;AACjF,kEAGuC;AACvC,wDAA0C;AAC1C,uDAAmD;
|
|
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;
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/middleware/express.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,0DAyFC;AAGD,wCAEC;AAGD,8CAEC;AAhHD,6CAAgD;AAIhD,wDAA0C;AAC1C,8CAAgE;AAGhE,MAAM,qBAAqB,GAAG,IAAI,+BAAiB,EAAuB,CAAC;AAG3E,MAAM,UAAU,GAAG,IAAI,gCAAyB,EAAE,CAAC;AAEnD,SAAgB,uBAAuB,CAAC,MAAsB,EAAE,cAA+B;IAC7F,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAE/D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YAClD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAG7B,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAI5C,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CACtC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EACpB,GAAG,CAAC,OAAO,EACX;YACE,GAAG,CAAC,OAAY,EAAE,GAAW;gBAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,OAAY;gBACf,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;SACF,CACF,CAAC;QAIF,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;YAChD,OAAO,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE;gBAC3C,aAAa,EAAE,GAAG,CAAC,MAAM;gBACzB,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG;gBACtC,YAAY,EAAG,GAAG,CAAC,KAAK,EAAE,IAAe,IAAI,GAAG,CAAC,IAAI;gBACrD,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;gBAC9C,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAGF,GAAW,CAAC,cAAc,GAAG,IAAI,CAAC;QAGnC,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,GAAG,CAAC,WAAW;YACpB,EAAE,EAAE,WAAW,CAAC,GAAG,CAAC;YACpB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;YACvC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;SACpC,CAAC;QAGF,qBAAqB,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE;YAE7C,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;YAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,GAAG,CAAC,IAAI,GAAG,UAAU,IAAS;gBAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAE1C,MAAM,CAAC,OAAO,CACZ,IAAI,EACJ;wBACE,kBAAkB,EAAE,GAAG,CAAC,UAAU;wBAClC,kBAAkB,EAAE,UAAU;qBAC/B,EACD,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACvC,CAAC;gBACJ,CAAC;gBAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC;YAGF,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACpC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAGD,SAAgB,cAAc,CAAC,GAAY;IACzC,OAAQ,GAAW,CAAC,cAAc,IAAI,IAAI,CAAC;AAC7C,CAAC;AAGD,SAAgB,iBAAiB;IAC/B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IAEpC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACpB,OAAO,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAGD,OAAO,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,CACJ,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;QAChE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAY;QACpC,GAAG,CAAC,MAAM,CAAC,aAAa;QACxB,EAAE,CACH,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAY;IACjC,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAEtF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tracekit/node-apm",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
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
|
-
"
|
|
68
|
-
"
|
|
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"
|