@dxos/observability 0.8.4-main.84f28bd → 0.8.4-main.a4bbb77
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/dist/lib/browser/chunk-5ICT2XF2.mjs +1 -0
- package/dist/lib/browser/{chunk-MWTIKIBZ.mjs → chunk-ICKR6U3G.mjs} +44 -30
- package/dist/lib/browser/chunk-ICKR6U3G.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YEPQFAES.mjs → chunk-LJO63BXO.mjs} +2 -2
- package/dist/lib/browser/{chunk-YEPQFAES.mjs.map → chunk-LJO63BXO.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-33TCMAUB.mjs → chunk-YTRUOREY.mjs} +75 -46
- package/dist/lib/browser/chunk-YTRUOREY.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-CQGG3MID.mjs +10 -0
- package/dist/lib/browser/{otel-IRDZ7PES.mjs → otel-6FVBNA5F.mjs} +131 -81
- package/dist/lib/browser/otel-6FVBNA5F.mjs.map +7 -0
- package/dist/lib/browser/segment/index.mjs +3 -3
- package/dist/lib/browser/sentry/index.mjs +2 -2
- package/dist/lib/browser/{sentry-log-processor-3F3SBJXM.mjs → sentry-log-processor-RG4CFVGL.mjs} +59 -43
- package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-552KLA6Z.mjs → chunk-24NMRR4E.mjs} +67 -40
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-EYW4X3O6.mjs → chunk-4EWQFQ2F.mjs} +75 -46
- package/dist/lib/{browser/chunk-33TCMAUB.mjs.map → node-esm/chunk-4EWQFQ2F.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-TEH6VIKV.mjs → chunk-QK5IUYVA.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-TEH6VIKV.mjs.map → chunk-QK5IUYVA.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-MRAK2H7O.mjs → chunk-QUZL7LKE.mjs} +1 -1
- package/dist/lib/node-esm/index.mjs +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-DHNVVRC7.mjs +11 -0
- package/dist/lib/node-esm/{otel-62HYJETM.mjs → otel-KHSGBROB.mjs} +127 -77
- package/dist/lib/node-esm/otel-KHSGBROB.mjs.map +7 -0
- package/dist/lib/node-esm/segment/index.mjs +3 -3
- package/dist/lib/node-esm/sentry/index.mjs +2 -2
- package/dist/lib/node-esm/{sentry-log-processor-JAYRA23C.mjs → sentry-log-processor-3BDS4BB4.mjs} +59 -43
- package/dist/lib/node-esm/sentry-log-processor-3BDS4BB4.mjs.map +7 -0
- package/dist/types/src/helpers/browser-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/browser-observability.js +4 -6
- package/dist/types/src/helpers/browser-observability.js.map +1 -1
- package/dist/types/src/helpers/common.js +1 -1
- package/dist/types/src/helpers/common.js.map +1 -1
- package/dist/types/src/helpers/map-spaces.js +5 -6
- package/dist/types/src/helpers/map-spaces.js.map +1 -1
- package/dist/types/src/helpers/node-observability.d.ts +1 -1
- package/dist/types/src/helpers/node-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/node-observability.js +7 -11
- package/dist/types/src/helpers/node-observability.js.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.js +4 -7
- package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
- package/dist/types/src/observability.d.ts +1 -1
- package/dist/types/src/observability.d.ts.map +1 -1
- package/dist/types/src/observability.js +68 -59
- package/dist/types/src/observability.js.map +1 -1
- package/dist/types/src/otel/logs.d.ts.map +1 -1
- package/dist/types/src/otel/logs.js +26 -23
- package/dist/types/src/otel/logs.js.map +1 -1
- package/dist/types/src/otel/metrics.d.ts +0 -1
- package/dist/types/src/otel/metrics.d.ts.map +1 -1
- package/dist/types/src/otel/metrics.js +6 -4
- package/dist/types/src/otel/metrics.js.map +1 -1
- package/dist/types/src/otel/otel.js +1 -1
- package/dist/types/src/otel/otel.js.map +1 -1
- package/dist/types/src/otel/traces-browser.d.ts.map +1 -1
- package/dist/types/src/otel/traces-browser.js +19 -13
- package/dist/types/src/otel/traces-browser.js.map +1 -1
- package/dist/types/src/otel/traces.d.ts.map +1 -1
- package/dist/types/src/otel/traces.js +18 -12
- package/dist/types/src/otel/traces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +1 -1
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +2 -1
- package/dist/types/src/segment/base.js.map +1 -1
- package/dist/types/src/segment/browser.d.ts +1 -1
- package/dist/types/src/segment/browser.d.ts.map +1 -1
- package/dist/types/src/segment/browser.js +6 -10
- package/dist/types/src/segment/browser.js.map +1 -1
- package/dist/types/src/segment/node.d.ts +1 -1
- package/dist/types/src/segment/node.d.ts.map +1 -1
- package/dist/types/src/segment/node.js +2 -1
- package/dist/types/src/segment/node.js.map +1 -1
- package/dist/types/src/sentry/browser.d.ts.map +1 -1
- package/dist/types/src/sentry/browser.js +4 -6
- package/dist/types/src/sentry/browser.js.map +1 -1
- package/dist/types/src/sentry/index.d.ts +1 -1
- package/dist/types/src/sentry/index.d.ts.map +1 -1
- package/dist/types/src/sentry/index.js +0 -1
- package/dist/types/src/sentry/index.js.map +1 -1
- package/dist/types/src/sentry/node.d.ts.map +1 -1
- package/dist/types/src/sentry/node.js +8 -13
- package/dist/types/src/sentry/node.js.map +1 -1
- package/dist/types/src/sentry/node.node.test.js +3 -5
- package/dist/types/src/sentry/node.node.test.js.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.js +58 -63
- package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
- package/dist/types/src/sentry/sentry.node.test.js +1 -1
- package/dist/types/src/sentry/sentry.node.test.js.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -27
- package/src/helpers/browser-observability.ts +2 -1
- package/src/helpers/node-observability.ts +5 -4
- package/src/helpers/setup-telemetry-listeners.ts +2 -1
- package/src/observability.ts +4 -4
- package/src/otel/logs.ts +9 -7
- package/src/otel/metrics.ts +5 -12
- package/src/otel/otel.ts +1 -1
- package/src/otel/traces-browser.ts +23 -20
- package/src/otel/traces.ts +22 -19
- package/src/segment/base.ts +1 -1
- package/src/segment/browser.ts +3 -2
- package/src/segment/node.ts +3 -2
- package/src/sentry/browser.ts +7 -7
- package/src/sentry/index.ts +1 -1
- package/src/sentry/node.node.test.ts +2 -1
- package/src/sentry/node.ts +3 -3
- package/src/sentry/sentry-log-processor.ts +15 -7
- package/src/sentry/sentry.node.test.ts +2 -1
- package/dist/lib/browser/chunk-5OQYI27L.mjs +0 -1
- package/dist/lib/browser/chunk-MWTIKIBZ.mjs.map +0 -7
- package/dist/lib/browser/observability-EEM6BEY6.mjs +0 -10
- package/dist/lib/browser/otel-IRDZ7PES.mjs.map +0 -7
- package/dist/lib/browser/sentry-log-processor-3F3SBJXM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-552KLA6Z.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EYW4X3O6.mjs.map +0 -7
- package/dist/lib/node-esm/observability-DAXZGOBS.mjs +0 -11
- package/dist/lib/node-esm/otel-62HYJETM.mjs.map +0 -7
- package/dist/lib/node-esm/sentry-log-processor-JAYRA23C.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-5OQYI27L.mjs.map → chunk-5ICT2XF2.mjs.map} +0 -0
- /package/dist/lib/browser/{observability-EEM6BEY6.mjs.map → observability-CQGG3MID.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-MRAK2H7O.mjs.map → chunk-QUZL7LKE.mjs.map} +0 -0
- /package/dist/lib/node-esm/{observability-DAXZGOBS.mjs.map → observability-DHNVVRC7.mjs.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
|
|
3
3
|
// src/otel/otel.ts
|
|
4
|
-
import {
|
|
4
|
+
import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
|
|
5
5
|
var setDiagLogger = (level) => {
|
|
6
6
|
const logLevel = DiagLogLevel[level];
|
|
7
7
|
if (logLevel) {
|
|
@@ -12,13 +12,35 @@ var setDiagLogger = (level) => {
|
|
|
12
12
|
// src/otel/logs.ts
|
|
13
13
|
import { SeverityNumber } from "@opentelemetry/api-logs";
|
|
14
14
|
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
|
|
15
|
-
import {
|
|
15
|
+
import { defaultResource, resourceFromAttributes } from "@opentelemetry/resources";
|
|
16
16
|
import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
|
|
17
17
|
import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
18
|
-
import { getContextFromEntry, getRelativeFilename
|
|
18
|
+
import { LogLevel, getContextFromEntry, getRelativeFilename } from "@dxos/log";
|
|
19
19
|
import { jsonlogify } from "@dxos/util";
|
|
20
|
+
function _define_property(obj, key, value) {
|
|
21
|
+
if (key in obj) {
|
|
22
|
+
Object.defineProperty(obj, key, {
|
|
23
|
+
value,
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true
|
|
27
|
+
});
|
|
28
|
+
} else {
|
|
29
|
+
obj[key] = value;
|
|
30
|
+
}
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
20
33
|
var OtelLogs = class {
|
|
34
|
+
flush() {
|
|
35
|
+
return this._loggerProvider.forceFlush();
|
|
36
|
+
}
|
|
37
|
+
close() {
|
|
38
|
+
return this._loggerProvider.shutdown();
|
|
39
|
+
}
|
|
21
40
|
constructor(options) {
|
|
41
|
+
_define_property(this, "options", void 0);
|
|
42
|
+
_define_property(this, "_loggerProvider", void 0);
|
|
43
|
+
_define_property(this, "logProcessor", void 0);
|
|
22
44
|
this.options = options;
|
|
23
45
|
this.logProcessor = (config, entry) => {
|
|
24
46
|
const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
|
|
@@ -42,7 +64,7 @@ var OtelLogs = class {
|
|
|
42
64
|
});
|
|
43
65
|
};
|
|
44
66
|
setDiagLogger(options.consoleDiagLogLevel);
|
|
45
|
-
const resource =
|
|
67
|
+
const resource = defaultResource().merge(resourceFromAttributes({
|
|
46
68
|
[SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
47
69
|
[SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
|
|
48
70
|
}));
|
|
@@ -54,15 +76,11 @@ var OtelLogs = class {
|
|
|
54
76
|
concurrencyLimit: 10
|
|
55
77
|
});
|
|
56
78
|
this._loggerProvider = new LoggerProvider({
|
|
57
|
-
resource
|
|
79
|
+
resource,
|
|
80
|
+
processors: [
|
|
81
|
+
new BatchLogRecordProcessor(logExporter)
|
|
82
|
+
]
|
|
58
83
|
});
|
|
59
|
-
this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
|
|
60
|
-
}
|
|
61
|
-
flush() {
|
|
62
|
-
return this._loggerProvider.forceFlush();
|
|
63
|
-
}
|
|
64
|
-
close() {
|
|
65
|
-
return this._loggerProvider.shutdown();
|
|
66
84
|
}
|
|
67
85
|
};
|
|
68
86
|
var convertLevel = (level) => {
|
|
@@ -84,54 +102,27 @@ var convertLevel = (level) => {
|
|
|
84
102
|
|
|
85
103
|
// src/otel/metrics.ts
|
|
86
104
|
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
87
|
-
import {
|
|
105
|
+
import { defaultResource as defaultResource2, resourceFromAttributes as resourceFromAttributes2 } from "@opentelemetry/resources";
|
|
88
106
|
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
89
107
|
import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME2, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION2 } from "@opentelemetry/semantic-conventions";
|
|
90
108
|
import { log } from "@dxos/log";
|
|
91
109
|
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
110
|
+
function _define_property2(obj, key, value) {
|
|
111
|
+
if (key in obj) {
|
|
112
|
+
Object.defineProperty(obj, key, {
|
|
113
|
+
value,
|
|
114
|
+
enumerable: true,
|
|
115
|
+
configurable: true,
|
|
116
|
+
writable: true
|
|
117
|
+
});
|
|
118
|
+
} else {
|
|
119
|
+
obj[key] = value;
|
|
120
|
+
}
|
|
121
|
+
return obj;
|
|
122
|
+
}
|
|
92
123
|
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/otel/metrics.ts";
|
|
93
124
|
var EXPORT_INTERVAL = 60 * 1e3;
|
|
94
125
|
var OtelMetrics = class {
|
|
95
|
-
constructor(options) {
|
|
96
|
-
this.options = options;
|
|
97
|
-
this._gauges = /* @__PURE__ */ new Map();
|
|
98
|
-
setDiagLogger(options.consoleDiagLogLevel);
|
|
99
|
-
const resource = Resource2.default().merge(new Resource2({
|
|
100
|
-
[SEMRESATTRS_SERVICE_NAME2]: this.options.serviceName,
|
|
101
|
-
[SEMRESATTRS_SERVICE_VERSION2]: this.options.serviceVersion
|
|
102
|
-
}));
|
|
103
|
-
const grafanaMetricReader = new PeriodicExportingMetricReader({
|
|
104
|
-
exporter: new OTLPMetricExporter({
|
|
105
|
-
url: this.options.endpoint + "/v1/metrics",
|
|
106
|
-
headers: {
|
|
107
|
-
Authorization: this.options.authorizationHeader
|
|
108
|
-
}
|
|
109
|
-
}),
|
|
110
|
-
exportIntervalMillis: EXPORT_INTERVAL
|
|
111
|
-
});
|
|
112
|
-
this._meterProvider = new MeterProvider({
|
|
113
|
-
resource,
|
|
114
|
-
readers: [
|
|
115
|
-
grafanaMetricReader
|
|
116
|
-
]
|
|
117
|
-
});
|
|
118
|
-
this._meter = this._meterProvider.getMeter("dxos-observability");
|
|
119
|
-
const metrics = {
|
|
120
|
-
// TODO: update metrics names and remove prefix?
|
|
121
|
-
increment: (name, value, data) => {
|
|
122
|
-
this.increment(name, value, convertTags(data));
|
|
123
|
-
},
|
|
124
|
-
distribution: (name, value, data) => {
|
|
125
|
-
this.distribution(name, value, convertTags(data));
|
|
126
|
-
},
|
|
127
|
-
set: (name, value, data) => {
|
|
128
|
-
},
|
|
129
|
-
gauge: (name, value, data) => {
|
|
130
|
-
this.gauge(name, value, convertTags(data));
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
134
|
-
}
|
|
135
126
|
gauge(name, value, tags) {
|
|
136
127
|
const gauge = this._meter.createGauge(name);
|
|
137
128
|
log("otel gauge", {
|
|
@@ -143,7 +134,7 @@ var OtelMetrics = class {
|
|
|
143
134
|
}
|
|
144
135
|
}, {
|
|
145
136
|
F: __dxlog_file,
|
|
146
|
-
L:
|
|
137
|
+
L: 70,
|
|
147
138
|
S: this,
|
|
148
139
|
C: (f, a) => f(...a)
|
|
149
140
|
});
|
|
@@ -163,7 +154,7 @@ var OtelMetrics = class {
|
|
|
163
154
|
}
|
|
164
155
|
}, {
|
|
165
156
|
F: __dxlog_file,
|
|
166
|
-
L:
|
|
157
|
+
L: 76,
|
|
167
158
|
S: this,
|
|
168
159
|
C: (f, a) => f(...a)
|
|
169
160
|
});
|
|
@@ -183,7 +174,7 @@ var OtelMetrics = class {
|
|
|
183
174
|
}
|
|
184
175
|
}, {
|
|
185
176
|
F: __dxlog_file,
|
|
186
|
-
L:
|
|
177
|
+
L: 82,
|
|
187
178
|
S: this,
|
|
188
179
|
C: (f, a) => f(...a)
|
|
189
180
|
});
|
|
@@ -198,6 +189,48 @@ var OtelMetrics = class {
|
|
|
198
189
|
close() {
|
|
199
190
|
return this._meterProvider.shutdown();
|
|
200
191
|
}
|
|
192
|
+
constructor(options) {
|
|
193
|
+
_define_property2(this, "options", void 0);
|
|
194
|
+
_define_property2(this, "_meterProvider", void 0);
|
|
195
|
+
_define_property2(this, "_meter", void 0);
|
|
196
|
+
this.options = options;
|
|
197
|
+
setDiagLogger(options.consoleDiagLogLevel);
|
|
198
|
+
const resource = defaultResource2().merge(resourceFromAttributes2({
|
|
199
|
+
[SEMRESATTRS_SERVICE_NAME2]: this.options.serviceName,
|
|
200
|
+
[SEMRESATTRS_SERVICE_VERSION2]: this.options.serviceVersion
|
|
201
|
+
}));
|
|
202
|
+
const grafanaMetricReader = new PeriodicExportingMetricReader({
|
|
203
|
+
exporter: new OTLPMetricExporter({
|
|
204
|
+
url: this.options.endpoint + "/v1/metrics",
|
|
205
|
+
headers: {
|
|
206
|
+
Authorization: this.options.authorizationHeader
|
|
207
|
+
}
|
|
208
|
+
}),
|
|
209
|
+
exportIntervalMillis: EXPORT_INTERVAL
|
|
210
|
+
});
|
|
211
|
+
this._meterProvider = new MeterProvider({
|
|
212
|
+
resource,
|
|
213
|
+
readers: [
|
|
214
|
+
grafanaMetricReader
|
|
215
|
+
]
|
|
216
|
+
});
|
|
217
|
+
this._meter = this._meterProvider.getMeter("dxos-observability");
|
|
218
|
+
const metrics = {
|
|
219
|
+
// TODO: update metrics names and remove prefix?
|
|
220
|
+
increment: (name, value, data) => {
|
|
221
|
+
this.increment(name, value, convertTags(data));
|
|
222
|
+
},
|
|
223
|
+
distribution: (name, value, data) => {
|
|
224
|
+
this.distribution(name, value, convertTags(data));
|
|
225
|
+
},
|
|
226
|
+
set: (name, value, data) => {
|
|
227
|
+
},
|
|
228
|
+
gauge: (name, value, data) => {
|
|
229
|
+
this.gauge(name, value, convertTags(data));
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
233
|
+
}
|
|
201
234
|
};
|
|
202
235
|
var convertTags = (data) => {
|
|
203
236
|
if (data && data.tags) {
|
|
@@ -213,32 +246,25 @@ var convertTags = (data) => {
|
|
|
213
246
|
// src/otel/traces.ts
|
|
214
247
|
import { trace } from "@opentelemetry/api";
|
|
215
248
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
216
|
-
import {
|
|
249
|
+
import { defaultResource as defaultResource3, resourceFromAttributes as resourceFromAttributes3 } from "@opentelemetry/resources";
|
|
217
250
|
import { BasicTracerProvider, BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
218
251
|
import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME3, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION3 } from "@opentelemetry/semantic-conventions";
|
|
219
252
|
import { log as log2 } from "debug";
|
|
220
253
|
import { TRACE_PROCESSOR as TRACE_PROCESSOR2 } from "@dxos/tracing";
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const tracerProvider = new BasicTracerProvider({
|
|
229
|
-
resource
|
|
254
|
+
function _define_property3(obj, key, value) {
|
|
255
|
+
if (key in obj) {
|
|
256
|
+
Object.defineProperty(obj, key, {
|
|
257
|
+
value,
|
|
258
|
+
enumerable: true,
|
|
259
|
+
configurable: true,
|
|
260
|
+
writable: true
|
|
230
261
|
});
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
url: this.options.endpoint + "/v1/traces",
|
|
234
|
-
headers: {
|
|
235
|
-
Authorization: this.options.authorizationHeader
|
|
236
|
-
},
|
|
237
|
-
concurrencyLimit: 10
|
|
238
|
-
})));
|
|
239
|
-
tracerProvider.register();
|
|
240
|
-
this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
262
|
+
} else {
|
|
263
|
+
obj[key] = value;
|
|
241
264
|
}
|
|
265
|
+
return obj;
|
|
266
|
+
}
|
|
267
|
+
var OtelTraces = class {
|
|
242
268
|
start() {
|
|
243
269
|
log2("trace processor registered");
|
|
244
270
|
TRACE_PROCESSOR2.remoteTracing.registerProcessor({
|
|
@@ -250,6 +276,30 @@ var OtelTraces = class {
|
|
|
250
276
|
}
|
|
251
277
|
});
|
|
252
278
|
}
|
|
279
|
+
constructor(options) {
|
|
280
|
+
_define_property3(this, "options", void 0);
|
|
281
|
+
_define_property3(this, "_tracer", void 0);
|
|
282
|
+
this.options = options;
|
|
283
|
+
const resource = defaultResource3().merge(resourceFromAttributes3({
|
|
284
|
+
[SEMRESATTRS_SERVICE_NAME3]: this.options.serviceName,
|
|
285
|
+
[SEMRESATTRS_SERVICE_VERSION3]: this.options.serviceVersion
|
|
286
|
+
}));
|
|
287
|
+
const tracerProvider = new BasicTracerProvider({
|
|
288
|
+
resource,
|
|
289
|
+
spanProcessors: [
|
|
290
|
+
new SimpleSpanProcessor(new ConsoleSpanExporter()),
|
|
291
|
+
new BatchSpanProcessor(new OTLPTraceExporter({
|
|
292
|
+
url: this.options.endpoint + "/v1/traces",
|
|
293
|
+
headers: {
|
|
294
|
+
Authorization: this.options.authorizationHeader
|
|
295
|
+
},
|
|
296
|
+
concurrencyLimit: 10
|
|
297
|
+
}))
|
|
298
|
+
]
|
|
299
|
+
});
|
|
300
|
+
trace.setGlobalTracerProvider(tracerProvider);
|
|
301
|
+
this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
302
|
+
}
|
|
253
303
|
};
|
|
254
304
|
export {
|
|
255
305
|
OtelLogs,
|
|
@@ -257,4 +307,4 @@ export {
|
|
|
257
307
|
OtelTraces,
|
|
258
308
|
setDiagLogger
|
|
259
309
|
};
|
|
260
|
-
//# sourceMappingURL=otel-
|
|
310
|
+
//# sourceMappingURL=otel-KHSGBROB.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/otel/otel.ts", "../../../src/otel/logs.ts", "../../../src/otel/metrics.ts", "../../../src/otel/traces.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\n\nexport type OtelOptions = {\n endpoint: string;\n authorizationHeader: string;\n serviceName: string; // For the Otel API, the name of the entity for which signals (metrics or trace) are collected.\n serviceVersion: string; // For the Otel API, The name of the entity for which signals (metrics or trace) are collected.\n getTags: () => { [key: string]: string };\n consoleDiagLogLevel?: string;\n};\n\nexport const setDiagLogger = (level?: string) => {\n const logLevel = DiagLogLevel[level as keyof typeof DiagLogLevel];\n if (logLevel) {\n diag.setLogger(new DiagConsoleLogger(), logLevel);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n getContextFromEntry,\n getRelativeFilename,\n} from '@dxos/log';\nimport { jsonlogify } from '@dxos/util';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nexport type OtelLogOptions = OtelOptions & {\n logLevel: LogLevel;\n /**\n * Set `true` to capture logs sent through LoggingService from shared worker.\n * Better to set to `false` because shared worker is initializing its own logger.\n */\n includeSharedWorkerLogs: boolean;\n};\n\nexport class OtelLogs {\n private _loggerProvider: LoggerProvider;\n constructor(private readonly options: OtelLogOptions) {\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n const logExporter = new OTLPLogExporter({\n url: this.options.endpoint + '/v1/logs',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n });\n this._loggerProvider = new LoggerProvider({\n resource,\n processors: [new BatchLogRecordProcessor(logExporter)],\n });\n }\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const logger = this._loggerProvider.getLogger('dxos-observability', this.options.serviceVersion);\n\n if (\n entry.level < this.options.logLevel ||\n (!this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId)\n ) {\n return;\n }\n\n const record = {\n ...entry,\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n context: jsonlogify(getContextFromEntry(entry)),\n };\n\n logger.emit({\n severityNumber: convertLevel(entry.level),\n body: JSON.stringify(record),\n attributes: this.options.getTags(),\n });\n };\n\n flush(): Promise<void> {\n return this._loggerProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._loggerProvider.shutdown();\n }\n}\n\nconst convertLevel = (level: LogLevel): SeverityNumber => {\n switch (level) {\n case LogLevel.DEBUG:\n return SeverityNumber.DEBUG;\n case LogLevel.VERBOSE:\n return SeverityNumber.INFO;\n case LogLevel.INFO:\n return SeverityNumber.INFO;\n case LogLevel.WARN:\n return SeverityNumber.WARN;\n case LogLevel.ERROR:\n return SeverityNumber.ERROR;\n default:\n return SeverityNumber.ERROR;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Meter } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type MetricData, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\n\n constructor(private readonly options: OtelOptions) {\n // TODO: improve error handling/logging\n // https://github.com/open-telemetry/opentelemetry-js/issues/4823\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource,\n readers: [grafanaMetricReader],\n });\n this._meter = this._meterProvider.getMeter('dxos-observability');\n\n const metrics = {\n // TODO: update metrics names and remove prefix?\n increment: (name: string, value?: number, data?: MetricData) => {\n this.increment(name, value, convertTags(data));\n },\n distribution: (name: string, value: number, data?: MetricData) => {\n this.distribution(name, value, convertTags(data));\n },\n set: (name: string, value: number | string, data?: MetricData) => {\n // Not implemented, not part of Otel spec.\n },\n gauge: (name: string, value: number, data?: MetricData) => {\n this.gauge(name, value, convertTags(data));\n },\n };\n\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n }\n\n gauge(name: string, value: number, tags?: any): void {\n const gauge = this._meter.createGauge(name);\n log('otel gauge', { name, value, tags: { ...this.options.getTags(), ...tags } });\n gauge.record(value, { ...this.options.getTags(), ...tags });\n }\n\n increment(name: string, value?: number, tags?: any): void {\n const counter = this._meter.createCounter(name);\n log('otel counter', { name, value, tags: { ...this.options.getTags(), ...tags } });\n counter.add(value ?? 1, { ...this.options.getTags(), ...tags });\n }\n\n distribution(name: string, value: number, tags?: any): void {\n const distribution = this._meter.createHistogram(name);\n log('otel distribution', { name, value, tags: { ...this.options.getTags(), ...tags } });\n distribution.record(value, { ...this.options.getTags(), ...tags });\n }\n\n flush(): Promise<void> {\n return this._meterProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._meterProvider.shutdown();\n }\n}\n\nconst convertTags = (data?: MetricData) => {\n if (data && data.tags) {\n return Object.entries(data.tags).reduce<{ [key: string]: any }>((obj, [key, value]) => {\n obj[key] = value;\n return obj;\n }, {});\n } else {\n return {};\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Tracer, trace } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n BasicTracerProvider,\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { log } from 'debug';\n\nimport { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n constructor(private readonly options: OtelOptions) {\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const tracerProvider = new BasicTracerProvider({\n resource,\n spanProcessors: [\n new SimpleSpanProcessor(new ConsoleSpanExporter()),\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n }),\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(tracerProvider);\n this._tracer = trace.getTracer('dxos-observability', this.options.serviceVersion);\n }\n\n public start(): void {\n log('trace processor registered');\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n return this._tracer.startSpan(options.name, options);\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "SeverityNumber", "OTLPLogExporter", "defaultResource", "resourceFromAttributes", "BatchLogRecordProcessor", "LoggerProvider", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "LogLevel", "getContextFromEntry", "getRelativeFilename", "jsonlogify", "OtelLogs", "flush", "_loggerProvider", "forceFlush", "close", "shutdown", "options", "logProcessor", "config", "entry", "logger", "getLogger", "serviceVersion", "level", "logLevel", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "JSON", "stringify", "attributes", "getTags", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "processors", "BatchLogRecordProcessor", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "OTLPMetricExporter", "defaultResource", "resourceFromAttributes", "MeterProvider", "PeriodicExportingMetricReader", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "OtelMetrics", "gauge", "name", "value", "tags", "_meter", "createGauge", "log", "options", "getTags", "record", "increment", "counter", "createCounter", "add", "distribution", "createHistogram", "flush", "_meterProvider", "forceFlush", "close", "shutdown", "_define_property", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "exportIntervalMillis", "MeterProvider", "readers", "getMeter", "metrics", "data", "convertTags", "set", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "Object", "entries", "reduce", "obj", "key", "trace", "OTLPTraceExporter", "defaultResource", "resourceFromAttributes", "BasicTracerProvider", "BatchSpanProcessor", "ConsoleSpanExporter", "SimpleSpanProcessor", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "OtelTraces", "start", "log", "TRACE_PROCESSOR", "remoteTracing", "registerProcessor", "startSpan", "options", "_tracer", "name", "_define_property", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "tracerProvider", "BasicTracerProvider", "spanProcessors", "SimpleSpanProcessor", "ConsoleSpanExporter", "BatchSpanProcessor", "OTLPTraceExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "trace", "setGlobalTracerProvider", "getTracer"]
|
|
7
|
+
}
|
|
@@ -2,9 +2,9 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
2
2
|
import {
|
|
3
3
|
SegmentTelemetry,
|
|
4
4
|
TelemetryEvent
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-24NMRR4E.mjs";
|
|
6
|
+
import "../chunk-QUZL7LKE.mjs";
|
|
7
|
+
import "../chunk-QK5IUYVA.mjs";
|
|
8
8
|
export {
|
|
9
9
|
SegmentTelemetry,
|
|
10
10
|
TelemetryEvent
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
-
import "../chunk-
|
|
2
|
+
import "../chunk-QUZL7LKE.mjs";
|
|
3
3
|
import {
|
|
4
4
|
addBreadcrumb,
|
|
5
5
|
captureException,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
setTags,
|
|
11
11
|
setUser,
|
|
12
12
|
withScope
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-QK5IUYVA.mjs";
|
|
14
14
|
export {
|
|
15
15
|
addBreadcrumb,
|
|
16
16
|
captureException,
|
package/dist/lib/node-esm/{sentry-log-processor-JAYRA23C.mjs → sentry-log-processor-3BDS4BB4.mjs}
RENAMED
|
@@ -3,21 +3,70 @@ import {
|
|
|
3
3
|
captureException,
|
|
4
4
|
captureMessage,
|
|
5
5
|
withScope
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-QK5IUYVA.mjs";
|
|
7
7
|
|
|
8
8
|
// src/sentry/sentry-log-processor.ts
|
|
9
9
|
import { InvariantViolation } from "@dxos/invariant";
|
|
10
10
|
import { LogLevel, shouldLog } from "@dxos/log";
|
|
11
11
|
import { CircularBuffer, getDebugName } from "@dxos/util";
|
|
12
|
+
function _define_property(obj, key, value) {
|
|
13
|
+
if (key in obj) {
|
|
14
|
+
Object.defineProperty(obj, key, {
|
|
15
|
+
value,
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true
|
|
19
|
+
});
|
|
20
|
+
} else {
|
|
21
|
+
obj[key] = value;
|
|
22
|
+
}
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
12
25
|
var MAX_LOG_BREADCRUMBS = 150;
|
|
13
26
|
var SentryLogProcessor = class {
|
|
27
|
+
addLogBreadcrumbsTo(event) {
|
|
28
|
+
var _event;
|
|
29
|
+
(_event = event).breadcrumbs ?? (_event.breadcrumbs = []);
|
|
30
|
+
for (const breadcrumb of this._breadcrumbs) {
|
|
31
|
+
event.breadcrumbs.push(breadcrumb);
|
|
32
|
+
}
|
|
33
|
+
event.breadcrumbs.sort((b1, b2) => {
|
|
34
|
+
if (b1.timestamp === void 0 || b2.timestamp === void 0) {
|
|
35
|
+
return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === void 0 ? -1 : 1;
|
|
36
|
+
}
|
|
37
|
+
return b1.timestamp - b2.timestamp;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
_addBreadcrumb(eventId, message, severity, context) {
|
|
41
|
+
const breadcrumb = {
|
|
42
|
+
type: "console",
|
|
43
|
+
level: severity,
|
|
44
|
+
event_id: eventId,
|
|
45
|
+
category: "log",
|
|
46
|
+
message,
|
|
47
|
+
data: context,
|
|
48
|
+
timestamp: Math.floor(Date.now() / 1e3)
|
|
49
|
+
};
|
|
50
|
+
const lastRecorded = this._breadcrumbs.getLast();
|
|
51
|
+
if (lastRecorded && lastRecorded.message === breadcrumb.message) {
|
|
52
|
+
const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};
|
|
53
|
+
const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount) ? 1 : Number(lastRecorded.data?.mergedBreadcrumbCount);
|
|
54
|
+
lastRecorded.data = {
|
|
55
|
+
mergedBreadcrumbCount: mergedBreadcrumbCount + 1,
|
|
56
|
+
firstBreadcrumbData,
|
|
57
|
+
lastBreadcrumbData: breadcrumb.data
|
|
58
|
+
};
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this._breadcrumbs.push(breadcrumb);
|
|
62
|
+
}
|
|
14
63
|
constructor() {
|
|
15
|
-
this
|
|
16
|
-
this
|
|
64
|
+
_define_property(this, "_breadcrumbs", new CircularBuffer(MAX_LOG_BREADCRUMBS));
|
|
65
|
+
_define_property(this, "logProcessor", (config, entry) => {
|
|
17
66
|
const { level, meta, error } = entry;
|
|
18
67
|
if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {
|
|
19
68
|
if (entry.level > LogLevel.DEBUG) {
|
|
20
|
-
this._addBreadcrumb(void 0, entry.message, convertLevel(entry.level), void 0);
|
|
69
|
+
this._addBreadcrumb(void 0, entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : ""), convertLevel(entry.level), void 0);
|
|
21
70
|
}
|
|
22
71
|
return;
|
|
23
72
|
}
|
|
@@ -57,61 +106,28 @@ var SentryLogProcessor = class {
|
|
|
57
106
|
this._addBreadcrumb(eventId2, extendedMessage, severity, entry.context);
|
|
58
107
|
return;
|
|
59
108
|
}
|
|
109
|
+
const message = entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : "");
|
|
60
110
|
scope.setFingerprint([
|
|
61
|
-
|
|
111
|
+
message
|
|
62
112
|
]);
|
|
63
113
|
const eventId = captureMessage(extendedMessage);
|
|
64
114
|
this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);
|
|
65
115
|
});
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
addLogBreadcrumbsTo(event) {
|
|
69
|
-
event.breadcrumbs ??= [];
|
|
70
|
-
for (const breadcrumb of this._breadcrumbs) {
|
|
71
|
-
event.breadcrumbs.push(breadcrumb);
|
|
72
|
-
}
|
|
73
|
-
event.breadcrumbs.sort((b1, b2) => {
|
|
74
|
-
if (b1.timestamp === void 0 || b2.timestamp === void 0) {
|
|
75
|
-
return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === void 0 ? -1 : 1;
|
|
76
|
-
}
|
|
77
|
-
return b1.timestamp - b2.timestamp;
|
|
78
116
|
});
|
|
79
117
|
}
|
|
80
|
-
_addBreadcrumb(eventId, message, severity, context) {
|
|
81
|
-
const breadcrumb = {
|
|
82
|
-
type: "console",
|
|
83
|
-
level: severity,
|
|
84
|
-
event_id: eventId,
|
|
85
|
-
category: "log",
|
|
86
|
-
message,
|
|
87
|
-
data: context,
|
|
88
|
-
timestamp: Math.floor(Date.now() / 1e3)
|
|
89
|
-
};
|
|
90
|
-
const lastRecorded = this._breadcrumbs.getLast();
|
|
91
|
-
if (lastRecorded && lastRecorded.message === breadcrumb.message) {
|
|
92
|
-
const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};
|
|
93
|
-
const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount) ? 1 : Number(lastRecorded.data?.mergedBreadcrumbCount);
|
|
94
|
-
lastRecorded.data = {
|
|
95
|
-
mergedBreadcrumbCount: mergedBreadcrumbCount + 1,
|
|
96
|
-
firstBreadcrumbData,
|
|
97
|
-
lastBreadcrumbData: breadcrumb.data
|
|
98
|
-
};
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this._breadcrumbs.push(breadcrumb);
|
|
102
|
-
}
|
|
103
118
|
};
|
|
104
119
|
var formatMessageForSentry = (entry) => {
|
|
120
|
+
const message = entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : "");
|
|
105
121
|
let scopePrefix;
|
|
106
122
|
if (entry.meta?.S) {
|
|
107
123
|
const scope = entry.meta?.S;
|
|
108
124
|
scopePrefix = scope.name || getDebugName(scope);
|
|
109
125
|
}
|
|
110
126
|
if (scopePrefix == null) {
|
|
111
|
-
return
|
|
127
|
+
return message;
|
|
112
128
|
}
|
|
113
129
|
const workerPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
|
|
114
|
-
return `${workerPrefix}${scopePrefix} ${
|
|
130
|
+
return `${workerPrefix}${scopePrefix} ${message}`;
|
|
115
131
|
};
|
|
116
132
|
var convertLevel = (level) => {
|
|
117
133
|
switch (level) {
|
|
@@ -144,4 +160,4 @@ var getRelativeFilename = (filename) => {
|
|
|
144
160
|
export {
|
|
145
161
|
SentryLogProcessor
|
|
146
162
|
};
|
|
147
|
-
//# sourceMappingURL=sentry-log-processor-
|
|
163
|
+
//# sourceMappingURL=sentry-log-processor-3BDS4BB4.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/sentry/sentry-log-processor.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Breadcrumb, Event, SeverityLevel } from '@sentry/types';\n\nimport { InvariantViolation } from '@dxos/invariant';\nimport { type LogConfig, type LogEntry, LogLevel, type LogProcessor, shouldLog } from '@dxos/log';\nimport { CircularBuffer, getDebugName } from '@dxos/util';\n\nimport { captureException, captureMessage, withScope } from './node';\n\nconst MAX_LOG_BREADCRUMBS = 150;\n\nexport class SentryLogProcessor {\n private _breadcrumbs = new CircularBuffer<Breadcrumb>(MAX_LOG_BREADCRUMBS);\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const { level, meta, error } = entry;\n // Don't forward logs from remote sessions.\n if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {\n if (entry.level > LogLevel.DEBUG) {\n this._addBreadcrumb(\n undefined,\n entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : ''),\n convertLevel(entry.level),\n undefined,\n );\n }\n return;\n }\n if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {\n return;\n }\n\n // TODO(nf): add rate limiting to avoid spamming Sentry/consuming excessive quota.\n withScope((scope) => {\n const severity = convertLevel(level);\n scope.setLevel(severity);\n scope.setContext('dxoslog', entry.context ?? null);\n if (meta) {\n scope.setTag('transaction', `${getRelativeFilename(meta.F)}:${meta.L}`);\n\n if (meta.S?.hostSessionId) {\n scope.setTags({\n service_host_issue: true,\n service_host_session: meta.S?.hostSessionId,\n });\n }\n\n if (!Number.isNaN(meta.S?.uptimeSeconds)) {\n scope.setExtra('uptime_seconds', meta.S?.uptimeSeconds);\n }\n }\n\n const extendedMessage = formatMessageForSentry(entry);\n let capturedError = error;\n if (capturedError == null && entry.level === LogLevel.ERROR) {\n capturedError = Object.values(entry.context ?? {}).find((v): v is Error => v instanceof Error);\n }\n if (capturedError) {\n if (capturedError instanceof InvariantViolation) {\n scope.setExtra('invariant_violation', true);\n }\n const isMessageDifferentFromStackTrace = error == null;\n if (isMessageDifferentFromStackTrace) {\n scope.setExtra('message', extendedMessage);\n }\n const eventId = captureException(capturedError);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n return;\n }\n\n const message = entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : '');\n scope.setFingerprint([message]);\n const eventId = captureMessage(extendedMessage);\n this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);\n });\n };\n\n public addLogBreadcrumbsTo(event: Event): void {\n event.breadcrumbs ??= [];\n for (const breadcrumb of this._breadcrumbs) {\n event.breadcrumbs.push(breadcrumb);\n }\n event.breadcrumbs.sort((b1, b2) => {\n if (b1.timestamp === undefined || b2.timestamp === undefined) {\n return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === undefined ? -1 : 1;\n }\n return b1.timestamp - b2.timestamp;\n });\n }\n\n private _addBreadcrumb(\n eventId: string | undefined,\n message: string,\n severity: SeverityLevel,\n context: { [key: string]: any } | undefined,\n ): void {\n const breadcrumb: Breadcrumb = {\n type: 'console',\n level: severity,\n event_id: eventId,\n category: 'log',\n message,\n data: context,\n timestamp: Math.floor(Date.now() / 1000),\n };\n const lastRecorded = this._breadcrumbs.getLast();\n if (lastRecorded && lastRecorded.message === breadcrumb.message) {\n const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};\n const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount)\n ? 1\n : Number(lastRecorded.data?.mergedBreadcrumbCount);\n lastRecorded.data = {\n mergedBreadcrumbCount: mergedBreadcrumbCount + 1,\n firstBreadcrumbData,\n lastBreadcrumbData: breadcrumb.data,\n };\n return;\n }\n this._breadcrumbs.push(breadcrumb);\n }\n}\n\nconst formatMessageForSentry = (entry: LogEntry): string => {\n const message = entry.message ?? (entry.error ? (entry.error.message ?? String(entry.error)) : '');\n\n let scopePrefix: string | undefined;\n if (entry.meta?.S) {\n const scope = entry.meta?.S;\n scopePrefix = scope.name || getDebugName(scope);\n }\n if (scopePrefix == null) {\n return message;\n }\n\n const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n return `${workerPrefix}${scopePrefix} ${message}`;\n};\n\nconst convertLevel = (level: LogLevel): SeverityLevel => {\n switch (level) {\n case LogLevel.ERROR:\n return 'error';\n case LogLevel.VERBOSE:\n return 'info';\n case LogLevel.INFO:\n return 'info';\n case LogLevel.WARN:\n return 'warning';\n case LogLevel.DEBUG:\n case LogLevel.TRACE:\n return 'debug';\n default:\n throw never(level);\n }\n};\n\nconst never = (_: never) => {\n return new Error('unhandled value');\n};\n\nconst getRelativeFilename = (filename: string) => {\n // TODO(burdon): Hack uses \"packages\" as an anchor (pre-parse NX?)\n // Including `packages/` part of the path so that excluded paths (e.g. from dist) are clickable in vscode.\n const match = filename.match(/.+\\/(packages\\/.+\\/.+)/);\n if (match) {\n const [, filePath] = match;\n return filePath;\n }\n\n return filename;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["InvariantViolation", "LogLevel", "shouldLog", "CircularBuffer", "getDebugName", "MAX_LOG_BREADCRUMBS", "SentryLogProcessor", "addLogBreadcrumbsTo", "event", "breadcrumbs", "breadcrumb", "_breadcrumbs", "push", "sort", "b1", "b2", "timestamp", "undefined", "_addBreadcrumb", "eventId", "message", "severity", "context", "type", "level", "event_id", "category", "data", "Math", "floor", "Date", "now", "lastRecorded", "getLast", "firstBreadcrumbData", "mergedBreadcrumbCount", "Number", "isNaN", "lastBreadcrumbData", "CircularBuffer", "logProcessor", "config", "entry", "meta", "error", "shouldLog", "captureFilters", "S", "remoteSessionId", "LogLevel", "DEBUG", "String", "convertLevel", "WARN", "ERROR", "withScope", "scope", "setLevel", "setContext", "setTag", "getRelativeFilename", "F", "L", "hostSessionId", "setTags", "service_host_issue", "service_host_session", "uptimeSeconds", "setExtra", "extendedMessage", "formatMessageForSentry", "capturedError", "Object", "values", "find", "v", "Error", "InvariantViolation", "isMessageDifferentFromStackTrace", "captureException", "setFingerprint", "captureMessage", "scopePrefix", "name", "getDebugName", "workerPrefix", "VERBOSE", "INFO", "TRACE", "never", "_", "filename", "match", "filePath"]
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-observability.d.ts","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-observability.d.ts","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI5D,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,OAAO,CAOhF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,WAAW,MAAM,EAAE,OAAO,OAAO,kBAMjF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAMzF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,WAAW,MAAM,EAAE,OAAO,MAAM,kBAM7E,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CAExB,CAAC;AAKF,eAAO,MAAM,0BAA0B,GAAU,2DAO9C,uBAAuB,KAAG,OAAO,CAAC,aAAa,CAyGjD,CAAC"}
|
|
@@ -24,9 +24,8 @@ export const storeObservabilityDisabled = async (namespace, value) => {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
export const getObservabilityGroup = async (namespace) => {
|
|
27
|
-
var _a;
|
|
28
27
|
try {
|
|
29
|
-
return (
|
|
28
|
+
return (await localForage.getItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`)) ?? undefined;
|
|
30
29
|
}
|
|
31
30
|
catch (err) {
|
|
32
31
|
log.catch('Failed to get observability group', err);
|
|
@@ -46,14 +45,13 @@ export const storeObservabilityGroup = async (namespace, value) => {
|
|
|
46
45
|
export const initializeAppObservability = async ({ namespace, config,
|
|
47
46
|
// TODO(nf): Configure mode.
|
|
48
47
|
mode = 'basic', tracingEnable = false, replayEnable = false, }) => {
|
|
49
|
-
var _a, _b;
|
|
50
48
|
log('initializeAppObservability', { config });
|
|
51
49
|
// const platform = (await client.services.services.SystemService?.getPlatform()) as Platform;
|
|
52
50
|
// if (!platform) {
|
|
53
51
|
// log.error('failed to get platform, could not initialize observability');
|
|
54
52
|
// return undefined;
|
|
55
53
|
// }
|
|
56
|
-
const group = (
|
|
54
|
+
const group = (await getObservabilityGroup(namespace)) ?? undefined;
|
|
57
55
|
const release = `${namespace}@${config.get('runtime.app.build.version')}`;
|
|
58
56
|
const environment = config.get('runtime.app.env.DX_ENVIRONMENT');
|
|
59
57
|
const { Observability } = await import('../observability');
|
|
@@ -118,7 +116,7 @@ mode = 'basic', tracingEnable = false, replayEnable = false, }) => {
|
|
|
118
116
|
observability.startErrorLogs();
|
|
119
117
|
const ipData = await getIPData(config);
|
|
120
118
|
ipData && observability.setIPDataTelemetryTags(ipData);
|
|
121
|
-
if (typeof navigator !== 'undefined' &&
|
|
119
|
+
if (typeof navigator !== 'undefined' && navigator.storage?.estimate) {
|
|
122
120
|
// TODO(burdon): Need to close.
|
|
123
121
|
setInterval(async () => {
|
|
124
122
|
try {
|
|
@@ -129,7 +127,7 @@ mode = 'basic', tracingEnable = false, replayEnable = false, }) => {
|
|
|
129
127
|
catch (error) {
|
|
130
128
|
log.warn('Failed to run estimate()', error);
|
|
131
129
|
}
|
|
132
|
-
},
|
|
130
|
+
}, 10_000);
|
|
133
131
|
}
|
|
134
132
|
}
|
|
135
133
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-observability.js","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,sDAAsD;AACtD,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAM3C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-observability.js","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// - Identifier can be synced via HALO to allow for correlation of events bewteen devices.
|
|
8
8
|
// - Identifier should also be stored outside of HALO such that it is available immediately on startup.
|
|
9
9
|
export const getTelemetryIdentifier = (client) => {
|
|
10
|
-
if (!
|
|
10
|
+
if (!client?.initialized) {
|
|
11
11
|
return undefined;
|
|
12
12
|
}
|
|
13
13
|
const identity = client.halo.identity.get();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/helpers/common.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAcF,8DAA8D;AAC9D,gFAAgF;AAChF,2CAA2C;AAC3C,2FAA2F;AAC3F,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAsB,EAAE;IAC3E,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/helpers/common.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAcF,8DAA8D;AAC9D,gFAAgF;AAChF,2CAA2C;AAC3C,2FAA2F;AAC3F,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAsB,EAAE;IAC3E,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAmB,EAAE;IACtE,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC"}
|