observability-toolkit 1.0.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.
Files changed (54) hide show
  1. package/README.md +107 -0
  2. package/dist/backends/index.d.ts +72 -0
  3. package/dist/backends/index.d.ts.map +1 -0
  4. package/dist/backends/index.js +5 -0
  5. package/dist/backends/index.js.map +1 -0
  6. package/dist/backends/local-jsonl.d.ts +21 -0
  7. package/dist/backends/local-jsonl.d.ts.map +1 -0
  8. package/dist/backends/local-jsonl.js +281 -0
  9. package/dist/backends/local-jsonl.js.map +1 -0
  10. package/dist/backends/signoz-api.d.ts +28 -0
  11. package/dist/backends/signoz-api.d.ts.map +1 -0
  12. package/dist/backends/signoz-api.js +293 -0
  13. package/dist/backends/signoz-api.js.map +1 -0
  14. package/dist/lib/constants.d.ts +21 -0
  15. package/dist/lib/constants.d.ts.map +1 -0
  16. package/dist/lib/constants.js +30 -0
  17. package/dist/lib/constants.js.map +1 -0
  18. package/dist/lib/file-utils.d.ts +38 -0
  19. package/dist/lib/file-utils.d.ts.map +1 -0
  20. package/dist/lib/file-utils.js +129 -0
  21. package/dist/lib/file-utils.js.map +1 -0
  22. package/dist/server.d.ts +11 -0
  23. package/dist/server.d.ts.map +1 -0
  24. package/dist/server.js +140 -0
  25. package/dist/server.js.map +1 -0
  26. package/dist/tools/context-stats.d.ts +81 -0
  27. package/dist/tools/context-stats.d.ts.map +1 -0
  28. package/dist/tools/context-stats.js +213 -0
  29. package/dist/tools/context-stats.js.map +1 -0
  30. package/dist/tools/get-trace-url.d.ts +36 -0
  31. package/dist/tools/get-trace-url.d.ts.map +1 -0
  32. package/dist/tools/get-trace-url.js +43 -0
  33. package/dist/tools/get-trace-url.js.map +1 -0
  34. package/dist/tools/health-check.d.ts +50 -0
  35. package/dist/tools/health-check.d.ts.map +1 -0
  36. package/dist/tools/health-check.js +109 -0
  37. package/dist/tools/health-check.js.map +1 -0
  38. package/dist/tools/index.d.ts +10 -0
  39. package/dist/tools/index.d.ts.map +1 -0
  40. package/dist/tools/index.js +10 -0
  41. package/dist/tools/index.js.map +1 -0
  42. package/dist/tools/query-logs.d.ts +82 -0
  43. package/dist/tools/query-logs.d.ts.map +1 -0
  44. package/dist/tools/query-logs.js +86 -0
  45. package/dist/tools/query-logs.js.map +1 -0
  46. package/dist/tools/query-metrics.d.ts +96 -0
  47. package/dist/tools/query-metrics.d.ts.map +1 -0
  48. package/dist/tools/query-metrics.js +85 -0
  49. package/dist/tools/query-metrics.js.map +1 -0
  50. package/dist/tools/query-traces.d.ts +95 -0
  51. package/dist/tools/query-traces.d.ts.map +1 -0
  52. package/dist/tools/query-traces.js +83 -0
  53. package/dist/tools/query-traces.js.map +1 -0
  54. package/package.json +43 -0
