@codebaz/nextdoctor-agent 0.1.0-beta.1 → 0.1.1-beta.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/.turbo/turbo-build.log +1 -1
- package/dist/exporter.d.ts +39 -0
- package/dist/exporter.d.ts.map +1 -0
- package/dist/exporter.js +101 -0
- package/dist/exporter.js.map +1 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +24 -20
- package/dist/init.js.map +1 -1
- package/package.json +1 -1
- package/src/exporter.ts +139 -0
- package/src/init.ts +28 -23
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
[6n[m]0;C:\Windows\system32\cmd.exe[?25h[?25l
|
|
2
|
-
> @codebaz/nextdoctor-agent@0.1.
|
|
2
|
+
> @codebaz/nextdoctor-agent@0.1.1-beta.1 build C:\Users\User\Desktop\projects\nextdoctor\packages\agent
|
|
3
3
|
> tsc --build[6;1H[?25h
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
3
|
+
import type { DetectedIssue, DetectorContext } from './detectors/types.js';
|
|
4
|
+
export interface NextDoctorExporterOptions {
|
|
5
|
+
endpoint: string;
|
|
6
|
+
projectToken: string;
|
|
7
|
+
/** Called just before export — lets init.ts inject current detected issues */
|
|
8
|
+
getIssues: () => DetectedIssue[];
|
|
9
|
+
/** Called after a successful export — lets init.ts clear sent issues */
|
|
10
|
+
clearIssues: (sent: DetectedIssue[]) => void;
|
|
11
|
+
/** Called to get the current detection context (route, runtime) */
|
|
12
|
+
getContext: () => DetectorContext;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Custom OTel SpanExporter for NextDoctor.
|
|
17
|
+
*
|
|
18
|
+
* Instead of sending raw OTLP protobuf, this exporter converts spans to
|
|
19
|
+
* the lightweight JSON format the collector's POST /ingest endpoint expects,
|
|
20
|
+
* and bundles in the detected issues from the detection engine.
|
|
21
|
+
*
|
|
22
|
+
* This gives us full control over the payload and avoids an OTLP parser
|
|
23
|
+
* on the collector side.
|
|
24
|
+
*/
|
|
25
|
+
export declare class NextDoctorExporter implements SpanExporter {
|
|
26
|
+
private readonly endpoint;
|
|
27
|
+
private readonly projectToken;
|
|
28
|
+
private readonly getIssues;
|
|
29
|
+
private readonly clearIssues;
|
|
30
|
+
private readonly getContext;
|
|
31
|
+
private readonly timeoutMs;
|
|
32
|
+
private isShutdown;
|
|
33
|
+
constructor(opts: NextDoctorExporterOptions);
|
|
34
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
35
|
+
private doExport;
|
|
36
|
+
shutdown(): Promise<void>;
|
|
37
|
+
forceFlush(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,aAAa,EAAE,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAC7C,mEAAmE;IACnE,UAAU,EAAE,MAAM,eAAe,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,UAAU,CAAS;gBAEf,IAAI,EAAE,yBAAyB;IAS3C,MAAM,CACJ,KAAK,EAAE,YAAY,EAAE,EACrB,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAC7C,IAAI;YASO,QAAQ;IAiDhB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
package/dist/exporter.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom OTel SpanExporter for NextDoctor.
|
|
3
|
+
*
|
|
4
|
+
* Instead of sending raw OTLP protobuf, this exporter converts spans to
|
|
5
|
+
* the lightweight JSON format the collector's POST /ingest endpoint expects,
|
|
6
|
+
* and bundles in the detected issues from the detection engine.
|
|
7
|
+
*
|
|
8
|
+
* This gives us full control over the payload and avoids an OTLP parser
|
|
9
|
+
* on the collector side.
|
|
10
|
+
*/
|
|
11
|
+
export class NextDoctorExporter {
|
|
12
|
+
endpoint;
|
|
13
|
+
projectToken;
|
|
14
|
+
getIssues;
|
|
15
|
+
clearIssues;
|
|
16
|
+
getContext;
|
|
17
|
+
timeoutMs;
|
|
18
|
+
isShutdown = false;
|
|
19
|
+
constructor(opts) {
|
|
20
|
+
this.endpoint = opts.endpoint.replace(/\/$/, '');
|
|
21
|
+
this.projectToken = opts.projectToken;
|
|
22
|
+
this.getIssues = opts.getIssues;
|
|
23
|
+
this.clearIssues = opts.clearIssues;
|
|
24
|
+
this.getContext = opts.getContext;
|
|
25
|
+
this.timeoutMs = opts.timeoutMs ?? 10_000;
|
|
26
|
+
}
|
|
27
|
+
export(spans, resultCallback) {
|
|
28
|
+
if (this.isShutdown) {
|
|
29
|
+
resultCallback({ code: 1 }); // ExportResultCode.FAILED
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
void this.doExport(spans, resultCallback);
|
|
33
|
+
}
|
|
34
|
+
async doExport(spans, resultCallback) {
|
|
35
|
+
const issuesToSend = this.getIssues();
|
|
36
|
+
const context = this.getContext();
|
|
37
|
+
const payload = {
|
|
38
|
+
spans: spans.map(serializeSpan),
|
|
39
|
+
context: {
|
|
40
|
+
route: context.route,
|
|
41
|
+
runtime: context.runtime,
|
|
42
|
+
startupTimeMs: context.startupTimeMs,
|
|
43
|
+
},
|
|
44
|
+
detectedIssues: issuesToSend.length > 0 ? issuesToSend : undefined,
|
|
45
|
+
};
|
|
46
|
+
try {
|
|
47
|
+
const controller = new AbortController();
|
|
48
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
49
|
+
const response = await fetch(`${this.endpoint}/ingest`, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: {
|
|
52
|
+
'Content-Type': 'application/json',
|
|
53
|
+
'Authorization': `Bearer ${this.projectToken}`,
|
|
54
|
+
},
|
|
55
|
+
body: JSON.stringify(payload),
|
|
56
|
+
signal: controller.signal,
|
|
57
|
+
});
|
|
58
|
+
clearTimeout(timer);
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
resultCallback({ code: 1 }); // FAILED
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Clear only the issues we successfully sent
|
|
64
|
+
if (issuesToSend.length > 0) {
|
|
65
|
+
this.clearIssues(issuesToSend);
|
|
66
|
+
}
|
|
67
|
+
resultCallback({ code: 0 }); // SUCCESS
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
resultCallback({ code: 1 }); // FAILED (timeout, network error, etc.)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async shutdown() {
|
|
74
|
+
this.isShutdown = true;
|
|
75
|
+
}
|
|
76
|
+
async forceFlush() {
|
|
77
|
+
// Nothing to flush — each export is fire-and-forget with its own retry
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// ─── Span serialiser ──────────────────────────────────────────────────────────
|
|
81
|
+
// Converts an OTel ReadableSpan to the lightweight JSON the collector expects.
|
|
82
|
+
function serializeSpan(span) {
|
|
83
|
+
const ctx = span.spanContext();
|
|
84
|
+
const [startSec, startNano] = span.startTime;
|
|
85
|
+
const [endSec, endNano] = span.endTime;
|
|
86
|
+
return {
|
|
87
|
+
traceId: ctx.traceId,
|
|
88
|
+
spanId: ctx.spanId,
|
|
89
|
+
// @ts-expect-error parentSpanId exists in newer OTel versions
|
|
90
|
+
parentSpanId: span.parentSpanId ?? null,
|
|
91
|
+
name: span.name,
|
|
92
|
+
startTime: span.startTime,
|
|
93
|
+
endTime: span.endTime,
|
|
94
|
+
durationMs: Math.round((endSec - startSec) * 1000 + (endNano - startNano) / 1_000_000),
|
|
95
|
+
attributes: span.attributes,
|
|
96
|
+
status: span.status,
|
|
97
|
+
events: span.events,
|
|
98
|
+
links: span.links,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAGhB,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGxE,cAAM,eAAe;IACnB,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,gBAAgB;IA0BpC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAGhB,WAAW,EACX,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGxE,cAAM,eAAe;IACnB,OAAO,CAAC,GAAG,CAAwB;IACnC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,gBAAgB;IA0BpC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,GAAG;IAaX,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,mBAAmB;IAOrB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,kBAAkB;IA2CpB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB/B,SAAS,IAAI,WAAW;IAOxB,iBAAiB,IAAI,aAAa,EAAE;IAIpC,mBAAmB,IAAI,IAAI;IAI3B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAkBvF,OAAO,CAAC,SAAS;IAIjB,gBAAgB,IAAI,aAAa;IAIjC,eAAe,CAAC,YAAY,GAAE,MAAW,EAAE,YAAY,GAAE,MAAW;;;;;IAIpE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;IAIhB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAST;AAKD,wBAAsB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAOhG;AAED,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAEpD;AAED,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED,wBAAgB,eAAe,CAAC,YAAY,GAAE,MAAW,EAAE,YAAY,GAAE,MAAW;;;;SAOnF;AAED,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;SAO/B"}
|
package/dist/init.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
2
2
|
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
|
3
|
-
import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http';
|
|
4
3
|
import { trace } from '@opentelemetry/api';
|
|
5
|
-
import {
|
|
4
|
+
import { NextDoctorExporter } from './exporter.js';
|
|
5
|
+
import { LogLevel as LogLevelEnum } from './types.js';
|
|
6
6
|
import { SystemMonitor } from './system-monitor.js';
|
|
7
7
|
import { detectionEngine } from './detectors/index.js';
|
|
8
8
|
class NextDoctorAgent {
|
|
@@ -73,25 +73,29 @@ class NextDoctorAgent {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
createTraceExporter() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
76
|
+
return new NextDoctorExporter({
|
|
77
|
+
endpoint: this.config.endpoint,
|
|
78
|
+
projectToken: this.config.projectToken,
|
|
79
|
+
getIssues: () => this.detectedIssues,
|
|
80
|
+
clearIssues: (sent) => {
|
|
81
|
+
// Remove only the issues that were successfully flushed
|
|
82
|
+
const sentSet = new Set(sent.map(i => `${i.id}:${i.detectedAt}`));
|
|
83
|
+
this.detectedIssues = this.detectedIssues.filter(i => !sentSet.has(`${i.id}:${i.detectedAt}`));
|
|
84
|
+
},
|
|
85
|
+
getContext: () => {
|
|
86
|
+
const firstSpan = this.spansBuffer[0];
|
|
87
|
+
const route = firstSpan?.attributes?.['http.route'] ??
|
|
88
|
+
firstSpan?.attributes?.['http.url'] ??
|
|
89
|
+
undefined;
|
|
90
|
+
return {
|
|
91
|
+
route: route ? String(route) : undefined,
|
|
92
|
+
runtime: (process.env.NEXT_RUNTIME ?? 'nodejs'),
|
|
93
|
+
startupTimeMs: Date.now() - this.startTime < 30_000
|
|
94
|
+
? Date.now() - this.startTime
|
|
95
|
+
: undefined,
|
|
96
|
+
};
|
|
94
97
|
},
|
|
98
|
+
timeoutMs: this.config.timeout ?? 10_000,
|
|
95
99
|
});
|
|
96
100
|
}
|
|
97
101
|
createResource() {
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/exporter.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { ExportResult } from '@opentelemetry/core';
|
|
2
|
+
import type { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
3
|
+
import type { DetectedIssue, DetectorContext } from './detectors/types.js';
|
|
4
|
+
|
|
5
|
+
export interface NextDoctorExporterOptions {
|
|
6
|
+
endpoint: string; // e.g. 'https://ingest.nextdoctor.dev'
|
|
7
|
+
projectToken: string;
|
|
8
|
+
/** Called just before export — lets init.ts inject current detected issues */
|
|
9
|
+
getIssues: () => DetectedIssue[];
|
|
10
|
+
/** Called after a successful export — lets init.ts clear sent issues */
|
|
11
|
+
clearIssues: (sent: DetectedIssue[]) => void;
|
|
12
|
+
/** Called to get the current detection context (route, runtime) */
|
|
13
|
+
getContext: () => DetectorContext;
|
|
14
|
+
timeoutMs?: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Custom OTel SpanExporter for NextDoctor.
|
|
19
|
+
*
|
|
20
|
+
* Instead of sending raw OTLP protobuf, this exporter converts spans to
|
|
21
|
+
* the lightweight JSON format the collector's POST /ingest endpoint expects,
|
|
22
|
+
* and bundles in the detected issues from the detection engine.
|
|
23
|
+
*
|
|
24
|
+
* This gives us full control over the payload and avoids an OTLP parser
|
|
25
|
+
* on the collector side.
|
|
26
|
+
*/
|
|
27
|
+
export class NextDoctorExporter implements SpanExporter {
|
|
28
|
+
private readonly endpoint: string;
|
|
29
|
+
private readonly projectToken: string;
|
|
30
|
+
private readonly getIssues: () => DetectedIssue[];
|
|
31
|
+
private readonly clearIssues: (sent: DetectedIssue[]) => void;
|
|
32
|
+
private readonly getContext: () => DetectorContext;
|
|
33
|
+
private readonly timeoutMs: number;
|
|
34
|
+
private isShutdown = false;
|
|
35
|
+
|
|
36
|
+
constructor(opts: NextDoctorExporterOptions) {
|
|
37
|
+
this.endpoint = opts.endpoint.replace(/\/$/, '');
|
|
38
|
+
this.projectToken = opts.projectToken;
|
|
39
|
+
this.getIssues = opts.getIssues;
|
|
40
|
+
this.clearIssues = opts.clearIssues;
|
|
41
|
+
this.getContext = opts.getContext;
|
|
42
|
+
this.timeoutMs = opts.timeoutMs ?? 10_000;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export(
|
|
46
|
+
spans: ReadableSpan[],
|
|
47
|
+
resultCallback: (result: ExportResult) => void,
|
|
48
|
+
): void {
|
|
49
|
+
if (this.isShutdown) {
|
|
50
|
+
resultCallback({ code: 1 }); // ExportResultCode.FAILED
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void this.doExport(spans, resultCallback);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private async doExport(
|
|
58
|
+
spans: ReadableSpan[],
|
|
59
|
+
resultCallback: (result: ExportResult) => void,
|
|
60
|
+
): Promise<void> {
|
|
61
|
+
const issuesToSend = this.getIssues();
|
|
62
|
+
const context = this.getContext();
|
|
63
|
+
|
|
64
|
+
const payload = {
|
|
65
|
+
spans: spans.map(serializeSpan),
|
|
66
|
+
context: {
|
|
67
|
+
route: context.route,
|
|
68
|
+
runtime: context.runtime,
|
|
69
|
+
startupTimeMs: context.startupTimeMs,
|
|
70
|
+
},
|
|
71
|
+
detectedIssues: issuesToSend.length > 0 ? issuesToSend : undefined,
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
const controller = new AbortController();
|
|
76
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
77
|
+
|
|
78
|
+
const response = await fetch(`${this.endpoint}/ingest`, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: {
|
|
81
|
+
'Content-Type': 'application/json',
|
|
82
|
+
'Authorization': `Bearer ${this.projectToken}`,
|
|
83
|
+
},
|
|
84
|
+
body: JSON.stringify(payload),
|
|
85
|
+
signal: controller.signal,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
clearTimeout(timer);
|
|
89
|
+
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
resultCallback({ code: 1 }); // FAILED
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Clear only the issues we successfully sent
|
|
96
|
+
if (issuesToSend.length > 0) {
|
|
97
|
+
this.clearIssues(issuesToSend);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
resultCallback({ code: 0 }); // SUCCESS
|
|
101
|
+
} catch {
|
|
102
|
+
resultCallback({ code: 1 }); // FAILED (timeout, network error, etc.)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async shutdown(): Promise<void> {
|
|
107
|
+
this.isShutdown = true;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async forceFlush(): Promise<void> {
|
|
111
|
+
// Nothing to flush — each export is fire-and-forget with its own retry
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ─── Span serialiser ──────────────────────────────────────────────────────────
|
|
116
|
+
// Converts an OTel ReadableSpan to the lightweight JSON the collector expects.
|
|
117
|
+
|
|
118
|
+
function serializeSpan(span: ReadableSpan): object {
|
|
119
|
+
const ctx = span.spanContext();
|
|
120
|
+
const [startSec, startNano] = span.startTime;
|
|
121
|
+
const [endSec, endNano] = span.endTime;
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
traceId: ctx.traceId,
|
|
125
|
+
spanId: ctx.spanId,
|
|
126
|
+
// @ts-expect-error parentSpanId exists in newer OTel versions
|
|
127
|
+
parentSpanId: span.parentSpanId ?? null,
|
|
128
|
+
name: span.name,
|
|
129
|
+
startTime: span.startTime,
|
|
130
|
+
endTime: span.endTime,
|
|
131
|
+
durationMs: Math.round(
|
|
132
|
+
(endSec - startSec) * 1000 + (endNano - startNano) / 1_000_000
|
|
133
|
+
),
|
|
134
|
+
attributes: span.attributes,
|
|
135
|
+
status: span.status,
|
|
136
|
+
events: span.events,
|
|
137
|
+
links: span.links,
|
|
138
|
+
};
|
|
139
|
+
}
|
package/src/init.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NodeSDK } from '@opentelemetry/sdk-node';
|
|
2
2
|
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';
|
|
3
|
-
import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http';
|
|
4
3
|
import { trace } from '@opentelemetry/api';
|
|
4
|
+
import { NextDoctorExporter } from './exporter.js';
|
|
5
5
|
import type {
|
|
6
6
|
NextDoctorConfig,
|
|
7
7
|
ExporterType,
|
|
@@ -85,29 +85,34 @@ class NextDoctorAgent {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
private createTraceExporter():
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
88
|
+
private createTraceExporter(): NextDoctorExporter {
|
|
89
|
+
return new NextDoctorExporter({
|
|
90
|
+
endpoint: this.config.endpoint,
|
|
91
|
+
projectToken: this.config.projectToken,
|
|
92
|
+
getIssues: () => this.detectedIssues,
|
|
93
|
+
clearIssues: (sent) => {
|
|
94
|
+
// Remove only the issues that were successfully flushed
|
|
95
|
+
const sentSet = new Set(sent.map(i => `${i.id}:${i.detectedAt}`));
|
|
96
|
+
this.detectedIssues = this.detectedIssues.filter(
|
|
97
|
+
i => !sentSet.has(`${i.id}:${i.detectedAt}`)
|
|
98
|
+
);
|
|
99
|
+
},
|
|
100
|
+
getContext: () => {
|
|
101
|
+
const firstSpan = this.spansBuffer[0];
|
|
102
|
+
const route =
|
|
103
|
+
firstSpan?.attributes?.['http.route'] ??
|
|
104
|
+
firstSpan?.attributes?.['http.url'] ??
|
|
105
|
+
undefined;
|
|
106
|
+
return {
|
|
107
|
+
route: route ? String(route) : undefined,
|
|
108
|
+
runtime: (process.env.NEXT_RUNTIME ?? 'nodejs') as 'nodejs' | 'edge',
|
|
109
|
+
startupTimeMs: Date.now() - this.startTime < 30_000
|
|
110
|
+
? Date.now() - this.startTime
|
|
111
|
+
: undefined,
|
|
112
|
+
};
|
|
109
113
|
},
|
|
110
|
-
|
|
114
|
+
timeoutMs: this.config.timeout ?? 10_000,
|
|
115
|
+
});
|
|
111
116
|
}
|
|
112
117
|
|
|
113
118
|
private createResource(): any {
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/index.ts","./src/init.ts","./src/middleware.ts","./src/optimization.ts","./src/system-monitor.ts","./src/types.ts","./src/detectors/base-detector.ts","./src/detectors/cold-start-threshold.detector.ts","./src/detectors/dynamic-route-candidate.detector.ts","./src/detectors/fetch-no-cache.detector.ts","./src/detectors/index.ts","./src/detectors/types.ts","./src/detectors/__tests__/cold-start-threshold.test.ts","./src/detectors/__tests__/dynamic-route-candidate.test.ts","./src/detectors/__tests__/fetch-no-cache.test.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["./src/exporter.ts","./src/index.ts","./src/init.ts","./src/middleware.ts","./src/optimization.ts","./src/system-monitor.ts","./src/types.ts","./src/detectors/base-detector.ts","./src/detectors/cold-start-threshold.detector.ts","./src/detectors/dynamic-route-candidate.detector.ts","./src/detectors/fetch-no-cache.detector.ts","./src/detectors/index.ts","./src/detectors/types.ts","./src/detectors/__tests__/cold-start-threshold.test.ts","./src/detectors/__tests__/dynamic-route-candidate.test.ts","./src/detectors/__tests__/fetch-no-cache.test.ts"],"version":"5.9.3"}
|