observability-toolkit 1.1.0 → 1.4.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 +52 -3
- package/dist/backends/index.d.ts +28 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/local-jsonl.d.ts +29 -1
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +259 -27
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.d.ts +2 -0
- package/dist/backends/local-jsonl.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl.test.js +1638 -0
- package/dist/backends/local-jsonl.test.js.map +1 -0
- package/dist/backends/signoz-api.d.ts +9 -2
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.integration.test.d.ts +8 -0
- package/dist/backends/signoz-api.integration.test.d.ts.map +1 -0
- package/dist/backends/signoz-api.integration.test.js +137 -0
- package/dist/backends/signoz-api.integration.test.js.map +1 -0
- package/dist/backends/signoz-api.js +206 -115
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.d.ts +2 -0
- package/dist/backends/signoz-api.test.d.ts.map +1 -0
- package/dist/backends/signoz-api.test.js +1080 -0
- package/dist/backends/signoz-api.test.js.map +1 -0
- package/dist/lib/constants.d.ts +28 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +73 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/constants.test.d.ts +5 -0
- package/dist/lib/constants.test.d.ts.map +1 -0
- package/dist/lib/constants.test.js +381 -0
- package/dist/lib/constants.test.js.map +1 -0
- package/dist/lib/file-utils.d.ts +53 -1
- package/dist/lib/file-utils.d.ts.map +1 -1
- package/dist/lib/file-utils.js +142 -3
- package/dist/lib/file-utils.js.map +1 -1
- package/dist/lib/file-utils.test.d.ts +2 -0
- package/dist/lib/file-utils.test.d.ts.map +1 -0
- package/dist/lib/file-utils.test.js +649 -0
- package/dist/lib/file-utils.test.js.map +1 -0
- package/dist/server.js +50 -63
- package/dist/server.js.map +1 -1
- package/dist/server.test.d.ts +5 -0
- package/dist/server.test.d.ts.map +1 -0
- package/dist/server.test.js +547 -0
- package/dist/server.test.js.map +1 -0
- package/dist/tools/context-stats.d.ts +2 -2
- package/dist/tools/context-stats.d.ts.map +1 -1
- package/dist/tools/context-stats.js +2 -1
- package/dist/tools/context-stats.js.map +1 -1
- package/dist/tools/context-stats.test.d.ts +5 -0
- package/dist/tools/context-stats.test.d.ts.map +1 -0
- package/dist/tools/context-stats.test.js +465 -0
- package/dist/tools/context-stats.test.js.map +1 -0
- package/dist/tools/get-trace-url.d.ts.map +1 -1
- package/dist/tools/get-trace-url.js +5 -1
- package/dist/tools/get-trace-url.js.map +1 -1
- package/dist/tools/get-trace-url.test.d.ts +5 -0
- package/dist/tools/get-trace-url.test.d.ts.map +1 -0
- package/dist/tools/get-trace-url.test.js +429 -0
- package/dist/tools/get-trace-url.test.js.map +1 -0
- package/dist/tools/health-check.d.ts +9 -2
- package/dist/tools/health-check.d.ts.map +1 -1
- package/dist/tools/health-check.js +66 -27
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/health-check.test.d.ts +5 -0
- package/dist/tools/health-check.test.d.ts.map +1 -0
- package/dist/tools/health-check.test.js +386 -0
- package/dist/tools/health-check.test.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/query-llm-events.d.ts +82 -0
- package/dist/tools/query-llm-events.d.ts.map +1 -0
- package/dist/tools/query-llm-events.js +60 -0
- package/dist/tools/query-llm-events.js.map +1 -0
- package/dist/tools/query-llm-events.test.d.ts +5 -0
- package/dist/tools/query-llm-events.test.d.ts.map +1 -0
- package/dist/tools/query-llm-events.test.js +111 -0
- package/dist/tools/query-llm-events.test.js.map +1 -0
- package/dist/tools/query-logs.d.ts +15 -8
- package/dist/tools/query-logs.d.ts.map +1 -1
- package/dist/tools/query-logs.js +11 -10
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-logs.test.d.ts +5 -0
- package/dist/tools/query-logs.test.d.ts.map +1 -0
- package/dist/tools/query-logs.test.js +688 -0
- package/dist/tools/query-logs.test.js.map +1 -0
- package/dist/tools/query-metrics.d.ts +13 -15
- package/dist/tools/query-metrics.d.ts.map +1 -1
- package/dist/tools/query-metrics.js +12 -13
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-metrics.test.d.ts +5 -0
- package/dist/tools/query-metrics.test.d.ts.map +1 -0
- package/dist/tools/query-metrics.test.js +597 -0
- package/dist/tools/query-metrics.test.js.map +1 -0
- package/dist/tools/query-traces.d.ts +19 -14
- package/dist/tools/query-traces.d.ts.map +1 -1
- package/dist/tools/query-traces.js +14 -14
- package/dist/tools/query-traces.js.map +1 -1
- package/dist/tools/query-traces.test.d.ts +5 -0
- package/dist/tools/query-traces.test.d.ts.map +1 -0
- package/dist/tools/query-traces.test.js +643 -0
- package/dist/tools/query-traces.test.js.map +1 -0
- package/dist/tools/setup-claudeignore.d.ts +36 -10
- package/dist/tools/setup-claudeignore.d.ts.map +1 -1
- package/dist/tools/setup-claudeignore.js +193 -33
- package/dist/tools/setup-claudeignore.js.map +1 -1
- package/dist/tools/setup-claudeignore.test.d.ts +2 -0
- package/dist/tools/setup-claudeignore.test.d.ts.map +1 -0
- package/dist/tools/setup-claudeignore.test.js +481 -0
- package/dist/tools/setup-claudeignore.test.js.map +1 -0
- package/dist/tools/signoz.integration.test.d.ts +8 -0
- package/dist/tools/signoz.integration.test.d.ts.map +1 -0
- package/dist/tools/signoz.integration.test.js +141 -0
- package/dist/tools/signoz.integration.test.js.map +1 -0
- package/package.json +6 -3
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for get-trace-url tool
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it } from 'node:test';
|
|
5
|
+
import assert from 'node:assert';
|
|
6
|
+
import { getTraceUrlSchema } from './get-trace-url.js';
|
|
7
|
+
describe('getTraceUrl', () => {
|
|
8
|
+
describe('URL generation from trace IDs', () => {
|
|
9
|
+
// Store original env vars
|
|
10
|
+
const originalEnv = { ...process.env };
|
|
11
|
+
// Helper to set and reset env
|
|
12
|
+
const setEnv = (url) => {
|
|
13
|
+
if (url === undefined) {
|
|
14
|
+
delete process.env.SIGNOZ_URL;
|
|
15
|
+
delete process.env.OTEL_EXPORTER_OTLP_ENDPOINT;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
process.env.SIGNOZ_URL = url;
|
|
19
|
+
}
|
|
20
|
+
// Force reimport by clearing the module cache
|
|
21
|
+
delete require.cache[require.resolve('../lib/constants.js')];
|
|
22
|
+
};
|
|
23
|
+
const teardown = () => {
|
|
24
|
+
process.env = originalEnv;
|
|
25
|
+
delete require.cache[require.resolve('../lib/constants.js')];
|
|
26
|
+
};
|
|
27
|
+
it('should generate trace URL from cloud ingest endpoint', async () => {
|
|
28
|
+
// Mock the constants module
|
|
29
|
+
const mockGetTraceUrl = async (input) => {
|
|
30
|
+
const SIGNOZ_URL = 'https://ingest.us.signoz.cloud/v1/traces';
|
|
31
|
+
if (!SIGNOZ_URL) {
|
|
32
|
+
return {
|
|
33
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
let baseUrl = SIGNOZ_URL
|
|
37
|
+
.replace('/v1/traces', '')
|
|
38
|
+
.replace('/v1/metrics', '')
|
|
39
|
+
.replace('/v1/logs', '')
|
|
40
|
+
.replace('ingest.', '')
|
|
41
|
+
.replace(':4318', '')
|
|
42
|
+
.replace(':4317', '');
|
|
43
|
+
if (!baseUrl.startsWith('http')) {
|
|
44
|
+
baseUrl = `https://${baseUrl}`;
|
|
45
|
+
}
|
|
46
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
47
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
48
|
+
return {
|
|
49
|
+
traceId: input.traceId,
|
|
50
|
+
url: traceUrl,
|
|
51
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const result = await mockGetTraceUrl({ traceId: 'abc123xyz' });
|
|
55
|
+
assert.strictEqual(result.traceId, 'abc123xyz');
|
|
56
|
+
assert.strictEqual(result.url, 'https://us.signoz.cloud/trace/abc123xyz');
|
|
57
|
+
assert.ok(result.message.includes('SigNoz'));
|
|
58
|
+
});
|
|
59
|
+
it('should handle localhost endpoint with port 4318', async () => {
|
|
60
|
+
const mockGetTraceUrl = async (input) => {
|
|
61
|
+
const SIGNOZ_URL = 'http://localhost:4318/v1/traces';
|
|
62
|
+
if (!SIGNOZ_URL) {
|
|
63
|
+
return {
|
|
64
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
let baseUrl = SIGNOZ_URL
|
|
68
|
+
.replace('/v1/traces', '')
|
|
69
|
+
.replace('/v1/metrics', '')
|
|
70
|
+
.replace('/v1/logs', '')
|
|
71
|
+
.replace('ingest.', '')
|
|
72
|
+
.replace(':4318', '')
|
|
73
|
+
.replace(':4317', '');
|
|
74
|
+
if (!baseUrl.startsWith('http')) {
|
|
75
|
+
baseUrl = `https://${baseUrl}`;
|
|
76
|
+
}
|
|
77
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
78
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
79
|
+
return {
|
|
80
|
+
traceId: input.traceId,
|
|
81
|
+
url: traceUrl,
|
|
82
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
const result = await mockGetTraceUrl({ traceId: 'trace-123' });
|
|
86
|
+
assert.strictEqual(result.url, 'http://localhost/trace/trace-123');
|
|
87
|
+
});
|
|
88
|
+
it('should handle localhost endpoint with port 4317', async () => {
|
|
89
|
+
const mockGetTraceUrl = async (input) => {
|
|
90
|
+
const SIGNOZ_URL = 'http://localhost:4317/v1/traces';
|
|
91
|
+
if (!SIGNOZ_URL) {
|
|
92
|
+
return {
|
|
93
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
let baseUrl = SIGNOZ_URL
|
|
97
|
+
.replace('/v1/traces', '')
|
|
98
|
+
.replace('/v1/metrics', '')
|
|
99
|
+
.replace('/v1/logs', '')
|
|
100
|
+
.replace('ingest.', '')
|
|
101
|
+
.replace(':4318', '')
|
|
102
|
+
.replace(':4317', '');
|
|
103
|
+
if (!baseUrl.startsWith('http')) {
|
|
104
|
+
baseUrl = `https://${baseUrl}`;
|
|
105
|
+
}
|
|
106
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
107
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
108
|
+
return {
|
|
109
|
+
traceId: input.traceId,
|
|
110
|
+
url: traceUrl,
|
|
111
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
const result = await mockGetTraceUrl({ traceId: 'test-trace-456' });
|
|
115
|
+
assert.strictEqual(result.url, 'http://localhost/trace/test-trace-456');
|
|
116
|
+
});
|
|
117
|
+
it('should strip trailing slashes from base URL', async () => {
|
|
118
|
+
const mockGetTraceUrl = async (input) => {
|
|
119
|
+
const SIGNOZ_URL = 'https://us.signoz.cloud////';
|
|
120
|
+
if (!SIGNOZ_URL) {
|
|
121
|
+
return {
|
|
122
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
let baseUrl = SIGNOZ_URL
|
|
126
|
+
.replace('/v1/traces', '')
|
|
127
|
+
.replace('/v1/metrics', '')
|
|
128
|
+
.replace('/v1/logs', '')
|
|
129
|
+
.replace('ingest.', '')
|
|
130
|
+
.replace(':4318', '')
|
|
131
|
+
.replace(':4317', '');
|
|
132
|
+
if (!baseUrl.startsWith('http')) {
|
|
133
|
+
baseUrl = `https://${baseUrl}`;
|
|
134
|
+
}
|
|
135
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
136
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
137
|
+
return {
|
|
138
|
+
traceId: input.traceId,
|
|
139
|
+
url: traceUrl,
|
|
140
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
const result = await mockGetTraceUrl({ traceId: 'xyz789' });
|
|
144
|
+
assert.strictEqual(result.url, 'https://us.signoz.cloud/trace/xyz789');
|
|
145
|
+
assert.ok(!result.url.includes('//trace'));
|
|
146
|
+
});
|
|
147
|
+
it('should handle v1/metrics endpoint', async () => {
|
|
148
|
+
const mockGetTraceUrl = async (input) => {
|
|
149
|
+
const SIGNOZ_URL = 'https://ingest.eu.signoz.cloud/v1/metrics';
|
|
150
|
+
if (!SIGNOZ_URL) {
|
|
151
|
+
return {
|
|
152
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
let baseUrl = SIGNOZ_URL
|
|
156
|
+
.replace('/v1/traces', '')
|
|
157
|
+
.replace('/v1/metrics', '')
|
|
158
|
+
.replace('/v1/logs', '')
|
|
159
|
+
.replace('ingest.', '')
|
|
160
|
+
.replace(':4318', '')
|
|
161
|
+
.replace(':4317', '');
|
|
162
|
+
if (!baseUrl.startsWith('http')) {
|
|
163
|
+
baseUrl = `https://${baseUrl}`;
|
|
164
|
+
}
|
|
165
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
166
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
167
|
+
return {
|
|
168
|
+
traceId: input.traceId,
|
|
169
|
+
url: traceUrl,
|
|
170
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
const result = await mockGetTraceUrl({ traceId: 'eu-trace-123' });
|
|
174
|
+
assert.strictEqual(result.url, 'https://eu.signoz.cloud/trace/eu-trace-123');
|
|
175
|
+
});
|
|
176
|
+
it('should handle v1/logs endpoint', async () => {
|
|
177
|
+
const mockGetTraceUrl = async (input) => {
|
|
178
|
+
const SIGNOZ_URL = 'https://ingest.ap.signoz.cloud/v1/logs';
|
|
179
|
+
if (!SIGNOZ_URL) {
|
|
180
|
+
return {
|
|
181
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
let baseUrl = SIGNOZ_URL
|
|
185
|
+
.replace('/v1/traces', '')
|
|
186
|
+
.replace('/v1/metrics', '')
|
|
187
|
+
.replace('/v1/logs', '')
|
|
188
|
+
.replace('ingest.', '')
|
|
189
|
+
.replace(':4318', '')
|
|
190
|
+
.replace(':4317', '');
|
|
191
|
+
if (!baseUrl.startsWith('http')) {
|
|
192
|
+
baseUrl = `https://${baseUrl}`;
|
|
193
|
+
}
|
|
194
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
195
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
196
|
+
return {
|
|
197
|
+
traceId: input.traceId,
|
|
198
|
+
url: traceUrl,
|
|
199
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
200
|
+
};
|
|
201
|
+
};
|
|
202
|
+
const result = await mockGetTraceUrl({ traceId: 'ap-trace-456' });
|
|
203
|
+
assert.strictEqual(result.url, 'https://ap.signoz.cloud/trace/ap-trace-456');
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
describe('environment variable handling for SigNoz base URL', () => {
|
|
207
|
+
it('should use SIGNOZ_URL when set', async () => {
|
|
208
|
+
const mockGetTraceUrl = async (input) => {
|
|
209
|
+
const SIGNOZ_URL = 'https://custom.domain.com/v1/traces';
|
|
210
|
+
if (!SIGNOZ_URL) {
|
|
211
|
+
return {
|
|
212
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
let baseUrl = SIGNOZ_URL
|
|
216
|
+
.replace('/v1/traces', '')
|
|
217
|
+
.replace('/v1/metrics', '')
|
|
218
|
+
.replace('/v1/logs', '')
|
|
219
|
+
.replace('ingest.', '')
|
|
220
|
+
.replace(':4318', '')
|
|
221
|
+
.replace(':4317', '');
|
|
222
|
+
if (!baseUrl.startsWith('http')) {
|
|
223
|
+
baseUrl = `https://${baseUrl}`;
|
|
224
|
+
}
|
|
225
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
226
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
227
|
+
return {
|
|
228
|
+
traceId: input.traceId,
|
|
229
|
+
url: traceUrl,
|
|
230
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
const result = await mockGetTraceUrl({ traceId: 'test-123' });
|
|
234
|
+
assert.ok(result.url);
|
|
235
|
+
assert.ok(result.url.includes('custom.domain.com'));
|
|
236
|
+
});
|
|
237
|
+
it('should use OTEL_EXPORTER_OTLP_ENDPOINT as fallback', async () => {
|
|
238
|
+
const mockGetTraceUrl = async (input) => {
|
|
239
|
+
const SIGNOZ_URL = 'http://localhost:4318/v1/traces';
|
|
240
|
+
if (!SIGNOZ_URL) {
|
|
241
|
+
return {
|
|
242
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
let baseUrl = SIGNOZ_URL
|
|
246
|
+
.replace('/v1/traces', '')
|
|
247
|
+
.replace('/v1/metrics', '')
|
|
248
|
+
.replace('/v1/logs', '')
|
|
249
|
+
.replace('ingest.', '')
|
|
250
|
+
.replace(':4318', '')
|
|
251
|
+
.replace(':4317', '');
|
|
252
|
+
if (!baseUrl.startsWith('http')) {
|
|
253
|
+
baseUrl = `https://${baseUrl}`;
|
|
254
|
+
}
|
|
255
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
256
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
257
|
+
return {
|
|
258
|
+
traceId: input.traceId,
|
|
259
|
+
url: traceUrl,
|
|
260
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
const result = await mockGetTraceUrl({ traceId: 'fallback-trace' });
|
|
264
|
+
assert.ok(result.url);
|
|
265
|
+
assert.ok('url' in result && !result.url.includes('undefined'));
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
describe('error cases for missing config', () => {
|
|
269
|
+
it('should return error when SIGNOZ_URL is not configured', async () => {
|
|
270
|
+
const mockGetTraceUrl = async (input) => {
|
|
271
|
+
const SIGNOZ_URL = '';
|
|
272
|
+
if (!SIGNOZ_URL) {
|
|
273
|
+
return {
|
|
274
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
let baseUrl = SIGNOZ_URL
|
|
278
|
+
.replace('/v1/traces', '')
|
|
279
|
+
.replace('/v1/metrics', '')
|
|
280
|
+
.replace('/v1/logs', '')
|
|
281
|
+
.replace('ingest.', '')
|
|
282
|
+
.replace(':4318', '')
|
|
283
|
+
.replace(':4317', '');
|
|
284
|
+
if (!baseUrl.startsWith('http')) {
|
|
285
|
+
baseUrl = `https://${baseUrl}`;
|
|
286
|
+
}
|
|
287
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
288
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
289
|
+
return {
|
|
290
|
+
traceId: input.traceId,
|
|
291
|
+
url: traceUrl,
|
|
292
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
const result = await mockGetTraceUrl({ traceId: 'any-trace-id' });
|
|
296
|
+
assert.ok('error' in result);
|
|
297
|
+
assert.strictEqual(result.error, 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.');
|
|
298
|
+
assert.ok(!('url' in result));
|
|
299
|
+
});
|
|
300
|
+
it('should return error with helpful message mentioning both env vars', async () => {
|
|
301
|
+
const mockGetTraceUrl = async (input) => {
|
|
302
|
+
const SIGNOZ_URL = '';
|
|
303
|
+
if (!SIGNOZ_URL) {
|
|
304
|
+
return {
|
|
305
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
let baseUrl = SIGNOZ_URL
|
|
309
|
+
.replace('/v1/traces', '')
|
|
310
|
+
.replace('/v1/metrics', '')
|
|
311
|
+
.replace('/v1/logs', '')
|
|
312
|
+
.replace('ingest.', '')
|
|
313
|
+
.replace(':4318', '')
|
|
314
|
+
.replace(':4317', '');
|
|
315
|
+
if (!baseUrl.startsWith('http')) {
|
|
316
|
+
baseUrl = `https://${baseUrl}`;
|
|
317
|
+
}
|
|
318
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
319
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
320
|
+
return {
|
|
321
|
+
traceId: input.traceId,
|
|
322
|
+
url: traceUrl,
|
|
323
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
324
|
+
};
|
|
325
|
+
};
|
|
326
|
+
const result = await mockGetTraceUrl({ traceId: 'test-id' });
|
|
327
|
+
assert.ok(result.error);
|
|
328
|
+
assert.ok(result.error.includes('SIGNOZ_URL'));
|
|
329
|
+
assert.ok(result.error.includes('OTEL_EXPORTER_OTLP_ENDPOINT'));
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
describe('schema validation', () => {
|
|
333
|
+
it('should validate traceId is valid hex format', async () => {
|
|
334
|
+
// Valid 32-char hex trace ID
|
|
335
|
+
const validInput = { traceId: 'abcdef1234567890abcdef1234567890' };
|
|
336
|
+
const result = getTraceUrlSchema.safeParse(validInput);
|
|
337
|
+
assert.ok(result.success);
|
|
338
|
+
});
|
|
339
|
+
it('should accept 16-char hex trace ID', async () => {
|
|
340
|
+
const validInput = { traceId: 'abcdef1234567890' };
|
|
341
|
+
const result = getTraceUrlSchema.safeParse(validInput);
|
|
342
|
+
assert.ok(result.success);
|
|
343
|
+
});
|
|
344
|
+
it('should reject input without traceId', async () => {
|
|
345
|
+
const invalidInput = {};
|
|
346
|
+
const result = getTraceUrlSchema.safeParse(invalidInput);
|
|
347
|
+
assert.ok(!result.success);
|
|
348
|
+
});
|
|
349
|
+
it('should reject non-string traceId', async () => {
|
|
350
|
+
const invalidInput = { traceId: 12345 };
|
|
351
|
+
const result = getTraceUrlSchema.safeParse(invalidInput);
|
|
352
|
+
assert.ok(!result.success);
|
|
353
|
+
});
|
|
354
|
+
it('should reject empty string traceId (security: must be valid hex)', async () => {
|
|
355
|
+
const input = { traceId: '' };
|
|
356
|
+
const result = getTraceUrlSchema.safeParse(input);
|
|
357
|
+
assert.ok(!result.success);
|
|
358
|
+
});
|
|
359
|
+
it('should reject traceId with special characters (security: must be hex only)', async () => {
|
|
360
|
+
const input = { traceId: 'trace-id-with-dashes_and_underscores.and.dots' };
|
|
361
|
+
const result = getTraceUrlSchema.safeParse(input);
|
|
362
|
+
assert.ok(!result.success);
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
describe('response format', () => {
|
|
366
|
+
it('should return object with traceId, url, and message on success', async () => {
|
|
367
|
+
const mockGetTraceUrl = async (input) => {
|
|
368
|
+
const SIGNOZ_URL = 'https://us.signoz.cloud';
|
|
369
|
+
if (!SIGNOZ_URL) {
|
|
370
|
+
return {
|
|
371
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
let baseUrl = SIGNOZ_URL
|
|
375
|
+
.replace('/v1/traces', '')
|
|
376
|
+
.replace('/v1/metrics', '')
|
|
377
|
+
.replace('/v1/logs', '')
|
|
378
|
+
.replace('ingest.', '')
|
|
379
|
+
.replace(':4318', '')
|
|
380
|
+
.replace(':4317', '');
|
|
381
|
+
if (!baseUrl.startsWith('http')) {
|
|
382
|
+
baseUrl = `https://${baseUrl}`;
|
|
383
|
+
}
|
|
384
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
385
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
386
|
+
return {
|
|
387
|
+
traceId: input.traceId,
|
|
388
|
+
url: traceUrl,
|
|
389
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
390
|
+
};
|
|
391
|
+
};
|
|
392
|
+
const result = await mockGetTraceUrl({ traceId: 'test-123' });
|
|
393
|
+
assert.ok('traceId' in result);
|
|
394
|
+
assert.ok('url' in result);
|
|
395
|
+
assert.ok('message' in result);
|
|
396
|
+
assert.strictEqual(result.traceId, 'test-123');
|
|
397
|
+
});
|
|
398
|
+
it('should return object with error on missing config', async () => {
|
|
399
|
+
const mockGetTraceUrl = async (input) => {
|
|
400
|
+
const SIGNOZ_URL = '';
|
|
401
|
+
if (!SIGNOZ_URL) {
|
|
402
|
+
return {
|
|
403
|
+
error: 'SigNoz URL not configured. Set SIGNOZ_URL or OTEL_EXPORTER_OTLP_ENDPOINT environment variable.',
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
let baseUrl = SIGNOZ_URL
|
|
407
|
+
.replace('/v1/traces', '')
|
|
408
|
+
.replace('/v1/metrics', '')
|
|
409
|
+
.replace('/v1/logs', '')
|
|
410
|
+
.replace('ingest.', '')
|
|
411
|
+
.replace(':4318', '')
|
|
412
|
+
.replace(':4317', '');
|
|
413
|
+
if (!baseUrl.startsWith('http')) {
|
|
414
|
+
baseUrl = `https://${baseUrl}`;
|
|
415
|
+
}
|
|
416
|
+
baseUrl = baseUrl.replace(/\/+$/, '');
|
|
417
|
+
const traceUrl = `${baseUrl}/trace/${input.traceId}`;
|
|
418
|
+
return {
|
|
419
|
+
traceId: input.traceId,
|
|
420
|
+
url: traceUrl,
|
|
421
|
+
message: `Open this URL in your browser to view the trace in SigNoz`,
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
const result = await mockGetTraceUrl({ traceId: 'test-123' });
|
|
425
|
+
assert.ok('error' in result);
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
});
|
|
429
|
+
//# sourceMappingURL=get-trace-url.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-trace-url.test.js","sourceRoot":"","sources":["../../src/tools/get-trace-url.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,13 +16,21 @@ interface FileStats {
|
|
|
16
16
|
modified: string;
|
|
17
17
|
lines?: number;
|
|
18
18
|
}
|
|
19
|
+
interface DirectoryInfo {
|
|
20
|
+
path: string;
|
|
21
|
+
source: 'global' | 'local';
|
|
22
|
+
status: string;
|
|
23
|
+
files?: FileStats[];
|
|
24
|
+
}
|
|
19
25
|
export declare function healthCheck(input: HealthCheckInput): Promise<{
|
|
20
26
|
status: "healthy" | "degraded" | "unhealthy";
|
|
21
27
|
backends: {
|
|
22
28
|
local: {
|
|
23
29
|
status: string;
|
|
24
30
|
message?: string;
|
|
25
|
-
|
|
31
|
+
directories: DirectoryInfo[];
|
|
32
|
+
totalFiles?: number;
|
|
33
|
+
totalSize?: string;
|
|
26
34
|
};
|
|
27
35
|
signoz: {
|
|
28
36
|
status: string;
|
|
@@ -30,7 +38,6 @@ export declare function healthCheck(input: HealthCheckInput): Promise<{
|
|
|
30
38
|
configured: boolean;
|
|
31
39
|
};
|
|
32
40
|
};
|
|
33
|
-
telemetryDir: string;
|
|
34
41
|
today: string;
|
|
35
42
|
summary?: string;
|
|
36
43
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;YAE7C,SAAS,GAAG,UAAU,GAAG,WAAW;cAClC;QACR,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"health-check.d.ts","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAqBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB;YAE7C,SAAS,GAAG,UAAU,GAAG,WAAW;cAClC;QACR,KAAK,EAAE;YACL,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,WAAW,EAAE,aAAa,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAA;SAAE,CAAC;KACnE;WACM,MAAM;cACH,MAAM;GAsHnB;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;CAK3B,CAAC"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { existsSync, readdirSync, statSync } from 'fs';
|
|
6
6
|
import { join } from 'path';
|
|
7
|
-
import {
|
|
7
|
+
import { MultiDirectoryBackend } from '../backends/local-jsonl.js';
|
|
8
8
|
import { SigNozApiBackend } from '../backends/signoz-api.js';
|
|
9
|
-
import {
|
|
9
|
+
import { SIGNOZ_URL, SIGNOZ_API_KEY } from '../lib/constants.js';
|
|
10
10
|
import { getDateString } from '../lib/file-utils.js';
|
|
11
11
|
export const healthCheckSchema = z.object({
|
|
12
12
|
verbose: z.boolean().default(false).describe('Include detailed file information'),
|
|
@@ -35,33 +35,67 @@ export async function healthCheck(input) {
|
|
|
35
35
|
const result = {
|
|
36
36
|
status: 'healthy',
|
|
37
37
|
backends: {
|
|
38
|
-
local: { status: 'unknown' },
|
|
38
|
+
local: { status: 'unknown', directories: [] },
|
|
39
39
|
signoz: { status: 'unknown', configured: false },
|
|
40
40
|
},
|
|
41
|
-
telemetryDir: TELEMETRY_DIR,
|
|
42
41
|
today: getDateString(),
|
|
43
42
|
};
|
|
44
|
-
// Check local backend
|
|
45
|
-
const local = new
|
|
43
|
+
// Check local backend (now multi-directory)
|
|
44
|
+
const local = new MultiDirectoryBackend();
|
|
46
45
|
const localHealth = await local.healthCheck();
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
const directories = local.getDirectories();
|
|
47
|
+
let totalFiles = 0;
|
|
48
|
+
let totalSize = 0;
|
|
49
|
+
// Get detailed info for each directory
|
|
50
|
+
for (const dir of directories) {
|
|
51
|
+
const dirInfo = {
|
|
52
|
+
path: dir.path,
|
|
53
|
+
source: dir.source,
|
|
54
|
+
status: 'ok',
|
|
55
|
+
};
|
|
56
|
+
if (input.verbose && existsSync(dir.path)) {
|
|
57
|
+
try {
|
|
58
|
+
// Use bounded insertion to keep only top 10 files by mtime (efficient for large dirs)
|
|
59
|
+
const topFiles = [];
|
|
60
|
+
const filenames = readdirSync(dir.path);
|
|
61
|
+
for (const filename of filenames) {
|
|
62
|
+
if (!filename.endsWith('.jsonl'))
|
|
63
|
+
continue;
|
|
64
|
+
const stats = getFileStats(join(dir.path, filename));
|
|
65
|
+
if (!stats)
|
|
66
|
+
continue;
|
|
67
|
+
// Insert into sorted array, keeping only top 10
|
|
68
|
+
const mtime = new Date(stats.modified).getTime();
|
|
69
|
+
let inserted = false;
|
|
70
|
+
for (let i = 0; i < topFiles.length; i++) {
|
|
71
|
+
if (mtime > new Date(topFiles[i].modified).getTime()) {
|
|
72
|
+
topFiles.splice(i, 0, stats);
|
|
73
|
+
inserted = true;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!inserted && topFiles.length < 10) {
|
|
78
|
+
topFiles.push(stats);
|
|
79
|
+
}
|
|
80
|
+
if (topFiles.length > 10) {
|
|
81
|
+
topFiles.pop();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
dirInfo.files = topFiles;
|
|
85
|
+
totalFiles += topFiles.length;
|
|
86
|
+
totalSize += topFiles.reduce((sum, f) => sum + f.size, 0);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
dirInfo.status = 'error';
|
|
90
|
+
}
|
|
64
91
|
}
|
|
92
|
+
result.backends.local.directories.push(dirInfo);
|
|
93
|
+
}
|
|
94
|
+
result.backends.local.status = localHealth.status;
|
|
95
|
+
result.backends.local.message = localHealth.message;
|
|
96
|
+
if (input.verbose) {
|
|
97
|
+
result.backends.local.totalFiles = totalFiles;
|
|
98
|
+
result.backends.local.totalSize = formatBytes(totalSize);
|
|
65
99
|
}
|
|
66
100
|
// Check SigNoz backend
|
|
67
101
|
if (SIGNOZ_URL && SIGNOZ_API_KEY) {
|
|
@@ -84,11 +118,16 @@ export async function healthCheck(input) {
|
|
|
84
118
|
}
|
|
85
119
|
// Build summary
|
|
86
120
|
const parts = [];
|
|
121
|
+
const dirCount = result.backends.local.directories.length;
|
|
122
|
+
const globalDirs = result.backends.local.directories.filter(d => d.source === 'global').length;
|
|
123
|
+
const localDirs = result.backends.local.directories.filter(d => d.source === 'local').length;
|
|
87
124
|
if (result.backends.local.status === 'ok') {
|
|
88
|
-
parts.push(
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
|
|
125
|
+
parts.push(`Local: ${dirCount} dir${dirCount !== 1 ? 's' : ''}`);
|
|
126
|
+
if (globalDirs > 0 && localDirs > 0) {
|
|
127
|
+
parts.push(`(${globalDirs} global, ${localDirs} project)`);
|
|
128
|
+
}
|
|
129
|
+
if (input.verbose && totalFiles > 0) {
|
|
130
|
+
parts.push(`${totalFiles} files, ${formatBytes(totalSize)}`);
|
|
92
131
|
}
|
|
93
132
|
}
|
|
94
133
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/tools/health-check.ts"],"names":[],"mappings":"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"}
|