package/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # @alyshia/observability-toolkit
2
+
3
+ MCP server for observability tooling - query traces, metrics, and logs from local JSONL files or SigNoz Cloud for Claude Code sessions.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ claude mcp add observability-toolkit -- npx -y @alyshia/observability-toolkit
9
+ ```
10
+
11
+ Or for local development:
12
+
13
+ ```bash
14
+ claude mcp add observability-toolkit -- node ~/.claude/mcp-servers/observability-toolkit/dist/server.js
15
+ ```
16
+
17
+ ## Tools
18
+
19
+ | Tool | Description |
20
+ |------|-------------|
21
+ | `obs_query_traces` | Query traces from local JSONL or SigNoz |
22
+ | `obs_query_metrics` | Query metrics with aggregation support |
23
+ | `obs_query_logs` | Query logs by severity, search text, trace ID |
24
+ | `obs_health_check` | Check telemetry system health |
25
+ | `obs_context_stats` | Get context window utilization stats |
26
+ | `obs_get_trace_url` | Get SigNoz trace viewer URL |
27
+
28
+ ## Configuration
29
+
30
+ Environment variables:
31
+
32
+ - `TELEMETRY_DIR` - Local telemetry directory (default: `~/.claude/telemetry`)
33
+ - `SIGNOZ_URL` - SigNoz instance URL (e.g., `https://ingest.us.signoz.cloud`)
34
+ - `SIGNOZ_API_KEY` - SigNoz API key for authentication
35
+
36
+ ## Usage Examples
37
+
38
+ ### Query traces
39
+
40
+ ```
41
+ obs_query_traces({ backend: "local", limit: 10 })
42
+ obs_query_traces({ traceId: "abc123..." })
43
+ obs_query_traces({ serviceName: "claude-code", minDurationMs: 100 })
44
+ ```
45
+
46
+ ### Query logs
47
+
48
+ ```
49
+ obs_query_logs({ severity: "ERROR", limit: 20 })
50
+ obs_query_logs({ search: "timeout", startDate: "2026-01-28" })
51
+ obs_query_logs({ traceId: "abc123..." })
52
+ ```
53
+
54
+ ### Query metrics
55
+
56
+ ```
57
+ obs_query_metrics({ metricName: "session.context.size" })
58
+ obs_query_metrics({ metricName: "gen_ai.client.token.usage", aggregation: "sum" })
59
+ ```
60
+
61
+ ### Health check
62
+
63
+ ```
64
+ obs_health_check({ verbose: true })
65
+ ```
66
+
67
+ ### Context stats
68
+
69
+ ```
70
+ obs_context_stats({})
71
+ obs_context_stats({ sessionId: "abc123...", includeCost: true })
72
+ ```
73
+
74
+ ### Get trace URL
75
+
76
+ ```
77
+ obs_get_trace_url({ traceId: "abc123..." })
78
+ ```
79
+
80
+ ## Data Sources
81
+
82
+ ### Local JSONL
83
+
84
+ Reads telemetry data from `~/.claude/telemetry/`:
85
+ - `traces-YYYY-MM-DD.jsonl` - Trace spans
86
+ - `logs-YYYY-MM-DD.jsonl` - Log records
87
+ - `metrics-YYYY-MM-DD.jsonl` - Metric data points
88
+
89
+ ### SigNoz Cloud
90
+
91
+ Queries SigNoz Cloud API when configured:
92
+ - Traces: `/api/v3/traces`
93
+ - Logs: `/api/v3/logs`
94
+ - Metrics: `/api/v3/query_range`
95
+
96
+ ## Development
97
+
98
+ ```bash
99
+ cd ~/.claude/mcp-servers/observability-toolkit
100
+ npm install
101
+ npm run build
102
+ npm run start
103
+ ```
104
+
105
+ ## License
106
+
107
+ MIT
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Backend interface for telemetry data sources
3
+ */
4
+ export interface TraceSpan {
5
+ traceId: string;
6
+ spanId: string;
7
+ parentSpanId?: string;
8
+ name: string;
9
+ kind?: string;
10
+ startTimeUnixNano: number;
11
+ endTimeUnixNano?: number;
12
+ durationMs?: number;
13
+ status?: {
14
+ code: number;
15
+ message?: string;
16
+ };
17
+ attributes?: Record<string, unknown>;
18
+ events?: Array<{
19
+ name: string;
20
+ timestamp: number;
21
+ attributes?: Record<string, unknown>;
22
+ }>;
23
+ }
24
+ export interface LogRecord {
25
+ timestamp: string;
26
+ severity: string;
27
+ body: string;
28
+ traceId?: string;
29
+ spanId?: string;
30
+ attributes?: Record<string, unknown>;
31
+ }
32
+ export interface MetricDataPoint {
33
+ timestamp: string;
34
+ name: string;
35
+ value: number;
36
+ unit?: string;
37
+ attributes?: Record<string, unknown>;
38
+ }
39
+ export interface QueryOptions {
40
+ startDate?: string;
41
+ endDate?: string;
42
+ limit?: number;
43
+ offset?: number;
44
+ }
45
+ export interface TraceQueryOptions extends QueryOptions {
46
+ traceId?: string;
47
+ serviceName?: string;
48
+ spanName?: string;
49
+ minDurationMs?: number;
50
+ maxDurationMs?: number;
51
+ }
52
+ export interface LogQueryOptions extends QueryOptions {
53
+ severity?: string;
54
+ search?: string;
55
+ traceId?: string;
56
+ }
57
+ export interface MetricQueryOptions extends QueryOptions {
58
+ metricName?: string;
59
+ aggregation?: 'sum' | 'avg' | 'min' | 'max' | 'count';
60
+ groupBy?: string[];
61
+ }
62
+ export interface TelemetryBackend {
63
+ name: string;
64
+ queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
65
+ queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
66
+ queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
67
+ healthCheck(): Promise<{
68
+ status: 'ok' | 'error';
69
+ message?: string;
70
+ }>;
71
+ }
72
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1D,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtE,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Backend interface for telemetry data sources
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Local JSONL backend for reading telemetry data from ~/.claude/telemetry/
3
+ *
4
+ * The local telemetry files use a flat JSONL format where each line is a complete
5
+ * span or log record, not the batched OpenTelemetry export format.
6
+ */
7
+ import { TelemetryBackend, TraceSpan, LogRecord, MetricDataPoint, TraceQueryOptions, LogQueryOptions, MetricQueryOptions } from './index.js';
8
+ export declare class LocalJsonlBackend implements TelemetryBackend {
9
+ name: string;
10
+ private telemetryDir;
11
+ constructor(telemetryDir?: string);
12
+ queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
13
+ queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
14
+ queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
15
+ private aggregate;
16
+ healthCheck(): Promise<{
17
+ status: 'ok' | 'error';
18
+ message?: string;
19
+ }>;
20
+ }
21
+ //# sourceMappingURL=local-jsonl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-jsonl.d.ts","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAwKpB,qBAAa,iBAAkB,YAAW,gBAAgB;IACxD,IAAI,SAAiB;IACrB,OAAO,CAAC,YAAY,CAAS;gBAEjB,YAAY,CAAC,EAAE,MAAM;IAI3B,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyC7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAoCzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAyC3E,OAAO,CAAC,SAAS;IAyDX,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAqB3E"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Local JSONL backend for reading telemetry data from ~/.claude/telemetry/
3
+ *
4
+ * The local telemetry files use a flat JSONL format where each line is a complete
5
+ * span or log record, not the batched OpenTelemetry export format.
6
+ */
7
+ import { join } from 'path';
8
+ import { TELEMETRY_DIR } from '../lib/constants.js';
9
+ import { listFiles, readJsonlSync, parseDateFromFilename, getDateString, } from '../lib/file-utils.js';
10
+ import { existsSync } from 'fs';
11
+ /**
12
+ * Convert flat span to normalized TraceSpan
13
+ */
14
+ function normalizeSpan(raw) {
15
+ if (!raw.traceId || !raw.spanId || !raw.name)
16
+ return null;
17
+ // Convert [seconds, nanoseconds] to nanoseconds
18
+ const startTimeUnixNano = raw.startTime
19
+ ? raw.startTime[0] * 1_000_000_000 + raw.startTime[1]
20
+ : 0;
21
+ const endTimeUnixNano = raw.endTime
22
+ ? raw.endTime[0] * 1_000_000_000 + raw.endTime[1]
23
+ : undefined;
24
+ // Calculate duration in ms
25
+ let durationMs;
26
+ if (raw.duration) {
27
+ durationMs = (raw.duration[0] * 1000) + (raw.duration[1] / 1_000_000);
28
+ }
29
+ else if (endTimeUnixNano) {
30
+ durationMs = (endTimeUnixNano - startTimeUnixNano) / 1_000_000;
31
+ }
32
+ // Add service name to attributes if present in resource
33
+ const attributes = { ...raw.attributes };
34
+ if (raw.resource?.serviceName) {
35
+ attributes['service.name'] = raw.resource.serviceName;
36
+ }
37
+ if (raw.resource?.serviceVersion) {
38
+ attributes['service.version'] = raw.resource.serviceVersion;
39
+ }
40
+ return {
41
+ traceId: raw.traceId,
42
+ spanId: raw.spanId,
43
+ parentSpanId: raw.parentSpanId,
44
+ name: raw.name,
45
+ kind: raw.kind !== undefined ? ['INTERNAL', 'SERVER', 'CLIENT', 'PRODUCER', 'CONSUMER'][raw.kind] : undefined,
46
+ startTimeUnixNano,
47
+ endTimeUnixNano,
48
+ durationMs,
49
+ status: raw.status?.code !== undefined ? { code: raw.status.code, message: raw.status.message } : undefined,
50
+ attributes,
51
+ };
52
+ }
53
+ /**
54
+ * Convert flat log to normalized LogRecord
55
+ */
56
+ function normalizeLog(raw) {
57
+ const attributes = { ...raw.attributes };
58
+ if (raw.resource?.serviceName) {
59
+ attributes['service.name'] = raw.resource.serviceName;
60
+ }
61
+ // Handle timestamp: either ISO string or [seconds, nanoseconds] array
62
+ let timestamp;
63
+ if (Array.isArray(raw.timestamp)) {
64
+ const ms = raw.timestamp[0] * 1000 + Math.floor(raw.timestamp[1] / 1_000_000);
65
+ timestamp = new Date(ms).toISOString();
66
+ }
67
+ else {
68
+ timestamp = raw.timestamp;
69
+ }
70
+ return {
71
+ timestamp,
72
+ severity: raw.severityText || raw.severity || 'INFO',
73
+ body: raw.body || '',
74
+ traceId: raw.traceId,
75
+ spanId: raw.spanId,
76
+ attributes,
77
+ };
78
+ }
79
+ /**
80
+ * Convert flat metric to normalized MetricDataPoint
81
+ */
82
+ function normalizeMetric(raw) {
83
+ const attributes = { ...raw.attributes };
84
+ if (raw.resource?.serviceName) {
85
+ attributes['service.name'] = raw.resource.serviceName;
86
+ }
87
+ return {
88
+ timestamp: raw.timestamp,
89
+ name: raw.name,
90
+ value: raw.value,
91
+ unit: raw.unit,
92
+ attributes,
93
+ };
94
+ }
95
+ /**
96
+ * Get files within date range
97
+ */
98
+ function getFilesInRange(dir, pattern, startDate, endDate) {
99
+ const files = listFiles(dir, pattern);
100
+ if (!startDate && !endDate) {
101
+ // Default to today only
102
+ const today = getDateString();
103
+ return files.filter(f => {
104
+ const date = parseDateFromFilename(f);
105
+ return date === today;
106
+ });
107
+ }
108
+ return files.filter(f => {
109
+ const date = parseDateFromFilename(f);
110
+ if (!date)
111
+ return false;
112
+ if (startDate && date < startDate)
113
+ return false;
114
+ if (endDate && date > endDate)
115
+ return false;
116
+ return true;
117
+ });
118
+ }
119
+ export class LocalJsonlBackend {
120
+ name = 'local-jsonl';
121
+ telemetryDir;
122
+ constructor(telemetryDir) {
123
+ this.telemetryDir = telemetryDir || TELEMETRY_DIR;
124
+ }
125
+ async queryTraces(options) {
126
+ const files = getFilesInRange(this.telemetryDir, /traces-\d{4}-\d{2}-\d{2}\.jsonl$/, options.startDate, options.endDate);
127
+ const results = [];
128
+ const limit = options.limit || 100;
129
+ const offset = options.offset || 0;
130
+ for (const file of files) {
131
+ // Read flat span records (one per line)
132
+ const spans = readJsonlSync(file);
133
+ for (const raw of spans) {
134
+ const span = normalizeSpan(raw);
135
+ if (!span)
136
+ continue;
137
+ // Apply filters
138
+ if (options.traceId && span.traceId !== options.traceId)
139
+ continue;
140
+ if (options.spanName && !span.name.includes(options.spanName))
141
+ continue;
142
+ if (options.minDurationMs && (span.durationMs || 0) < options.minDurationMs)
143
+ continue;
144
+ if (options.maxDurationMs && (span.durationMs || Infinity) > options.maxDurationMs)
145
+ continue;
146
+ if (options.serviceName) {
147
+ const svc = span.attributes?.['service.name'];
148
+ if (svc !== options.serviceName)
149
+ continue;
150
+ }
151
+ results.push(span);
152
+ if (results.length >= offset + limit) {
153
+ return results.slice(offset, offset + limit);
154
+ }
155
+ }
156
+ }
157
+ return results.slice(offset, offset + limit);
158
+ }
159
+ async queryLogs(options) {
160
+ const files = getFilesInRange(this.telemetryDir, /logs-\d{4}-\d{2}-\d{2}\.jsonl$/, options.startDate, options.endDate);
161
+ const results = [];
162
+ const limit = options.limit || 100;
163
+ const offset = options.offset || 0;
164
+ for (const file of files) {
165
+ // Read flat log records (one per line)
166
+ const logs = readJsonlSync(file);
167
+ for (const raw of logs) {
168
+ const log = normalizeLog(raw);
169
+ if (!log)
170
+ continue;
171
+ // Apply filters
172
+ if (options.severity && log.severity.toUpperCase() !== options.severity.toUpperCase())
173
+ continue;
174
+ if (options.traceId && log.traceId !== options.traceId)
175
+ continue;
176
+ if (options.search && !log.body.toLowerCase().includes(options.search.toLowerCase()))
177
+ continue;
178
+ results.push(log);
179
+ if (results.length >= offset + limit) {
180
+ return results.slice(offset, offset + limit);
181
+ }
182
+ }
183
+ }
184
+ return results.slice(offset, offset + limit);
185
+ }
186
+ async queryMetrics(options) {
187
+ const files = getFilesInRange(this.telemetryDir, /metrics-\d{4}-\d{2}-\d{2}\.jsonl$/, options.startDate, options.endDate);
188
+ const results = [];
189
+ const limit = options.limit || 100;
190
+ const offset = options.offset || 0;
191
+ for (const file of files) {
192
+ // Read flat metric records (one per line)
193
+ const metrics = readJsonlSync(file);
194
+ for (const raw of metrics) {
195
+ const point = normalizeMetric(raw);
196
+ if (!point)
197
+ continue;
198
+ // Apply filters
199
+ if (options.metricName && !point.name.includes(options.metricName))
200
+ continue;
201
+ results.push(point);
202
+ if (results.length >= offset + limit) {
203
+ break;
204
+ }
205
+ }
206
+ if (results.length >= offset + limit)
207
+ break;
208
+ }
209
+ // Apply aggregation if requested
210
+ if (options.aggregation && results.length > 0) {
211
+ return this.aggregate(results, options.aggregation, options.groupBy);
212
+ }
213
+ return results.slice(offset, offset + limit);
214
+ }
215
+ aggregate(points, aggregation, groupBy) {
216
+ // Group by metric name and optional attributes
217
+ const groups = new Map();
218
+ for (const point of points) {
219
+ let key = point.name;
220
+ if (groupBy) {
221
+ for (const attr of groupBy) {
222
+ const val = point.attributes?.[attr];
223
+ if (val !== undefined)
224
+ key += `|${attr}=${val}`;
225
+ }
226
+ }
227
+ const group = groups.get(key) || [];
228
+ group.push(point);
229
+ groups.set(key, group);
230
+ }
231
+ // Aggregate each group
232
+ const results = [];
233
+ for (const [, group] of groups) {
234
+ const values = group.map(p => p.value);
235
+ let value;
236
+ switch (aggregation) {
237
+ case 'sum':
238
+ value = values.reduce((a, b) => a + b, 0);
239
+ break;
240
+ case 'avg':
241
+ value = values.reduce((a, b) => a + b, 0) / values.length;
242
+ break;
243
+ case 'min':
244
+ value = Math.min(...values);
245
+ break;
246
+ case 'max':
247
+ value = Math.max(...values);
248
+ break;
249
+ case 'count':
250
+ value = values.length;
251
+ break;
252
+ }
253
+ results.push({
254
+ timestamp: group[group.length - 1].timestamp,
255
+ name: group[0].name,
256
+ value,
257
+ unit: group[0].unit,
258
+ attributes: group[0].attributes,
259
+ });
260
+ }
261
+ return results;
262
+ }
263
+ async healthCheck() {
264
+ if (!existsSync(this.telemetryDir)) {
265
+ return { status: 'error', message: `Telemetry directory not found: ${this.telemetryDir}` };
266
+ }
267
+ const today = getDateString();
268
+ const tracesFile = join(this.telemetryDir, `traces-${today}.jsonl`);
269
+ const logsFile = join(this.telemetryDir, `logs-${today}.jsonl`);
270
+ const hasTraces = existsSync(tracesFile);
271
+ const hasLogs = existsSync(logsFile);
272
+ if (!hasTraces && !hasLogs) {
273
+ return { status: 'ok', message: `No telemetry files for today (${today})` };
274
+ }
275
+ return {
276
+ status: 'ok',
277
+ message: `Found: ${hasTraces ? 'traces' : ''}${hasTraces && hasLogs ? ', ' : ''}${hasLogs ? 'logs' : ''} for ${today}`,
278
+ };
279
+ }
280
+ }
281
+ //# sourceMappingURL=local-jsonl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-jsonl.js","sourceRoot":"","sources":["../../src/backends/local-jsonl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * SigNoz Cloud API backend for querying traces, metrics, and logs
3
+ */
4
+ import { TelemetryBackend, TraceSpan, LogRecord, MetricDataPoint, TraceQueryOptions, LogQueryOptions, MetricQueryOptions } from './index.js';
5
+ export declare class SigNozApiBackend implements TelemetryBackend {
6
+ name: string;
7
+ private baseUrl;
8
+ private apiKey;
9
+ private circuitBreaker;
10
+ constructor(baseUrl?: string, apiKey?: string);
11
+ private fetch;
12
+ /**
13
+ * Get nanosecond timestamp for SigNoz queries
14
+ */
15
+ private getNanoTime;
16
+ queryTraces(options: TraceQueryOptions): Promise<TraceSpan[]>;
17
+ queryLogs(options: LogQueryOptions): Promise<LogRecord[]>;
18
+ queryMetrics(options: MetricQueryOptions): Promise<MetricDataPoint[]>;
19
+ healthCheck(): Promise<{
20
+ status: 'ok' | 'error';
21
+ message?: string;
22
+ }>;
23
+ /**
24
+ * Get SigNoz trace viewer URL for a trace ID
25
+ */
26
+ getTraceUrl(traceId: string): string;
27
+ }
28
+ //# sourceMappingURL=signoz-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signoz-api.d.ts","sourceRoot":"","sources":["../../src/backends/signoz-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAkDpB,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,IAAI,SAAgB;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAA2B;gBAErC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;YAK/B,KAAK;IAkCnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOb,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAuF7D,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsEzD,YAAY,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+DrE,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAyB1E;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CASrC"}