@principal-ai/otel-collector-server 0.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 +252 -0
- package/dist/OTELCollectorServer.d.ts +52 -0
- package/dist/OTELCollectorServer.d.ts.map +1 -0
- package/dist/OTELCollectorServer.js +252 -0
- package/dist/OTELCollectorServer.js.map +1 -0
- package/dist/__tests__/fixtures/traces.d.ts +8 -0
- package/dist/__tests__/fixtures/traces.d.ts.map +1 -0
- package/dist/__tests__/fixtures/traces.js +186 -0
- package/dist/__tests__/fixtures/traces.js.map +1 -0
- package/dist/bin/otel-collector-server.d.ts +6 -0
- package/dist/bin/otel-collector-server.d.ts.map +1 -0
- package/dist/bin/otel-collector-server.js +132 -0
- package/dist/bin/otel-collector-server.js.map +1 -0
- package/dist/core/BinaryManager.d.ts +35 -0
- package/dist/core/BinaryManager.d.ts.map +1 -0
- package/dist/core/BinaryManager.js +143 -0
- package/dist/core/BinaryManager.js.map +1 -0
- package/dist/core/CollectorProcessManager.d.ts +60 -0
- package/dist/core/CollectorProcessManager.d.ts.map +1 -0
- package/dist/core/CollectorProcessManager.js +197 -0
- package/dist/core/CollectorProcessManager.js.map +1 -0
- package/dist/core/ConfigGenerator.d.ts +23 -0
- package/dist/core/ConfigGenerator.d.ts.map +1 -0
- package/dist/core/ConfigGenerator.js +115 -0
- package/dist/core/ConfigGenerator.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/output/ConsoleOutput.d.ts +24 -0
- package/dist/output/ConsoleOutput.d.ts.map +1 -0
- package/dist/output/ConsoleOutput.js +156 -0
- package/dist/output/ConsoleOutput.js.map +1 -0
- package/dist/output/FileOutput.d.ts +18 -0
- package/dist/output/FileOutput.d.ts.map +1 -0
- package/dist/output/FileOutput.js +88 -0
- package/dist/output/FileOutput.js.map +1 -0
- package/dist/output/MessagePortOutput.d.ts +19 -0
- package/dist/output/MessagePortOutput.d.ts.map +1 -0
- package/dist/output/MessagePortOutput.js +25 -0
- package/dist/output/MessagePortOutput.js.map +1 -0
- package/dist/output/TraceOutput.d.ts +13 -0
- package/dist/output/TraceOutput.d.ts.map +1 -0
- package/dist/output/TraceOutput.js +6 -0
- package/dist/output/TraceOutput.js.map +1 -0
- package/dist/router/PortRouter.d.ts +41 -0
- package/dist/router/PortRouter.d.ts.map +1 -0
- package/dist/router/PortRouter.js +130 -0
- package/dist/router/PortRouter.js.map +1 -0
- package/dist/server/OTLPForwardingServer.d.ts +59 -0
- package/dist/server/OTLPForwardingServer.d.ts.map +1 -0
- package/dist/server/OTLPForwardingServer.js +245 -0
- package/dist/server/OTLPForwardingServer.js.map +1 -0
- package/dist/shared/logger.d.ts +18 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +59 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/types.d.ts +47 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +6 -0
- package/dist/shared/types.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test fixtures for OTLP trace data
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createErrorTrace = exports.createNestedMockTrace = exports.createMockTrace = void 0;
|
|
7
|
+
const createMockTrace = (overrides) => {
|
|
8
|
+
return {
|
|
9
|
+
resourceSpans: [
|
|
10
|
+
{
|
|
11
|
+
resource: {
|
|
12
|
+
attributes: [
|
|
13
|
+
{ key: 'service.name', value: { stringValue: 'test-service' } },
|
|
14
|
+
{ key: 'service.version', value: { stringValue: '1.0.0' } },
|
|
15
|
+
{ key: 'dev.server.url', value: { stringValue: 'http://localhost:3000' } },
|
|
16
|
+
],
|
|
17
|
+
droppedAttributesCount: 0,
|
|
18
|
+
},
|
|
19
|
+
scopeSpans: [
|
|
20
|
+
{
|
|
21
|
+
scope: {
|
|
22
|
+
name: 'test-tracer',
|
|
23
|
+
version: '1.0.0',
|
|
24
|
+
},
|
|
25
|
+
spans: [
|
|
26
|
+
{
|
|
27
|
+
traceId: 'abc123',
|
|
28
|
+
spanId: 'def456',
|
|
29
|
+
name: 'HTTP GET /api/users',
|
|
30
|
+
kind: 2, // SERVER
|
|
31
|
+
startTimeUnixNano: '1737835200000000000',
|
|
32
|
+
endTimeUnixNano: '1737835200150000000',
|
|
33
|
+
attributes: [
|
|
34
|
+
{ key: 'http.method', value: { stringValue: 'GET' } },
|
|
35
|
+
{ key: 'http.status_code', value: { intValue: 200 } },
|
|
36
|
+
{ key: 'http.route', value: { stringValue: '/api/users' } },
|
|
37
|
+
],
|
|
38
|
+
droppedAttributesCount: 0,
|
|
39
|
+
events: [],
|
|
40
|
+
droppedEventsCount: 0,
|
|
41
|
+
links: [],
|
|
42
|
+
droppedLinksCount: 0,
|
|
43
|
+
status: {
|
|
44
|
+
code: 1, // OK
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
...overrides,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
exports.createMockTrace = createMockTrace;
|
|
56
|
+
const createNestedMockTrace = () => {
|
|
57
|
+
return {
|
|
58
|
+
resourceSpans: [
|
|
59
|
+
{
|
|
60
|
+
resource: {
|
|
61
|
+
attributes: [
|
|
62
|
+
{ key: 'service.name', value: { stringValue: 'web-ade' } },
|
|
63
|
+
{ key: 'dev.server.url', value: { stringValue: 'http://localhost:3000' } },
|
|
64
|
+
],
|
|
65
|
+
droppedAttributesCount: 0,
|
|
66
|
+
},
|
|
67
|
+
scopeSpans: [
|
|
68
|
+
{
|
|
69
|
+
scope: {
|
|
70
|
+
name: 'my-tracer',
|
|
71
|
+
},
|
|
72
|
+
spans: [
|
|
73
|
+
{
|
|
74
|
+
traceId: 'trace-123',
|
|
75
|
+
spanId: 'span-parent',
|
|
76
|
+
name: 'HTTP GET /api/users',
|
|
77
|
+
kind: 2, // SERVER
|
|
78
|
+
startTimeUnixNano: '1737835200000000000',
|
|
79
|
+
endTimeUnixNano: '1737835200045000000',
|
|
80
|
+
attributes: [
|
|
81
|
+
{ key: 'http.method', value: { stringValue: 'GET' } },
|
|
82
|
+
{ key: 'http.status_code', value: { intValue: 200 } },
|
|
83
|
+
],
|
|
84
|
+
droppedAttributesCount: 0,
|
|
85
|
+
events: [],
|
|
86
|
+
droppedEventsCount: 0,
|
|
87
|
+
links: [],
|
|
88
|
+
droppedLinksCount: 0,
|
|
89
|
+
status: { code: 1 }, // OK
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
traceId: 'trace-123',
|
|
93
|
+
spanId: 'span-child-1',
|
|
94
|
+
parentSpanId: 'span-parent',
|
|
95
|
+
name: 'DB Query: SELECT * FROM users',
|
|
96
|
+
kind: 3, // CLIENT
|
|
97
|
+
startTimeUnixNano: '1737835200005000000',
|
|
98
|
+
endTimeUnixNano: '1737835200035000000',
|
|
99
|
+
attributes: [
|
|
100
|
+
{ key: 'db.system', value: { stringValue: 'postgresql' } },
|
|
101
|
+
{ key: 'db.statement', value: { stringValue: 'SELECT * FROM users' } },
|
|
102
|
+
],
|
|
103
|
+
droppedAttributesCount: 0,
|
|
104
|
+
events: [],
|
|
105
|
+
droppedEventsCount: 0,
|
|
106
|
+
links: [],
|
|
107
|
+
droppedLinksCount: 0,
|
|
108
|
+
status: { code: 1 }, // OK
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
traceId: 'trace-123',
|
|
112
|
+
spanId: 'span-child-2',
|
|
113
|
+
parentSpanId: 'span-parent',
|
|
114
|
+
name: 'Cache lookup',
|
|
115
|
+
kind: 1, // INTERNAL
|
|
116
|
+
startTimeUnixNano: '1737835200036000000',
|
|
117
|
+
endTimeUnixNano: '1737835200038000000',
|
|
118
|
+
attributes: [],
|
|
119
|
+
droppedAttributesCount: 0,
|
|
120
|
+
events: [],
|
|
121
|
+
droppedEventsCount: 0,
|
|
122
|
+
links: [],
|
|
123
|
+
droppedLinksCount: 0,
|
|
124
|
+
status: { code: 1 }, // OK
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
exports.createNestedMockTrace = createNestedMockTrace;
|
|
134
|
+
const createErrorTrace = () => {
|
|
135
|
+
return {
|
|
136
|
+
resourceSpans: [
|
|
137
|
+
{
|
|
138
|
+
resource: {
|
|
139
|
+
attributes: [
|
|
140
|
+
{ key: 'service.name', value: { stringValue: 'error-service' } },
|
|
141
|
+
],
|
|
142
|
+
droppedAttributesCount: 0,
|
|
143
|
+
},
|
|
144
|
+
scopeSpans: [
|
|
145
|
+
{
|
|
146
|
+
scope: { name: 'test' },
|
|
147
|
+
spans: [
|
|
148
|
+
{
|
|
149
|
+
traceId: 'error-trace',
|
|
150
|
+
spanId: 'error-span',
|
|
151
|
+
name: 'Failed operation',
|
|
152
|
+
kind: 1, // INTERNAL
|
|
153
|
+
startTimeUnixNano: '1737835200000000000',
|
|
154
|
+
endTimeUnixNano: '1737835200100000000',
|
|
155
|
+
attributes: [
|
|
156
|
+
{ key: 'error', value: { boolValue: true } },
|
|
157
|
+
],
|
|
158
|
+
droppedAttributesCount: 0,
|
|
159
|
+
events: [
|
|
160
|
+
{
|
|
161
|
+
timeUnixNano: '1737835200050000000',
|
|
162
|
+
name: 'exception',
|
|
163
|
+
attributes: [
|
|
164
|
+
{ key: 'exception.type', value: { stringValue: 'Error' } },
|
|
165
|
+
{ key: 'exception.message', value: { stringValue: 'Something went wrong' } },
|
|
166
|
+
],
|
|
167
|
+
droppedAttributesCount: 0,
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
droppedEventsCount: 0,
|
|
171
|
+
links: [],
|
|
172
|
+
droppedLinksCount: 0,
|
|
173
|
+
status: {
|
|
174
|
+
code: 2, // ERROR
|
|
175
|
+
message: 'Operation failed',
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
exports.createErrorTrace = createErrorTrace;
|
|
186
|
+
//# sourceMappingURL=traces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traces.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/traces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-collector-server.d.ts","sourceRoot":"","sources":["../../src/bin/otel-collector-server.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* CLI entry point for standalone OTEL Collector Server
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const OTELCollectorServer_1 = require("../OTELCollectorServer");
|
|
8
|
+
// Parse command line arguments
|
|
9
|
+
function parseArgs() {
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
const config = {
|
|
12
|
+
mode: 'standalone',
|
|
13
|
+
};
|
|
14
|
+
for (let i = 0; i < args.length; i++) {
|
|
15
|
+
const arg = args[i];
|
|
16
|
+
switch (arg) {
|
|
17
|
+
case '--port':
|
|
18
|
+
case '-p':
|
|
19
|
+
config.otlpPort = parseInt(args[++i], 10);
|
|
20
|
+
break;
|
|
21
|
+
case '--wrapper-port':
|
|
22
|
+
config.wrapperPort = parseInt(args[++i], 10);
|
|
23
|
+
break;
|
|
24
|
+
case '--output':
|
|
25
|
+
case '-o': {
|
|
26
|
+
const output = args[++i];
|
|
27
|
+
if (output !== 'console' && output !== 'file') {
|
|
28
|
+
console.error(`Invalid output: ${output}. Must be 'console' or 'file'`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
config.output = output;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case '--file':
|
|
35
|
+
case '-f':
|
|
36
|
+
config.outputFile = args[++i];
|
|
37
|
+
config.output = 'file';
|
|
38
|
+
break;
|
|
39
|
+
case '--pretty':
|
|
40
|
+
config.prettyPrint = true;
|
|
41
|
+
break;
|
|
42
|
+
case '--no-pretty':
|
|
43
|
+
config.prettyPrint = false;
|
|
44
|
+
break;
|
|
45
|
+
case '--log-level':
|
|
46
|
+
case '-l': {
|
|
47
|
+
const level = args[++i];
|
|
48
|
+
if (!['debug', 'info', 'warn', 'error'].includes(level)) {
|
|
49
|
+
console.error(`Invalid log level: ${level}`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
config.logLevel = level;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case '--version':
|
|
56
|
+
config.collectorVersion = args[++i];
|
|
57
|
+
break;
|
|
58
|
+
case '--help':
|
|
59
|
+
case '-h':
|
|
60
|
+
printHelp();
|
|
61
|
+
process.exit(0);
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
console.error(`Unknown argument: ${arg}`);
|
|
65
|
+
printHelp();
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return config;
|
|
70
|
+
}
|
|
71
|
+
function printHelp() {
|
|
72
|
+
console.log(`
|
|
73
|
+
OpenTelemetry Collector Server - Standalone Mode
|
|
74
|
+
|
|
75
|
+
Usage: otel-collector-server [options]
|
|
76
|
+
|
|
77
|
+
Options:
|
|
78
|
+
-p, --port <port> OTLP endpoint port (default: 4318)
|
|
79
|
+
--wrapper-port <port> Wrapper HTTP port (default: 4319)
|
|
80
|
+
-o, --output <type> Output type: console | file (default: console)
|
|
81
|
+
-f, --file <path> Output file path (sets output to file)
|
|
82
|
+
--pretty Pretty print console output (default: true)
|
|
83
|
+
--no-pretty Disable pretty printing
|
|
84
|
+
-l, --log-level <level> Log level: debug | info | warn | error (default: info)
|
|
85
|
+
--version <version> Collector version (default: latest)
|
|
86
|
+
-h, --help Show this help message
|
|
87
|
+
|
|
88
|
+
Examples:
|
|
89
|
+
# Start with console output (pretty print)
|
|
90
|
+
otel-collector-server
|
|
91
|
+
|
|
92
|
+
# Start with file output
|
|
93
|
+
otel-collector-server --output file --file ./traces.jsonl
|
|
94
|
+
|
|
95
|
+
# Custom ports and debug logging
|
|
96
|
+
otel-collector-server --port 4318 --log-level debug
|
|
97
|
+
|
|
98
|
+
# Raw JSON console output
|
|
99
|
+
otel-collector-server --output console --no-pretty
|
|
100
|
+
`);
|
|
101
|
+
}
|
|
102
|
+
async function main() {
|
|
103
|
+
const config = parseArgs();
|
|
104
|
+
console.log('Starting OpenTelemetry Collector Server (Standalone Mode)\n');
|
|
105
|
+
const server = new OTELCollectorServer_1.OTELCollectorServer(config);
|
|
106
|
+
// Handle shutdown signals
|
|
107
|
+
const shutdown = async (signal) => {
|
|
108
|
+
console.log(`\nReceived ${signal}, shutting down gracefully...`);
|
|
109
|
+
await server.stop();
|
|
110
|
+
process.exit(0);
|
|
111
|
+
};
|
|
112
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
113
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
114
|
+
// Handle uncaught errors
|
|
115
|
+
process.on('uncaughtException', (err) => {
|
|
116
|
+
console.error('Uncaught exception:', err);
|
|
117
|
+
server.stop().finally(() => process.exit(1));
|
|
118
|
+
});
|
|
119
|
+
process.on('unhandledRejection', (err) => {
|
|
120
|
+
console.error('Unhandled rejection:', err);
|
|
121
|
+
server.stop().finally(() => process.exit(1));
|
|
122
|
+
});
|
|
123
|
+
try {
|
|
124
|
+
await server.start();
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
console.error('Failed to start server:', err);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
main();
|
|
132
|
+
//# sourceMappingURL=otel-collector-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-collector-server.js","sourceRoot":"","sources":["../../src/bin/otel-collector-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BinaryManager - Manages OpenTelemetry Collector binaries
|
|
3
|
+
*/
|
|
4
|
+
import { Logger } from '../shared/logger';
|
|
5
|
+
import { BinaryInfo } from '../shared/types';
|
|
6
|
+
export declare class BinaryManager {
|
|
7
|
+
private logger;
|
|
8
|
+
private version;
|
|
9
|
+
private platform;
|
|
10
|
+
private arch;
|
|
11
|
+
private binaryName;
|
|
12
|
+
private customBinaryPath?;
|
|
13
|
+
constructor(version?: string, logger?: Logger, customBinaryPath?: string);
|
|
14
|
+
/**
|
|
15
|
+
* Ensure binary exists and is valid, return path
|
|
16
|
+
*/
|
|
17
|
+
ensureBinary(): Promise<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Get the expected binary path
|
|
20
|
+
*/
|
|
21
|
+
getBinaryPath(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Get binary info
|
|
24
|
+
*/
|
|
25
|
+
getBinaryInfo(): BinaryInfo;
|
|
26
|
+
/**
|
|
27
|
+
* Validate binary exists and is executable
|
|
28
|
+
*/
|
|
29
|
+
validateBinary(binaryPath: string): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Make binary executable (Unix-like systems)
|
|
32
|
+
*/
|
|
33
|
+
makeExecutable(binaryPath: string): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=BinaryManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryManager.d.ts","sourceRoot":"","sources":["../../src/core/BinaryManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,MAAM,EAAgB,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAY7C,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAEtB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM;IAwBxE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAcrC;;OAEG;IACH,aAAa,IAAI,MAAM;IAWvB;;OAEG;IACH,aAAa,IAAI,UAAU;IAS3B;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB1D;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAaxD"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BinaryManager - Manages OpenTelemetry Collector binaries
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.BinaryManager = void 0;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const os = __importStar(require("os"));
|
|
43
|
+
const logger_1 = require("../shared/logger");
|
|
44
|
+
const DEFAULT_VERSION = 'v0.114.0';
|
|
45
|
+
const BINARY_NAMES = {
|
|
46
|
+
'darwin-x64': 'otelcol_darwin_amd64',
|
|
47
|
+
'darwin-arm64': 'otelcol_darwin_arm64',
|
|
48
|
+
'linux-x64': 'otelcol_linux_amd64',
|
|
49
|
+
'linux-arm64': 'otelcol_linux_arm64',
|
|
50
|
+
'win32-x64': 'otelcol_windows_amd64.exe',
|
|
51
|
+
};
|
|
52
|
+
class BinaryManager {
|
|
53
|
+
constructor(version, logger, customBinaryPath) {
|
|
54
|
+
this.logger = logger || (0, logger_1.createLogger)('BinaryManager');
|
|
55
|
+
this.version = version || DEFAULT_VERSION;
|
|
56
|
+
this.platform = os.platform();
|
|
57
|
+
this.arch = os.arch();
|
|
58
|
+
this.customBinaryPath = customBinaryPath;
|
|
59
|
+
const platformKey = `${this.platform}-${this.arch}`;
|
|
60
|
+
this.binaryName = BINARY_NAMES[platformKey];
|
|
61
|
+
if (!this.binaryName && !customBinaryPath) {
|
|
62
|
+
throw new Error(`Unsupported platform: ${this.platform}-${this.arch}. ` +
|
|
63
|
+
`Supported: ${Object.keys(BINARY_NAMES).join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
if (customBinaryPath) {
|
|
66
|
+
this.logger.info(`Initialized with custom binary path: ${customBinaryPath}`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
this.logger.info(`Initialized for ${platformKey}, version ${this.version}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Ensure binary exists and is valid, return path
|
|
74
|
+
*/
|
|
75
|
+
async ensureBinary() {
|
|
76
|
+
const binaryPath = this.getBinaryPath();
|
|
77
|
+
if (await this.validateBinary(binaryPath)) {
|
|
78
|
+
this.logger.debug(`Binary found and valid: ${binaryPath}`);
|
|
79
|
+
return binaryPath;
|
|
80
|
+
}
|
|
81
|
+
throw new Error(`OpenTelemetry Collector binary not found at ${binaryPath}. ` +
|
|
82
|
+
`Please run 'npm run download-binaries' or bundle binaries with the package.`);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get the expected binary path
|
|
86
|
+
*/
|
|
87
|
+
getBinaryPath() {
|
|
88
|
+
// Use custom path if provided
|
|
89
|
+
if (this.customBinaryPath) {
|
|
90
|
+
return this.customBinaryPath;
|
|
91
|
+
}
|
|
92
|
+
// Look in binaries/ directory relative to this file
|
|
93
|
+
const binariesDir = path.join(__dirname, '../../binaries');
|
|
94
|
+
return path.join(binariesDir, this.binaryName);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get binary info
|
|
98
|
+
*/
|
|
99
|
+
getBinaryInfo() {
|
|
100
|
+
return {
|
|
101
|
+
path: this.getBinaryPath(),
|
|
102
|
+
version: this.version,
|
|
103
|
+
platform: this.platform,
|
|
104
|
+
arch: this.arch,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validate binary exists and is executable
|
|
109
|
+
*/
|
|
110
|
+
async validateBinary(binaryPath) {
|
|
111
|
+
try {
|
|
112
|
+
// Check if file exists
|
|
113
|
+
await fs.promises.access(binaryPath, fs.constants.F_OK);
|
|
114
|
+
// Check if executable (Unix-like systems)
|
|
115
|
+
if (this.platform !== 'win32') {
|
|
116
|
+
await fs.promises.access(binaryPath, fs.constants.X_OK);
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
this.logger.debug(`Binary validation failed: ${err}`);
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Make binary executable (Unix-like systems)
|
|
127
|
+
*/
|
|
128
|
+
async makeExecutable(binaryPath) {
|
|
129
|
+
if (this.platform === 'win32') {
|
|
130
|
+
return; // Not needed on Windows
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
await fs.promises.chmod(binaryPath, 0o755);
|
|
134
|
+
this.logger.debug(`Made binary executable: ${binaryPath}`);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
this.logger.error(`Failed to make binary executable: ${err}`);
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.BinaryManager = BinaryManager;
|
|
143
|
+
//# sourceMappingURL=BinaryManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryManager.js","sourceRoot":"","sources":["../../src/core/BinaryManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CollectorProcessManager - Manages OpenTelemetry Collector process lifecycle
|
|
3
|
+
*/
|
|
4
|
+
import { EventEmitter } from 'events';
|
|
5
|
+
import { Logger } from '../shared/logger';
|
|
6
|
+
import { ProcessStats } from '../shared/types';
|
|
7
|
+
export interface ProcessManagerConfig {
|
|
8
|
+
binaryPath: string;
|
|
9
|
+
configPath: string;
|
|
10
|
+
maxRestartAttempts?: number;
|
|
11
|
+
restartDelay?: number;
|
|
12
|
+
healthCheckInterval?: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class CollectorProcessManager extends EventEmitter {
|
|
15
|
+
private logger;
|
|
16
|
+
private config;
|
|
17
|
+
private collectorProcess;
|
|
18
|
+
private stats;
|
|
19
|
+
private startTime;
|
|
20
|
+
private restartCount;
|
|
21
|
+
private healthCheckTimer;
|
|
22
|
+
constructor(config: ProcessManagerConfig, logger?: Logger);
|
|
23
|
+
/**
|
|
24
|
+
* Start the collector process
|
|
25
|
+
*/
|
|
26
|
+
start(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Stop the collector process
|
|
29
|
+
*/
|
|
30
|
+
stop(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Check if collector is running
|
|
33
|
+
*/
|
|
34
|
+
isRunning(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get process statistics
|
|
37
|
+
*/
|
|
38
|
+
getStats(): ProcessStats;
|
|
39
|
+
/**
|
|
40
|
+
* Spawn the collector process
|
|
41
|
+
*/
|
|
42
|
+
private spawnCollector;
|
|
43
|
+
/**
|
|
44
|
+
* Handle collector process exit
|
|
45
|
+
*/
|
|
46
|
+
private handleExit;
|
|
47
|
+
/**
|
|
48
|
+
* Start health checks
|
|
49
|
+
*/
|
|
50
|
+
private startHealthChecks;
|
|
51
|
+
/**
|
|
52
|
+
* Stop health checks
|
|
53
|
+
*/
|
|
54
|
+
private stopHealthChecks;
|
|
55
|
+
/**
|
|
56
|
+
* Perform health check
|
|
57
|
+
*/
|
|
58
|
+
private performHealthCheck;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=CollectorProcessManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollectorProcessManager.d.ts","sourceRoot":"","sources":["../../src/core/CollectorProcessManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAgB,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAA+B;gBAE3C,MAAM,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,MAAM;IAiBzD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ,IAAI,YAAY;IASxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsCtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAiB3B"}
|