@dxos/observability 0.8.3 → 0.8.4-main.28f8d3d
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-G6EE7HFV.mjs → chunk-4PRNMJKD.mjs} +15 -14
- package/dist/lib/browser/chunk-4PRNMJKD.mjs.map +7 -0
- package/dist/lib/browser/chunk-5ICT2XF2.mjs +1 -0
- package/dist/lib/browser/{chunk-YQJELTRP.mjs → chunk-I5VYFJ6C.mjs} +64 -41
- package/dist/lib/browser/chunk-I5VYFJ6C.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/index.mjs +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-VMNREW6G.mjs +10 -0
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs → otel-VKOLQDIM.mjs} +19 -10
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs.map → otel-VKOLQDIM.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-JLBMJ2SF.mjs} +54 -54
- package/dist/lib/browser/sentry-log-processor-JLBMJ2SF.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs → chunk-4BWYXXFK.mjs} +64 -41
- package/dist/lib/{browser/chunk-YQJELTRP.mjs.map → node-esm/chunk-4BWYXXFK.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/{chunk-AZMSBUWR.mjs → chunk-RM3E3H7X.mjs} +21 -19
- package/dist/lib/node-esm/chunk-RM3E3H7X.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-LKATG37M.mjs +11 -0
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs → otel-SDH2ZRXT.mjs} +17 -8
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs.map → otel-SDH2ZRXT.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-C4UGMAMV.mjs} +54 -54
- package/dist/lib/node-esm/sentry-log-processor-C4UGMAMV.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-VMNREW6G.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-LKATG37M.mjs.map} +0 -0
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var otel_VF5YNCR3_exports = {};
|
|
20
|
-
__export(otel_VF5YNCR3_exports, {
|
|
21
|
-
OtelLogs: () => OtelLogs,
|
|
22
|
-
OtelMetrics: () => OtelMetrics,
|
|
23
|
-
OtelTraces: () => OtelTraces,
|
|
24
|
-
setDiagLogger: () => setDiagLogger
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(otel_VF5YNCR3_exports);
|
|
27
|
-
var import_api = require("@opentelemetry/api");
|
|
28
|
-
var import_api_logs = require("@opentelemetry/api-logs");
|
|
29
|
-
var import_exporter_logs_otlp_http = require("@opentelemetry/exporter-logs-otlp-http");
|
|
30
|
-
var import_resources = require("@opentelemetry/resources");
|
|
31
|
-
var import_sdk_logs = require("@opentelemetry/sdk-logs");
|
|
32
|
-
var import_semantic_conventions = require("@opentelemetry/semantic-conventions");
|
|
33
|
-
var import_log = require("@dxos/log");
|
|
34
|
-
var import_util = require("@dxos/util");
|
|
35
|
-
var import_exporter_metrics_otlp_http = require("@opentelemetry/exporter-metrics-otlp-http");
|
|
36
|
-
var import_resources2 = require("@opentelemetry/resources");
|
|
37
|
-
var import_sdk_metrics = require("@opentelemetry/sdk-metrics");
|
|
38
|
-
var import_semantic_conventions2 = require("@opentelemetry/semantic-conventions");
|
|
39
|
-
var import_log2 = require("@dxos/log");
|
|
40
|
-
var import_tracing = require("@dxos/tracing");
|
|
41
|
-
var import_api2 = require("@opentelemetry/api");
|
|
42
|
-
var import_exporter_trace_otlp_http = require("@opentelemetry/exporter-trace-otlp-http");
|
|
43
|
-
var import_resources3 = require("@opentelemetry/resources");
|
|
44
|
-
var import_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
|
|
45
|
-
var import_semantic_conventions3 = require("@opentelemetry/semantic-conventions");
|
|
46
|
-
var import_debug = require("debug");
|
|
47
|
-
var import_tracing2 = require("@dxos/tracing");
|
|
48
|
-
var setDiagLogger = (level) => {
|
|
49
|
-
const logLevel = import_api.DiagLogLevel[level];
|
|
50
|
-
if (logLevel) {
|
|
51
|
-
import_api.diag.setLogger(new import_api.DiagConsoleLogger(), logLevel);
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
var OtelLogs = class {
|
|
55
|
-
constructor(options) {
|
|
56
|
-
this.options = options;
|
|
57
|
-
this.logProcessor = (config, entry) => {
|
|
58
|
-
const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
|
|
59
|
-
if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
const record = {
|
|
63
|
-
...entry,
|
|
64
|
-
...entry.meta ? {
|
|
65
|
-
meta: {
|
|
66
|
-
file: (0, import_log.getRelativeFilename)(entry.meta.F),
|
|
67
|
-
line: entry.meta.L
|
|
68
|
-
}
|
|
69
|
-
} : {},
|
|
70
|
-
context: (0, import_util.jsonlogify)((0, import_log.getContextFromEntry)(entry))
|
|
71
|
-
};
|
|
72
|
-
logger.emit({
|
|
73
|
-
severityNumber: convertLevel(entry.level),
|
|
74
|
-
body: JSON.stringify(record),
|
|
75
|
-
attributes: this.options.getTags()
|
|
76
|
-
});
|
|
77
|
-
};
|
|
78
|
-
setDiagLogger(options.consoleDiagLogLevel);
|
|
79
|
-
const resource = import_resources.Resource.default().merge(new import_resources.Resource({
|
|
80
|
-
[import_semantic_conventions.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
81
|
-
[import_semantic_conventions.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
|
|
82
|
-
}));
|
|
83
|
-
const logExporter = new import_exporter_logs_otlp_http.OTLPLogExporter({
|
|
84
|
-
url: this.options.endpoint + "/v1/logs",
|
|
85
|
-
headers: {
|
|
86
|
-
Authorization: this.options.authorizationHeader
|
|
87
|
-
},
|
|
88
|
-
concurrencyLimit: 10
|
|
89
|
-
});
|
|
90
|
-
this._loggerProvider = new import_sdk_logs.LoggerProvider({
|
|
91
|
-
resource
|
|
92
|
-
});
|
|
93
|
-
this._loggerProvider.addLogRecordProcessor(new import_sdk_logs.BatchLogRecordProcessor(logExporter));
|
|
94
|
-
}
|
|
95
|
-
flush() {
|
|
96
|
-
return this._loggerProvider.forceFlush();
|
|
97
|
-
}
|
|
98
|
-
close() {
|
|
99
|
-
return this._loggerProvider.shutdown();
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
var convertLevel = (level) => {
|
|
103
|
-
switch (level) {
|
|
104
|
-
case import_log.LogLevel.DEBUG:
|
|
105
|
-
return import_api_logs.SeverityNumber.DEBUG;
|
|
106
|
-
case import_log.LogLevel.VERBOSE:
|
|
107
|
-
return import_api_logs.SeverityNumber.INFO;
|
|
108
|
-
case import_log.LogLevel.INFO:
|
|
109
|
-
return import_api_logs.SeverityNumber.INFO;
|
|
110
|
-
case import_log.LogLevel.WARN:
|
|
111
|
-
return import_api_logs.SeverityNumber.WARN;
|
|
112
|
-
case import_log.LogLevel.ERROR:
|
|
113
|
-
return import_api_logs.SeverityNumber.ERROR;
|
|
114
|
-
default:
|
|
115
|
-
return import_api_logs.SeverityNumber.ERROR;
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/observability/src/otel/metrics.ts";
|
|
119
|
-
var EXPORT_INTERVAL = 60 * 1e3;
|
|
120
|
-
var OtelMetrics = class {
|
|
121
|
-
constructor(options) {
|
|
122
|
-
this.options = options;
|
|
123
|
-
this._gauges = /* @__PURE__ */ new Map();
|
|
124
|
-
setDiagLogger(options.consoleDiagLogLevel);
|
|
125
|
-
const resource = import_resources2.Resource.default().merge(new import_resources2.Resource({
|
|
126
|
-
[import_semantic_conventions2.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
127
|
-
[import_semantic_conventions2.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
|
|
128
|
-
}));
|
|
129
|
-
const grafanaMetricReader = new import_sdk_metrics.PeriodicExportingMetricReader({
|
|
130
|
-
exporter: new import_exporter_metrics_otlp_http.OTLPMetricExporter({
|
|
131
|
-
url: this.options.endpoint + "/v1/metrics",
|
|
132
|
-
headers: {
|
|
133
|
-
Authorization: this.options.authorizationHeader
|
|
134
|
-
}
|
|
135
|
-
}),
|
|
136
|
-
exportIntervalMillis: EXPORT_INTERVAL
|
|
137
|
-
});
|
|
138
|
-
this._meterProvider = new import_sdk_metrics.MeterProvider({
|
|
139
|
-
resource,
|
|
140
|
-
readers: [
|
|
141
|
-
grafanaMetricReader
|
|
142
|
-
]
|
|
143
|
-
});
|
|
144
|
-
this._meter = this._meterProvider.getMeter("dxos-observability");
|
|
145
|
-
const metrics = {
|
|
146
|
-
// TODO: update metrics names and remove prefix?
|
|
147
|
-
increment: (name, value, data) => {
|
|
148
|
-
this.increment(name, value, convertTags(data));
|
|
149
|
-
},
|
|
150
|
-
distribution: (name, value, data) => {
|
|
151
|
-
this.distribution(name, value, convertTags(data));
|
|
152
|
-
},
|
|
153
|
-
set: (name, value, data) => {
|
|
154
|
-
},
|
|
155
|
-
gauge: (name, value, data) => {
|
|
156
|
-
this.gauge(name, value, convertTags(data));
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
import_tracing.TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
160
|
-
}
|
|
161
|
-
gauge(name, value, tags) {
|
|
162
|
-
const gauge = this._meter.createGauge(name);
|
|
163
|
-
(0, import_log2.log)("otel gauge", {
|
|
164
|
-
name,
|
|
165
|
-
value,
|
|
166
|
-
tags: {
|
|
167
|
-
...this.options.getTags(),
|
|
168
|
-
...tags
|
|
169
|
-
}
|
|
170
|
-
}, {
|
|
171
|
-
F: __dxlog_file,
|
|
172
|
-
L: 77,
|
|
173
|
-
S: this,
|
|
174
|
-
C: (f, a) => f(...a)
|
|
175
|
-
});
|
|
176
|
-
gauge.record(value, {
|
|
177
|
-
...this.options.getTags(),
|
|
178
|
-
...tags
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
increment(name, value, tags) {
|
|
182
|
-
const counter = this._meter.createCounter(name);
|
|
183
|
-
(0, import_log2.log)("otel counter", {
|
|
184
|
-
name,
|
|
185
|
-
value,
|
|
186
|
-
tags: {
|
|
187
|
-
...this.options.getTags(),
|
|
188
|
-
...tags
|
|
189
|
-
}
|
|
190
|
-
}, {
|
|
191
|
-
F: __dxlog_file,
|
|
192
|
-
L: 83,
|
|
193
|
-
S: this,
|
|
194
|
-
C: (f, a) => f(...a)
|
|
195
|
-
});
|
|
196
|
-
counter.add(value ?? 1, {
|
|
197
|
-
...this.options.getTags(),
|
|
198
|
-
...tags
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
distribution(name, value, tags) {
|
|
202
|
-
const distribution = this._meter.createHistogram(name);
|
|
203
|
-
(0, import_log2.log)("otel distribution", {
|
|
204
|
-
name,
|
|
205
|
-
value,
|
|
206
|
-
tags: {
|
|
207
|
-
...this.options.getTags(),
|
|
208
|
-
...tags
|
|
209
|
-
}
|
|
210
|
-
}, {
|
|
211
|
-
F: __dxlog_file,
|
|
212
|
-
L: 89,
|
|
213
|
-
S: this,
|
|
214
|
-
C: (f, a) => f(...a)
|
|
215
|
-
});
|
|
216
|
-
distribution.record(value, {
|
|
217
|
-
...this.options.getTags(),
|
|
218
|
-
...tags
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
flush() {
|
|
222
|
-
return this._meterProvider.forceFlush();
|
|
223
|
-
}
|
|
224
|
-
close() {
|
|
225
|
-
return this._meterProvider.shutdown();
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
var convertTags = (data) => {
|
|
229
|
-
if (data && data.tags) {
|
|
230
|
-
return Object.entries(data.tags).reduce((obj, [key, value]) => {
|
|
231
|
-
obj[key] = value;
|
|
232
|
-
return obj;
|
|
233
|
-
}, {});
|
|
234
|
-
} else {
|
|
235
|
-
return {};
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
var OtelTraces = class {
|
|
239
|
-
constructor(options) {
|
|
240
|
-
this.options = options;
|
|
241
|
-
const resource = import_resources3.Resource.default().merge(new import_resources3.Resource({
|
|
242
|
-
[import_semantic_conventions3.SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
|
|
243
|
-
[import_semantic_conventions3.SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
|
|
244
|
-
}));
|
|
245
|
-
const tracerProvider = new import_sdk_trace_base.BasicTracerProvider({
|
|
246
|
-
resource
|
|
247
|
-
});
|
|
248
|
-
tracerProvider.addSpanProcessor(new import_sdk_trace_base.SimpleSpanProcessor(new import_sdk_trace_base.ConsoleSpanExporter()));
|
|
249
|
-
tracerProvider.addSpanProcessor(new import_sdk_trace_base.BatchSpanProcessor(new import_exporter_trace_otlp_http.OTLPTraceExporter({
|
|
250
|
-
url: this.options.endpoint + "/v1/traces",
|
|
251
|
-
headers: {
|
|
252
|
-
Authorization: this.options.authorizationHeader
|
|
253
|
-
},
|
|
254
|
-
concurrencyLimit: 10
|
|
255
|
-
})));
|
|
256
|
-
tracerProvider.register();
|
|
257
|
-
this._tracer = import_api2.trace.getTracer("dxos-observability", this.options.serviceVersion);
|
|
258
|
-
}
|
|
259
|
-
start() {
|
|
260
|
-
(0, import_debug.log)("trace processor registered");
|
|
261
|
-
import_tracing2.TRACE_PROCESSOR.remoteTracing.registerProcessor({
|
|
262
|
-
startSpan: (options) => {
|
|
263
|
-
(0, import_debug.log)("begin otel trace", {
|
|
264
|
-
options
|
|
265
|
-
});
|
|
266
|
-
return this._tracer.startSpan(options.name, options);
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
272
|
-
0 && (module.exports = {
|
|
273
|
-
OtelLogs,
|
|
274
|
-
OtelMetrics,
|
|
275
|
-
OtelTraces,
|
|
276
|
-
setDiagLogger
|
|
277
|
-
});
|
|
278
|
-
//# sourceMappingURL=otel-VF5YNCR3.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
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 { diag, DiagConsoleLogger, DiagLogLevel } 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 getContextFromEntry,\n getRelativeFilename,\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\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 { TRACE_PROCESSOR, type MetricData } 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 { trace, type Tracer } 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 { TRACE_PROCESSOR, type StartSpanOptions } 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": ["import_resources", "import_semantic_conventions", "import_log", "import_api", "import_tracing", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "OtelLogs", "options", "logProcessor", "config", "entry", "logger", "_loggerProvider", "getLogger", "serviceVersion", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "JSON", "stringify", "attributes", "getTags", "consoleDiagLogLevel", "resource", "Resource", "default", "merge", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "addLogRecordProcessor", "BatchLogRecordProcessor", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "EXPORT_INTERVAL", "OtelMetrics", "_gauges", "Map", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "exportIntervalMillis", "_meterProvider", "MeterProvider", "readers", "_meter", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "counter", "createCounter", "add", "createHistogram", "Object", "entries", "reduce", "obj", "key", "OtelTraces", "tracerProvider", "BasicTracerProvider", "addSpanProcessor", "SimpleSpanProcessor", "ConsoleSpanExporter", "BatchSpanProcessor", "OTLPTraceExporter", "register", "_tracer", "trace", "getTracer", "start", "remoteTracing", "startSpan"]
|
|
7
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var segment_exports = {};
|
|
20
|
-
__export(segment_exports, {
|
|
21
|
-
SegmentTelemetry: () => import_chunk_325GAGFA.SegmentTelemetry,
|
|
22
|
-
TelemetryEvent: () => import_chunk_325GAGFA.TelemetryEvent
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(segment_exports);
|
|
25
|
-
var import_chunk_325GAGFA = require("../chunk-325GAGFA.cjs");
|
|
26
|
-
var import_chunk_GIYJMZEQ = require("../chunk-GIYJMZEQ.cjs");
|
|
27
|
-
var import_chunk_MZ3PMDTP = require("../chunk-MZ3PMDTP.cjs");
|
|
28
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
-
0 && (module.exports = {
|
|
30
|
-
SegmentTelemetry,
|
|
31
|
-
TelemetryEvent
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["index.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n SegmentTelemetry,\n TelemetryEvent\n} from \"../chunk-325GAGFA.cjs\";\nimport \"../chunk-GIYJMZEQ.cjs\";\nimport \"../chunk-MZ3PMDTP.cjs\";\nexport {\n SegmentTelemetry,\n TelemetryEvent\n};\n//# sourceMappingURL=index.cjs.map\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAGO;AACP,4BAAO;AACP,4BAAO;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var sentry_exports = {};
|
|
20
|
-
__export(sentry_exports, {
|
|
21
|
-
addBreadcrumb: () => import_chunk_MZ3PMDTP.addBreadcrumb,
|
|
22
|
-
captureException: () => import_chunk_MZ3PMDTP.captureException,
|
|
23
|
-
captureMessage: () => import_chunk_MZ3PMDTP.captureMessage,
|
|
24
|
-
captureUserFeedback: () => import_chunk_MZ3PMDTP.captureUserFeedback,
|
|
25
|
-
init: () => import_chunk_MZ3PMDTP.init,
|
|
26
|
-
setTag: () => import_chunk_MZ3PMDTP.setTag,
|
|
27
|
-
setTags: () => import_chunk_MZ3PMDTP.setTags,
|
|
28
|
-
setUser: () => import_chunk_MZ3PMDTP.setUser,
|
|
29
|
-
withScope: () => import_chunk_MZ3PMDTP.withScope
|
|
30
|
-
});
|
|
31
|
-
module.exports = __toCommonJS(sentry_exports);
|
|
32
|
-
var import_chunk_GIYJMZEQ = require("../chunk-GIYJMZEQ.cjs");
|
|
33
|
-
var import_chunk_MZ3PMDTP = require("../chunk-MZ3PMDTP.cjs");
|
|
34
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
35
|
-
0 && (module.exports = {
|
|
36
|
-
addBreadcrumb,
|
|
37
|
-
captureException,
|
|
38
|
-
captureMessage,
|
|
39
|
-
captureUserFeedback,
|
|
40
|
-
init,
|
|
41
|
-
setTag,
|
|
42
|
-
setTags,
|
|
43
|
-
setUser,
|
|
44
|
-
withScope
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["index.cjs"],
|
|
4
|
-
"sourcesContent": ["import \"../chunk-GIYJMZEQ.cjs\";\nimport {\n addBreadcrumb,\n captureException,\n captureMessage,\n captureUserFeedback,\n init,\n setTag,\n setTags,\n setUser,\n withScope\n} from \"../chunk-MZ3PMDTP.cjs\";\nexport {\n addBreadcrumb,\n captureException,\n captureMessage,\n captureUserFeedback,\n init,\n setTag,\n setTags,\n setUser,\n withScope\n};\n//# sourceMappingURL=index.cjs.map\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAO;AACP,4BAUO;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var sentry_log_processor_CCV4RL7N_exports = {};
|
|
20
|
-
__export(sentry_log_processor_CCV4RL7N_exports, {
|
|
21
|
-
SentryLogProcessor: () => SentryLogProcessor
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(sentry_log_processor_CCV4RL7N_exports);
|
|
24
|
-
var import_chunk_MZ3PMDTP = require("./chunk-MZ3PMDTP.cjs");
|
|
25
|
-
var import_invariant = require("@dxos/invariant");
|
|
26
|
-
var import_log = require("@dxos/log");
|
|
27
|
-
var import_util = require("@dxos/util");
|
|
28
|
-
var MAX_LOG_BREADCRUMBS = 150;
|
|
29
|
-
var SentryLogProcessor = class {
|
|
30
|
-
constructor() {
|
|
31
|
-
this._breadcrumbs = new import_util.CircularBuffer(MAX_LOG_BREADCRUMBS);
|
|
32
|
-
this.logProcessor = (config, entry) => {
|
|
33
|
-
const { level, meta, error } = entry;
|
|
34
|
-
if (!(0, import_log.shouldLog)(entry, config.captureFilters) || meta?.S?.remoteSessionId) {
|
|
35
|
-
if (entry.level > import_log.LogLevel.DEBUG) {
|
|
36
|
-
this._addBreadcrumb(void 0, entry.message, convertLevel(entry.level), void 0);
|
|
37
|
-
}
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (entry.level !== import_log.LogLevel.WARN && entry.level !== import_log.LogLevel.ERROR) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
(0, import_chunk_MZ3PMDTP.withScope)((scope) => {
|
|
44
|
-
const severity = convertLevel(level);
|
|
45
|
-
scope.setLevel(severity);
|
|
46
|
-
scope.setContext("dxoslog", entry.context ?? null);
|
|
47
|
-
if (meta) {
|
|
48
|
-
scope.setTag("transaction", `${getRelativeFilename(meta.F)}:${meta.L}`);
|
|
49
|
-
if (meta.S?.hostSessionId) {
|
|
50
|
-
scope.setTags({
|
|
51
|
-
service_host_issue: true,
|
|
52
|
-
service_host_session: meta.S?.hostSessionId
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
if (!Number.isNaN(meta.S?.uptimeSeconds)) {
|
|
56
|
-
scope.setExtra("uptime_seconds", meta.S?.uptimeSeconds);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
const extendedMessage = formatMessageForSentry(entry);
|
|
60
|
-
let capturedError = error;
|
|
61
|
-
if (capturedError == null && entry.level === import_log.LogLevel.ERROR) {
|
|
62
|
-
capturedError = Object.values(entry.context ?? {}).find((v) => v instanceof Error);
|
|
63
|
-
}
|
|
64
|
-
if (capturedError) {
|
|
65
|
-
if (capturedError instanceof import_invariant.InvariantViolation) {
|
|
66
|
-
scope.setExtra("invariant_violation", true);
|
|
67
|
-
}
|
|
68
|
-
const isMessageDifferentFromStackTrace = error == null;
|
|
69
|
-
if (isMessageDifferentFromStackTrace) {
|
|
70
|
-
scope.setExtra("message", extendedMessage);
|
|
71
|
-
}
|
|
72
|
-
const eventId2 = (0, import_chunk_MZ3PMDTP.captureException)(capturedError);
|
|
73
|
-
this._addBreadcrumb(eventId2, extendedMessage, severity, entry.context);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
scope.setFingerprint([
|
|
77
|
-
entry.message
|
|
78
|
-
]);
|
|
79
|
-
const eventId = (0, import_chunk_MZ3PMDTP.captureMessage)(extendedMessage);
|
|
80
|
-
this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);
|
|
81
|
-
});
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
addLogBreadcrumbsTo(event) {
|
|
85
|
-
event.breadcrumbs ??= [];
|
|
86
|
-
for (const breadcrumb of this._breadcrumbs) {
|
|
87
|
-
event.breadcrumbs.push(breadcrumb);
|
|
88
|
-
}
|
|
89
|
-
event.breadcrumbs.sort((b1, b2) => {
|
|
90
|
-
if (b1.timestamp === void 0 || b2.timestamp === void 0) {
|
|
91
|
-
return b1.timestamp === b2.timestamp ? 0 : b1.timestamp === void 0 ? -1 : 1;
|
|
92
|
-
}
|
|
93
|
-
return b1.timestamp - b2.timestamp;
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
_addBreadcrumb(eventId, message, severity, context) {
|
|
97
|
-
const breadcrumb = {
|
|
98
|
-
type: "console",
|
|
99
|
-
level: severity,
|
|
100
|
-
event_id: eventId,
|
|
101
|
-
category: "log",
|
|
102
|
-
message,
|
|
103
|
-
data: context,
|
|
104
|
-
timestamp: Math.floor(Date.now() / 1e3)
|
|
105
|
-
};
|
|
106
|
-
const lastRecorded = this._breadcrumbs.getLast();
|
|
107
|
-
if (lastRecorded && lastRecorded.message === breadcrumb.message) {
|
|
108
|
-
const firstBreadcrumbData = lastRecorded.data?.firstBreadcrumbData ?? lastRecorded.data ?? {};
|
|
109
|
-
const mergedBreadcrumbCount = Number.isNaN(lastRecorded.data?.mergedBreadcrumbCount) ? 1 : Number(lastRecorded.data?.mergedBreadcrumbCount);
|
|
110
|
-
lastRecorded.data = {
|
|
111
|
-
mergedBreadcrumbCount: mergedBreadcrumbCount + 1,
|
|
112
|
-
firstBreadcrumbData,
|
|
113
|
-
lastBreadcrumbData: breadcrumb.data
|
|
114
|
-
};
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
this._breadcrumbs.push(breadcrumb);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
var formatMessageForSentry = (entry) => {
|
|
121
|
-
let scopePrefix;
|
|
122
|
-
if (entry.meta?.S) {
|
|
123
|
-
const scope = entry.meta?.S;
|
|
124
|
-
scopePrefix = scope.name || (0, import_util.getDebugName)(scope);
|
|
125
|
-
}
|
|
126
|
-
if (scopePrefix == null) {
|
|
127
|
-
return entry.message;
|
|
128
|
-
}
|
|
129
|
-
const workerPrefix = entry.meta?.S?.hostSessionId ? "[worker] " : "";
|
|
130
|
-
return `${workerPrefix}${scopePrefix} ${entry.message}`;
|
|
131
|
-
};
|
|
132
|
-
var convertLevel = (level) => {
|
|
133
|
-
switch (level) {
|
|
134
|
-
case import_log.LogLevel.ERROR:
|
|
135
|
-
return "error";
|
|
136
|
-
case import_log.LogLevel.VERBOSE:
|
|
137
|
-
return "info";
|
|
138
|
-
case import_log.LogLevel.INFO:
|
|
139
|
-
return "info";
|
|
140
|
-
case import_log.LogLevel.WARN:
|
|
141
|
-
return "warning";
|
|
142
|
-
case import_log.LogLevel.DEBUG:
|
|
143
|
-
case import_log.LogLevel.TRACE:
|
|
144
|
-
return "debug";
|
|
145
|
-
default:
|
|
146
|
-
throw never(level);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
var never = (_) => {
|
|
150
|
-
return new Error("unhandled value");
|
|
151
|
-
};
|
|
152
|
-
var getRelativeFilename = (filename) => {
|
|
153
|
-
const match = filename.match(/.+\/(packages\/.+\/.+)/);
|
|
154
|
-
if (match) {
|
|
155
|
-
const [, filePath] = match;
|
|
156
|
-
return filePath;
|
|
157
|
-
}
|
|
158
|
-
return filename;
|
|
159
|
-
};
|
|
160
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
161
|
-
0 && (module.exports = {
|
|
162
|
-
SentryLogProcessor
|
|
163
|
-
});
|
|
164
|
-
//# sourceMappingURL=sentry-log-processor-CCV4RL7N.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/sentry/sentry-log-processor.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Breadcrumb, SeverityLevel, Event } 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 { withScope, captureException, captureMessage } 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(undefined, entry.message, convertLevel(entry.level), undefined);\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 scope.setFingerprint([entry.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) => {\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 entry.message;\n }\n\n const workerPrefix = entry.meta?.S?.hostSessionId ? '[worker] ' : '';\n return `${workerPrefix}${scopePrefix} ${entry.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": ["MAX_LOG_BREADCRUMBS", "SentryLogProcessor", "_breadcrumbs", "CircularBuffer", "logProcessor", "config", "entry", "level", "meta", "error", "shouldLog", "captureFilters", "S", "remoteSessionId", "LogLevel", "DEBUG", "_addBreadcrumb", "undefined", "message", "convertLevel", "WARN", "ERROR", "withScope", "scope", "severity", "setLevel", "setContext", "context", "setTag", "getRelativeFilename", "F", "L", "hostSessionId", "setTags", "service_host_issue", "service_host_session", "Number", "isNaN", "uptimeSeconds", "setExtra", "extendedMessage", "formatMessageForSentry", "capturedError", "Object", "values", "find", "v", "Error", "InvariantViolation", "isMessageDifferentFromStackTrace", "eventId", "captureException", "setFingerprint", "captureMessage", "addLogBreadcrumbsTo", "event", "breadcrumbs", "breadcrumb", "push", "sort", "b1", "b2", "timestamp", "type", "event_id", "category", "data", "Math", "floor", "Date", "now", "lastRecorded", "getLast", "firstBreadcrumbData", "mergedBreadcrumbCount", "lastBreadcrumbData", "scopePrefix", "name", "getDebugName", "workerPrefix", "VERBOSE", "INFO", "TRACE", "never", "_", "filename", "match", "filePath"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/segment/node.ts", "../../../src/segment/base.ts", "../../../src/segment/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { Analytics, type IdentifyParams } from '@segment/analytics-node';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { AbstractSegmentTelemetry } from './base';\nimport type { SegmentTelemetryOptions, PageOptions, TrackOptions } from './types';\nimport { captureException } from '../sentry';\n\n/**\n * Node telemetry.\n */\nexport class SegmentTelemetry extends AbstractSegmentTelemetry {\n private _analytics?: Analytics;\n\n constructor({ apiKey, batchSize, getTags }: SegmentTelemetryOptions) {\n super(getTags);\n try {\n invariant(apiKey, 'Missing API key.');\n this._analytics = new Analytics({\n writeKey: apiKey,\n flushAt: batchSize,\n });\n } catch (err) {\n log.catch('Failed to initialize telemetry', err);\n }\n }\n\n identify(options: IdentifyParams): void {\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'identify' });\n return;\n }\n\n try {\n this._analytics.identify(options);\n } catch (err) {\n log.catch('Failed to identify', err);\n }\n }\n\n page(options: PageOptions): void {\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'page' });\n return;\n }\n\n try {\n this._analytics.page(this.createPageProps(options));\n } catch (err) {\n log.catch('Failed to track page', err);\n }\n }\n\n track(options: TrackOptions): void {\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'track' });\n return;\n }\n\n log.info('sending event to telemetry', { options });\n try {\n this._analytics.track(this.createTrackProps(options));\n } catch (err) {\n log.catch('Failed to track action', err);\n }\n }\n\n async flush(): Promise<void> {\n if (!this._analytics) {\n log('Analytics not initialized', { action: 'flush' });\n return;\n }\n\n try {\n await this._analytics.flush();\n } catch (err) {\n // are these errors worth capturing?\n captureException(err);\n }\n }\n\n async close(): Promise<void> {\n if (!this._analytics) {\n return;\n }\n\n await this._analytics.closeAndFlush();\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type TrackParams, type PageParams, type IdentifyParams } from '@segment/analytics-node';\n\nimport { log } from '@dxos/log';\n\nimport {\n type IdentityOptions,\n type PageOptions,\n type SegmentIdentityOptions,\n type Tags,\n TelemetryEvent,\n type TrackOptions,\n} from './types';\n\n/**\n * NOTE: Segment provides a default ID if we don't provide one.\n */\nconst getIdentityOptions = ({ did, installationId }: IdentityOptions): SegmentIdentityOptions => {\n if (!did && !installationId) {\n log.warn('No telemetry identifier provided.');\n }\n\n return {\n userId: did,\n anonymousId: installationId,\n } as SegmentIdentityOptions;\n};\n\n/**\n * Base class for Node and BrowserSegment telemetry.\n */\nexport abstract class AbstractSegmentTelemetry {\n constructor(private readonly _getTags: () => Tags) {}\n\n abstract identify(options: IdentifyParams): void;\n\n abstract page(options: PageOptions): void;\n\n abstract track(options: TrackOptions): void;\n\n protected createPageProps(options: PageOptions): PageParams {\n const { properties, ...rest } = options;\n return {\n ...getIdentityOptions(options),\n ...rest,\n properties: {\n common: this._getTags(),\n custom: properties,\n },\n };\n }\n\n protected createTrackProps(options: TrackOptions): TrackParams {\n const { event, action, properties, ...rest } = options;\n return {\n ...getIdentityOptions(options),\n ...rest,\n event: event ?? TelemetryEvent.ACTION,\n properties: {\n action,\n common: this._getTags(),\n custom: properties,\n },\n };\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nexport type Tags = Record<string, string>;\n\nexport type SegmentTelemetryOptions = {\n apiKey?: string;\n batchSize?: number;\n enable?: boolean;\n getTags: () => Tags;\n};\n\n// Copied from @segment/analytics-node.\nexport type SegmentIdentityOptions =\n | { userId: string; anonymousId?: string }\n | { userId?: string; anonymousId: string };\n\n// TODO(burdon): Should require one or the other.\nexport type IdentityOptions = { did?: string; installationId?: string };\n\nexport type CommonOptions = IdentityOptions & {\n timestamp?: Date;\n properties?: Record<string, unknown>;\n};\n\n/**\n * Page views.\n * https://segment.com/docs/connections/sources/catalog/libraries/server/node/#page\n */\nexport type PageOptions = CommonOptions & {\n category?: string;\n name?: string;\n};\n\n/**\n * Track actions.\n * https://segment.com/docs/connections/sources/catalog/libraries/server/node/#track\n */\nexport type TrackOptions = CommonOptions & {\n event?: TelemetryEvent;\n action: string;\n};\n\n/**\n * Each event will be mapped to a different Postgres table via segment.\n */\nexport enum TelemetryEvent {\n /**\n * Use actions.\n */\n ACTION = 'action',\n /**\n * High-volume technical metrics.\n */\n METRICS = 'metrics',\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Analytics", "invariant", "log", "log", "TelemetryEvent", "getIdentityOptions", "did", "installationId", "log", "warn", "userId", "anonymousId", "AbstractSegmentTelemetry", "_getTags", "createPageProps", "options", "properties", "rest", "common", "custom", "createTrackProps", "event", "action", "TelemetryEvent", "ACTION", "SegmentTelemetry", "AbstractSegmentTelemetry", "apiKey", "batchSize", "getTags", "invariant", "_analytics", "Analytics", "writeKey", "flushAt", "err", "log", "catch", "identify", "options", "action", "page", "createPageProps", "track", "info", "createTrackProps", "flush", "captureException", "close", "closeAndFlush"]
|
|
7
|
-
}
|