@dxos/observability 0.8.3 → 0.8.4-main.1da679c
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-G6EE7HFV.mjs → chunk-ICKR6U3G.mjs} +51 -37
- package/dist/lib/browser/chunk-ICKR6U3G.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JA5VJRKF.mjs → chunk-LJO63BXO.mjs} +4 -4
- package/dist/lib/browser/{chunk-JA5VJRKF.mjs.map → chunk-LJO63BXO.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-YQJELTRP.mjs → chunk-OO2RDFNE.mjs} +86 -57
- package/dist/lib/browser/chunk-OO2RDFNE.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-ZVQ2YD62.mjs +10 -0
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs → otel-UHLVSR24.mjs} +123 -75
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs.map → otel-UHLVSR24.mjs.map} +3 -3
- 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-625AISXI.mjs → sentry-log-processor-RG4CFVGL.mjs} +60 -44
- package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AZMSBUWR.mjs → chunk-24NMRR4E.mjs} +74 -47
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs → chunk-Q2I5AUBI.mjs} +86 -57
- package/dist/lib/{browser/chunk-YQJELTRP.mjs.map → node-esm/chunk-Q2I5AUBI.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs → chunk-QK5IUYVA.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs.map → chunk-QK5IUYVA.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-YJ4KVBWC.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-DHZIWGLJ.mjs +11 -0
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs → otel-W6KWKVW5.mjs} +113 -65
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs.map → otel-W6KWKVW5.mjs.map} +3 -3
- 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-HPUPCMRG.mjs → sentry-log-processor-3BDS4BB4.mjs} +60 -44
- 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 +20 -19
- package/dist/types/src/otel/logs.js.map +1 -1
- package/dist/types/src/otel/metrics.js +5 -2
- 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.js +3 -1
- package/dist/types/src/otel/traces-browser.js.map +1 -1
- package/dist/types/src/otel/traces.js +2 -0
- 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 +18 -15
- 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 +2 -2
- package/src/otel/metrics.ts +1 -1
- package/src/otel/otel.ts +1 -1
- package/src/otel/traces-browser.ts +3 -3
- package/src/otel/traces.ts +2 -2
- 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-G6EE7HFV.mjs.map +0 -7
- package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
- package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
- package/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map +0 -7
- package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
- package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
- package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
- package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
- package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
- package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
- package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
- package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -60
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
- package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
- package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
- package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
- package/dist/lib/node/segment/index.cjs +0 -33
- package/dist/lib/node/segment/index.cjs.map +0 -7
- package/dist/lib/node/sentry/index.cjs +0 -46
- package/dist/lib/node/sentry/index.cjs.map +0 -7
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-AZMSBUWR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-M7QJLFGR.mjs.map +0 -7
- package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
- package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-5ICT2XF2.mjs.map} +0 -0
- /package/dist/lib/browser/{observability-HDE3I7TA.mjs.map → observability-ZVQ2YD62.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs.map → chunk-QUZL7LKE.mjs.map} +0 -0
- /package/dist/lib/node-esm/{observability-7BTI46NM.mjs.map → observability-DHZIWGLJ.mjs.map} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
Observability
|
|
4
|
+
} from "./chunk-Q2I5AUBI.mjs";
|
|
5
|
+
import "./chunk-24NMRR4E.mjs";
|
|
6
|
+
import "./chunk-QUZL7LKE.mjs";
|
|
7
|
+
import "./chunk-QK5IUYVA.mjs";
|
|
8
|
+
export {
|
|
9
|
+
Observability
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=observability-DHZIWGLJ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
import {
|
|
3
|
+
// src/otel/otel.ts
|
|
4
|
+
import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
|
|
5
5
|
var setDiagLogger = (level) => {
|
|
6
6
|
const logLevel = DiagLogLevel[level];
|
|
7
7
|
if (logLevel) {
|
|
@@ -9,16 +9,38 @@ var setDiagLogger = (level) => {
|
|
|
9
9
|
}
|
|
10
10
|
};
|
|
11
11
|
|
|
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
15
|
import { Resource } 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);
|
|
@@ -58,12 +80,6 @@ var OtelLogs = class {
|
|
|
58
80
|
});
|
|
59
81
|
this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
|
|
60
82
|
}
|
|
61
|
-
flush() {
|
|
62
|
-
return this._loggerProvider.forceFlush();
|
|
63
|
-
}
|
|
64
|
-
close() {
|
|
65
|
-
return this._loggerProvider.shutdown();
|
|
66
|
-
}
|
|
67
83
|
};
|
|
68
84
|
var convertLevel = (level) => {
|
|
69
85
|
switch (level) {
|
|
@@ -82,56 +98,29 @@ var convertLevel = (level) => {
|
|
|
82
98
|
}
|
|
83
99
|
};
|
|
84
100
|
|
|
85
|
-
//
|
|
101
|
+
// src/otel/metrics.ts
|
|
86
102
|
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
87
103
|
import { Resource as Resource2 } from "@opentelemetry/resources";
|
|
88
104
|
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
89
105
|
import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME2, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION2 } from "@opentelemetry/semantic-conventions";
|
|
90
106
|
import { log } from "@dxos/log";
|
|
91
107
|
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
]
|
|
108
|
+
function _define_property2(obj, key, value) {
|
|
109
|
+
if (key in obj) {
|
|
110
|
+
Object.defineProperty(obj, key, {
|
|
111
|
+
value,
|
|
112
|
+
enumerable: true,
|
|
113
|
+
configurable: true,
|
|
114
|
+
writable: true
|
|
117
115
|
});
|
|
118
|
-
|
|
119
|
-
|
|
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);
|
|
116
|
+
} else {
|
|
117
|
+
obj[key] = value;
|
|
134
118
|
}
|
|
119
|
+
return obj;
|
|
120
|
+
}
|
|
121
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/otel/metrics.ts";
|
|
122
|
+
var EXPORT_INTERVAL = 60 * 1e3;
|
|
123
|
+
var OtelMetrics = class {
|
|
135
124
|
gauge(name, value, tags) {
|
|
136
125
|
const gauge = this._meter.createGauge(name);
|
|
137
126
|
log("otel gauge", {
|
|
@@ -198,6 +187,50 @@ var OtelMetrics = class {
|
|
|
198
187
|
close() {
|
|
199
188
|
return this._meterProvider.shutdown();
|
|
200
189
|
}
|
|
190
|
+
constructor(options) {
|
|
191
|
+
_define_property2(this, "options", void 0);
|
|
192
|
+
_define_property2(this, "_meterProvider", void 0);
|
|
193
|
+
_define_property2(this, "_meter", void 0);
|
|
194
|
+
_define_property2(this, "_gauges", void 0);
|
|
195
|
+
this.options = options;
|
|
196
|
+
this._gauges = /* @__PURE__ */ new Map();
|
|
197
|
+
setDiagLogger(options.consoleDiagLogLevel);
|
|
198
|
+
const resource = Resource2.default().merge(new Resource2({
|
|
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) {
|
|
@@ -210,7 +243,7 @@ var convertTags = (data) => {
|
|
|
210
243
|
}
|
|
211
244
|
};
|
|
212
245
|
|
|
213
|
-
//
|
|
246
|
+
// src/otel/traces.ts
|
|
214
247
|
import { trace } from "@opentelemetry/api";
|
|
215
248
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
216
249
|
import { Resource as Resource3 } from "@opentelemetry/resources";
|
|
@@ -218,8 +251,34 @@ import { BasicTracerProvider, BatchSpanProcessor, ConsoleSpanExporter, SimpleSpa
|
|
|
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";
|
|
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
|
|
261
|
+
});
|
|
262
|
+
} else {
|
|
263
|
+
obj[key] = value;
|
|
264
|
+
}
|
|
265
|
+
return obj;
|
|
266
|
+
}
|
|
221
267
|
var OtelTraces = class {
|
|
268
|
+
start() {
|
|
269
|
+
log2("trace processor registered");
|
|
270
|
+
TRACE_PROCESSOR2.remoteTracing.registerProcessor({
|
|
271
|
+
startSpan: (options) => {
|
|
272
|
+
log2("begin otel trace", {
|
|
273
|
+
options
|
|
274
|
+
});
|
|
275
|
+
return this._tracer.startSpan(options.name, options);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
222
279
|
constructor(options) {
|
|
280
|
+
_define_property3(this, "options", void 0);
|
|
281
|
+
_define_property3(this, "_tracer", void 0);
|
|
223
282
|
this.options = options;
|
|
224
283
|
const resource = Resource3.default().merge(new Resource3({
|
|
225
284
|
[SEMRESATTRS_SERVICE_NAME3]: this.options.serviceName,
|
|
@@ -239,17 +298,6 @@ var OtelTraces = class {
|
|
|
239
298
|
tracerProvider.register();
|
|
240
299
|
this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
241
300
|
}
|
|
242
|
-
start() {
|
|
243
|
-
log2("trace processor registered");
|
|
244
|
-
TRACE_PROCESSOR2.remoteTracing.registerProcessor({
|
|
245
|
-
startSpan: (options) => {
|
|
246
|
-
log2("begin otel trace", {
|
|
247
|
-
options
|
|
248
|
-
});
|
|
249
|
-
return this._tracer.startSpan(options.name, options);
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
301
|
};
|
|
254
302
|
export {
|
|
255
303
|
OtelLogs,
|
|
@@ -257,4 +305,4 @@ export {
|
|
|
257
305
|
OtelTraces,
|
|
258
306
|
setDiagLogger
|
|
259
307
|
};
|
|
260
|
-
//# sourceMappingURL=otel-
|
|
308
|
+
//# sourceMappingURL=otel-W6KWKVW5.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 {
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,
|
|
6
|
-
"names": ["
|
|
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 { Resource } 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 = Resource.default().merge(\n new Resource({\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({ resource });\n this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));\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 Attributes, type Meter, type ObservableGauge } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { Resource } 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\ntype SynchronousGauge = {\n gauge: ObservableGauge<Attributes>;\n nextValue: number;\n nextTags?: any;\n};\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\n private _gauges = new Map<string, SynchronousGauge>();\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 = Resource.default().merge(\n new Resource({\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 { Resource } 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 = Resource.default().merge(\n new Resource({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const tracerProvider = new BasicTracerProvider({ resource });\n tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));\n tracerProvider.addSpanProcessor(\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 tracerProvider.register();\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", "Resource", "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", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "addLogRecordProcessor", "BatchLogRecordProcessor", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "OTLPMetricExporter", "Resource", "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", "_gauges", "Map", "setDiagLogger", "consoleDiagLogLevel", "resource", "Resource", "default", "merge", "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", "Resource", "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", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "tracerProvider", "BasicTracerProvider", "addSpanProcessor", "SimpleSpanProcessor", "ConsoleSpanExporter", "BatchSpanProcessor", "OTLPTraceExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "register", "trace", "getTracer"]
|
|
7
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-HPUPCMRG.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) {
|