@dxos/observability 0.8.4-main.dedc0f3 → 0.8.4-main.e8ec1fe

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/lib/browser/{chunk-MB7KKARJ.mjs → chunk-VIGEEYDR.mjs} +58 -64
  2. package/dist/lib/browser/{chunk-MB7KKARJ.mjs.map → chunk-VIGEEYDR.mjs.map} +2 -2
  3. package/dist/lib/browser/{chunk-VSEBD3XA.mjs → chunk-XNAF22QM.mjs} +27 -40
  4. package/dist/lib/browser/{chunk-VSEBD3XA.mjs.map → chunk-XNAF22QM.mjs.map} +2 -2
  5. package/dist/lib/browser/{chunk-LJO63BXO.mjs → chunk-ZI3ZS3PA.mjs} +1 -1
  6. package/dist/lib/browser/{chunk-LJO63BXO.mjs.map → chunk-ZI3ZS3PA.mjs.map} +1 -1
  7. package/dist/lib/browser/index.mjs +3 -3
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/observability-I65SW7NE.mjs +10 -0
  10. package/dist/lib/browser/{otel-UHLVSR24.mjs → otel-UH7ZRWC2.mjs} +109 -147
  11. package/dist/lib/browser/otel-UH7ZRWC2.mjs.map +7 -0
  12. package/dist/lib/browser/segment/index.mjs +2 -2
  13. package/dist/lib/browser/sentry/index.mjs +1 -1
  14. package/dist/lib/browser/{sentry-log-processor-RG4CFVGL.mjs → sentry-log-processor-5VGDTKZN.mjs} +56 -72
  15. package/dist/lib/browser/sentry-log-processor-5VGDTKZN.mjs.map +7 -0
  16. package/dist/lib/node-esm/{chunk-YLYRR73V.mjs → chunk-MTKIPRBH.mjs} +58 -64
  17. package/dist/lib/node-esm/{chunk-YLYRR73V.mjs.map → chunk-MTKIPRBH.mjs.map} +2 -2
  18. package/dist/lib/node-esm/{chunk-GOWQOSY6.mjs → chunk-OJV247NY.mjs} +33 -58
  19. package/dist/lib/node-esm/{chunk-GOWQOSY6.mjs.map → chunk-OJV247NY.mjs.map} +2 -2
  20. package/dist/lib/node-esm/index.mjs +2 -2
  21. package/dist/lib/node-esm/meta.json +1 -1
  22. package/dist/lib/node-esm/{observability-2CTGITMR.mjs → observability-5KKD7B6J.mjs} +3 -3
  23. package/dist/lib/node-esm/{otel-W6KWKVW5.mjs → otel-7PUCFSTY.mjs} +106 -144
  24. package/dist/lib/node-esm/otel-7PUCFSTY.mjs.map +7 -0
  25. package/dist/lib/node-esm/segment/index.mjs +1 -1
  26. package/dist/lib/node-esm/{sentry-log-processor-3BDS4BB4.mjs → sentry-log-processor-A2EV7P3Y.mjs} +55 -71
  27. package/dist/lib/node-esm/sentry-log-processor-A2EV7P3Y.mjs.map +7 -0
  28. package/dist/types/src/otel/logs.d.ts.map +1 -1
  29. package/dist/types/src/otel/logs.js +6 -4
  30. package/dist/types/src/otel/logs.js.map +1 -1
  31. package/dist/types/src/otel/metrics.d.ts +0 -1
  32. package/dist/types/src/otel/metrics.d.ts.map +1 -1
  33. package/dist/types/src/otel/metrics.js +2 -3
  34. package/dist/types/src/otel/metrics.js.map +1 -1
  35. package/dist/types/src/otel/traces-browser.d.ts.map +1 -1
  36. package/dist/types/src/otel/traces-browser.js +16 -12
  37. package/dist/types/src/otel/traces-browser.js.map +1 -1
  38. package/dist/types/src/otel/traces.d.ts.map +1 -1
  39. package/dist/types/src/otel/traces.js +16 -12
  40. package/dist/types/src/otel/traces.js.map +1 -1
  41. package/dist/types/src/sentry/browser.js +1 -1
  42. package/dist/types/src/sentry/browser.js.map +1 -1
  43. package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
  44. package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
  45. package/dist/types/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +27 -30
  47. package/src/otel/logs.ts +7 -5
  48. package/src/otel/metrics.ts +4 -11
  49. package/src/otel/traces-browser.ts +20 -17
  50. package/src/otel/traces.ts +20 -17
  51. package/src/sentry/browser.ts +1 -1
  52. package/src/sentry/sentry-log-processor.ts +2 -0
  53. package/dist/lib/browser/observability-NZM3OOLO.mjs +0 -10
  54. package/dist/lib/browser/otel-UHLVSR24.mjs.map +0 -7
  55. package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs.map +0 -7
  56. package/dist/lib/node-esm/otel-W6KWKVW5.mjs.map +0 -7
  57. package/dist/lib/node-esm/sentry-log-processor-3BDS4BB4.mjs.map +0 -7
  58. /package/dist/lib/browser/{observability-NZM3OOLO.mjs.map → observability-I65SW7NE.mjs.map} +0 -0
  59. /package/dist/lib/node-esm/{observability-2CTGITMR.mjs.map → observability-5KKD7B6J.mjs.map} +0 -0
@@ -12,59 +12,18 @@ var setDiagLogger = (level) => {
12
12
  // src/otel/logs.ts
13
13
  import { SeverityNumber } from "@opentelemetry/api-logs";
14
14
  import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
15
- import { Resource } from "@opentelemetry/resources";
15
+ import { defaultResource, resourceFromAttributes } from "@opentelemetry/resources";
16
16
  import { BatchLogRecordProcessor, LoggerProvider } from "@opentelemetry/sdk-logs";
17
17
  import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
18
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
- }
33
20
  var OtelLogs = class {
34
- flush() {
35
- return this._loggerProvider.forceFlush();
36
- }
37
- close() {
38
- return this._loggerProvider.shutdown();
39
- }
21
+ options;
22
+ _loggerProvider;
40
23
  constructor(options) {
41
- _define_property(this, "options", void 0);
42
- _define_property(this, "_loggerProvider", void 0);
43
- _define_property(this, "logProcessor", void 0);
44
24
  this.options = options;
45
- this.logProcessor = (config, entry) => {
46
- const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
47
- if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
48
- return;
49
- }
50
- const record = {
51
- ...entry,
52
- ...entry.meta ? {
53
- meta: {
54
- file: getRelativeFilename(entry.meta.F),
55
- line: entry.meta.L
56
- }
57
- } : {},
58
- context: jsonlogify(getContextFromEntry(entry))
59
- };
60
- logger.emit({
61
- severityNumber: convertLevel(entry.level),
62
- body: JSON.stringify(record),
63
- attributes: this.options.getTags()
64
- });
65
- };
66
25
  setDiagLogger(options.consoleDiagLogLevel);
67
- const resource = Resource.default().merge(new Resource({
26
+ const resource = defaultResource().merge(resourceFromAttributes({
68
27
  [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
69
28
  [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion
70
29
  }));
@@ -76,9 +35,38 @@ var OtelLogs = class {
76
35
  concurrencyLimit: 10
77
36
  });
78
37
  this._loggerProvider = new LoggerProvider({
79
- resource
38
+ resource,
39
+ processors: [
40
+ new BatchLogRecordProcessor(logExporter)
41
+ ]
80
42
  });
81
- this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
43
+ }
44
+ logProcessor = (config, entry) => {
45
+ const logger = this._loggerProvider.getLogger("dxos-observability", this.options.serviceVersion);
46
+ if (entry.level < this.options.logLevel || !this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId) {
47
+ return;
48
+ }
49
+ const record = {
50
+ ...entry,
51
+ ...entry.meta ? {
52
+ meta: {
53
+ file: getRelativeFilename(entry.meta.F),
54
+ line: entry.meta.L
55
+ }
56
+ } : {},
57
+ context: jsonlogify(getContextFromEntry(entry))
58
+ };
59
+ logger.emit({
60
+ severityNumber: convertLevel(entry.level),
61
+ body: JSON.stringify(record),
62
+ attributes: this.options.getTags()
63
+ });
64
+ };
65
+ flush() {
66
+ return this._loggerProvider.forceFlush();
67
+ }
68
+ close() {
69
+ return this._loggerProvider.shutdown();
82
70
  }
83
71
  };
84
72
  var convertLevel = (level) => {
@@ -100,27 +88,56 @@ var convertLevel = (level) => {
100
88
 
101
89
  // src/otel/metrics.ts
102
90
  import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
103
- import { Resource as Resource2 } from "@opentelemetry/resources";
91
+ import { defaultResource as defaultResource2, resourceFromAttributes as resourceFromAttributes2 } from "@opentelemetry/resources";
104
92
  import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
105
93
  import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME2, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION2 } from "@opentelemetry/semantic-conventions";
106
94
  import { log } from "@dxos/log";
107
95
  import { TRACE_PROCESSOR } from "@dxos/tracing";
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
115
- });
116
- } else {
117
- obj[key] = value;
118
- }
119
- return obj;
120
- }
121
96
  var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/otel/metrics.ts";
122
97
  var EXPORT_INTERVAL = 60 * 1e3;
123
98
  var OtelMetrics = class {
99
+ options;
100
+ _meterProvider;
101
+ _meter;
102
+ constructor(options) {
103
+ this.options = options;
104
+ setDiagLogger(options.consoleDiagLogLevel);
105
+ const resource = defaultResource2().merge(resourceFromAttributes2({
106
+ [SEMRESATTRS_SERVICE_NAME2]: this.options.serviceName,
107
+ [SEMRESATTRS_SERVICE_VERSION2]: this.options.serviceVersion
108
+ }));
109
+ const grafanaMetricReader = new PeriodicExportingMetricReader({
110
+ exporter: new OTLPMetricExporter({
111
+ url: this.options.endpoint + "/v1/metrics",
112
+ headers: {
113
+ Authorization: this.options.authorizationHeader
114
+ }
115
+ }),
116
+ exportIntervalMillis: EXPORT_INTERVAL
117
+ });
118
+ this._meterProvider = new MeterProvider({
119
+ resource,
120
+ readers: [
121
+ grafanaMetricReader
122
+ ]
123
+ });
124
+ this._meter = this._meterProvider.getMeter("dxos-observability");
125
+ const metrics = {
126
+ // TODO: update metrics names and remove prefix?
127
+ increment: (name, value, data) => {
128
+ this.increment(name, value, convertTags(data));
129
+ },
130
+ distribution: (name, value, data) => {
131
+ this.distribution(name, value, convertTags(data));
132
+ },
133
+ set: (name, value, data) => {
134
+ },
135
+ gauge: (name, value, data) => {
136
+ this.gauge(name, value, convertTags(data));
137
+ }
138
+ };
139
+ TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
140
+ }
124
141
  gauge(name, value, tags) {
125
142
  const gauge = this._meter.createGauge(name);
126
143
  log("otel gauge", {
@@ -132,7 +149,7 @@ var OtelMetrics = class {
132
149
  }
133
150
  }, {
134
151
  F: __dxlog_file,
135
- L: 77,
152
+ L: 70,
136
153
  S: this,
137
154
  C: (f, a) => f(...a)
138
155
  });
@@ -152,7 +169,7 @@ var OtelMetrics = class {
152
169
  }
153
170
  }, {
154
171
  F: __dxlog_file,
155
- L: 83,
172
+ L: 76,
156
173
  S: this,
157
174
  C: (f, a) => f(...a)
158
175
  });
@@ -172,7 +189,7 @@ var OtelMetrics = class {
172
189
  }
173
190
  }, {
174
191
  F: __dxlog_file,
175
- L: 89,
192
+ L: 82,
176
193
  S: this,
177
194
  C: (f, a) => f(...a)
178
195
  });
@@ -187,50 +204,6 @@ var OtelMetrics = class {
187
204
  close() {
188
205
  return this._meterProvider.shutdown();
189
206
  }
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
- }
234
207
  };
235
208
  var convertTags = (data) => {
236
209
  if (data && data.tags) {
@@ -246,25 +219,36 @@ var convertTags = (data) => {
246
219
  // src/otel/traces.ts
247
220
  import { trace } from "@opentelemetry/api";
248
221
  import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
249
- import { Resource as Resource3 } from "@opentelemetry/resources";
222
+ import { defaultResource as defaultResource3, resourceFromAttributes as resourceFromAttributes3 } from "@opentelemetry/resources";
250
223
  import { BasicTracerProvider, BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
251
224
  import { SEMRESATTRS_SERVICE_NAME as SEMRESATTRS_SERVICE_NAME3, SEMRESATTRS_SERVICE_VERSION as SEMRESATTRS_SERVICE_VERSION3 } from "@opentelemetry/semantic-conventions";
252
225
  import { log as log2 } from "debug";
253
226
  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
227
+ var OtelTraces = class {
228
+ options;
229
+ _tracer;
230
+ constructor(options) {
231
+ this.options = options;
232
+ const resource = defaultResource3().merge(resourceFromAttributes3({
233
+ [SEMRESATTRS_SERVICE_NAME3]: this.options.serviceName,
234
+ [SEMRESATTRS_SERVICE_VERSION3]: this.options.serviceVersion
235
+ }));
236
+ const tracerProvider = new BasicTracerProvider({
237
+ resource,
238
+ spanProcessors: [
239
+ new SimpleSpanProcessor(new ConsoleSpanExporter()),
240
+ new BatchSpanProcessor(new OTLPTraceExporter({
241
+ url: this.options.endpoint + "/v1/traces",
242
+ headers: {
243
+ Authorization: this.options.authorizationHeader
244
+ },
245
+ concurrencyLimit: 10
246
+ }))
247
+ ]
261
248
  });
262
- } else {
263
- obj[key] = value;
249
+ trace.setGlobalTracerProvider(tracerProvider);
250
+ this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
264
251
  }
265
- return obj;
266
- }
267
- var OtelTraces = class {
268
252
  start() {
269
253
  log2("trace processor registered");
270
254
  TRACE_PROCESSOR2.remoteTracing.registerProcessor({
@@ -276,28 +260,6 @@ var OtelTraces = class {
276
260
  }
277
261
  });
278
262
  }
279
- constructor(options) {
280
- _define_property3(this, "options", void 0);
281
- _define_property3(this, "_tracer", void 0);
282
- this.options = options;
283
- const resource = Resource3.default().merge(new Resource3({
284
- [SEMRESATTRS_SERVICE_NAME3]: this.options.serviceName,
285
- [SEMRESATTRS_SERVICE_VERSION3]: this.options.serviceVersion
286
- }));
287
- const tracerProvider = new BasicTracerProvider({
288
- resource
289
- });
290
- tracerProvider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));
291
- tracerProvider.addSpanProcessor(new BatchSpanProcessor(new OTLPTraceExporter({
292
- url: this.options.endpoint + "/v1/traces",
293
- headers: {
294
- Authorization: this.options.authorizationHeader
295
- },
296
- concurrencyLimit: 10
297
- })));
298
- tracerProvider.register();
299
- this._tracer = trace.getTracer("dxos-observability", this.options.serviceVersion);
300
- }
301
263
  };
302
264
  export {
303
265
  OtelLogs,
@@ -305,4 +267,4 @@ export {
305
267
  OtelTraces,
306
268
  setDiagLogger
307
269
  };
308
- //# sourceMappingURL=otel-W6KWKVW5.mjs.map
270
+ //# sourceMappingURL=otel-7PUCFSTY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/otel/otel.ts", "../../../src/otel/logs.ts", "../../../src/otel/metrics.ts", "../../../src/otel/traces.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\n\nexport type OtelOptions = {\n endpoint: string;\n authorizationHeader: string;\n serviceName: string; // For the Otel API, the name of the entity for which signals (metrics or trace) are collected.\n serviceVersion: string; // For the Otel API, The name of the entity for which signals (metrics or trace) are collected.\n getTags: () => { [key: string]: string };\n consoleDiagLogLevel?: string;\n};\n\nexport const setDiagLogger = (level?: string) => {\n const logLevel = DiagLogLevel[level as keyof typeof DiagLogLevel];\n if (logLevel) {\n diag.setLogger(new DiagConsoleLogger(), logLevel);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SeverityNumber } from '@opentelemetry/api-logs';\nimport { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport {\n type LogConfig,\n type LogEntry,\n LogLevel,\n type LogProcessor,\n getContextFromEntry,\n getRelativeFilename,\n} from '@dxos/log';\nimport { jsonlogify } from '@dxos/util';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nexport type OtelLogOptions = OtelOptions & {\n logLevel: LogLevel;\n /**\n * Set `true` to capture logs sent through LoggingService from shared worker.\n * Better to set to `false` because shared worker is initializing its own logger.\n */\n includeSharedWorkerLogs: boolean;\n};\n\nexport class OtelLogs {\n private _loggerProvider: LoggerProvider;\n constructor(private readonly options: OtelLogOptions) {\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n const logExporter = new OTLPLogExporter({\n url: this.options.endpoint + '/v1/logs',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n });\n this._loggerProvider = new LoggerProvider({\n resource,\n processors: [new BatchLogRecordProcessor(logExporter)],\n });\n }\n\n public readonly logProcessor: LogProcessor = (config: LogConfig, entry: LogEntry) => {\n const logger = this._loggerProvider.getLogger('dxos-observability', this.options.serviceVersion);\n\n if (\n entry.level < this.options.logLevel ||\n (!this.options.includeSharedWorkerLogs && entry.meta?.S?.remoteSessionId)\n ) {\n return;\n }\n\n const record = {\n ...entry,\n ...(entry.meta ? { meta: { file: getRelativeFilename(entry.meta.F), line: entry.meta.L } } : {}),\n context: jsonlogify(getContextFromEntry(entry)),\n };\n\n logger.emit({\n severityNumber: convertLevel(entry.level),\n body: JSON.stringify(record),\n attributes: this.options.getTags(),\n });\n };\n\n flush(): Promise<void> {\n return this._loggerProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._loggerProvider.shutdown();\n }\n}\n\nconst convertLevel = (level: LogLevel): SeverityNumber => {\n switch (level) {\n case LogLevel.DEBUG:\n return SeverityNumber.DEBUG;\n case LogLevel.VERBOSE:\n return SeverityNumber.INFO;\n case LogLevel.INFO:\n return SeverityNumber.INFO;\n case LogLevel.WARN:\n return SeverityNumber.WARN;\n case LogLevel.ERROR:\n return SeverityNumber.ERROR;\n default:\n return SeverityNumber.ERROR;\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Meter } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { type MetricData, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions, setDiagLogger } from './otel';\n\nconst EXPORT_INTERVAL = 60 * 1000;\n\nexport class OtelMetrics {\n private _meterProvider: MeterProvider;\n private _meter: Meter;\n\n constructor(private readonly options: OtelOptions) {\n // TODO: improve error handling/logging\n // https://github.com/open-telemetry/opentelemetry-js/issues/4823\n setDiagLogger(options.consoleDiagLogLevel);\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource,\n readers: [grafanaMetricReader],\n });\n this._meter = this._meterProvider.getMeter('dxos-observability');\n\n const metrics = {\n // TODO: update metrics names and remove prefix?\n increment: (name: string, value?: number, data?: MetricData) => {\n this.increment(name, value, convertTags(data));\n },\n distribution: (name: string, value: number, data?: MetricData) => {\n this.distribution(name, value, convertTags(data));\n },\n set: (name: string, value: number | string, data?: MetricData) => {\n // Not implemented, not part of Otel spec.\n },\n gauge: (name: string, value: number, data?: MetricData) => {\n this.gauge(name, value, convertTags(data));\n },\n };\n\n TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);\n }\n\n gauge(name: string, value: number, tags?: any): void {\n const gauge = this._meter.createGauge(name);\n log('otel gauge', { name, value, tags: { ...this.options.getTags(), ...tags } });\n gauge.record(value, { ...this.options.getTags(), ...tags });\n }\n\n increment(name: string, value?: number, tags?: any): void {\n const counter = this._meter.createCounter(name);\n log('otel counter', { name, value, tags: { ...this.options.getTags(), ...tags } });\n counter.add(value ?? 1, { ...this.options.getTags(), ...tags });\n }\n\n distribution(name: string, value: number, tags?: any): void {\n const distribution = this._meter.createHistogram(name);\n log('otel distribution', { name, value, tags: { ...this.options.getTags(), ...tags } });\n distribution.record(value, { ...this.options.getTags(), ...tags });\n }\n\n flush(): Promise<void> {\n return this._meterProvider.forceFlush();\n }\n\n close(): Promise<void> {\n return this._meterProvider.shutdown();\n }\n}\n\nconst convertTags = (data?: MetricData) => {\n if (data && data.tags) {\n return Object.entries(data.tags).reduce<{ [key: string]: any }>((obj, [key, value]) => {\n obj[key] = value;\n return obj;\n }, {});\n } else {\n return {};\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Tracer, trace } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n BasicTracerProvider,\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\nimport { log } from 'debug';\n\nimport { type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n constructor(private readonly options: OtelOptions) {\n const resource = defaultResource().merge(\n resourceFromAttributes({\n [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,\n [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,\n }),\n );\n\n const tracerProvider = new BasicTracerProvider({\n resource,\n spanProcessors: [\n new SimpleSpanProcessor(new ConsoleSpanExporter()),\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: {\n Authorization: this.options.authorizationHeader,\n },\n concurrencyLimit: 10, // an optional limit on pending requests\n }),\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(tracerProvider);\n this._tracer = trace.getTracer('dxos-observability', this.options.serviceVersion);\n }\n\n public start(): void {\n log('trace processor registered');\n TRACE_PROCESSOR.remoteTracing.registerProcessor({\n startSpan: (options: StartSpanOptions) => {\n log('begin otel trace', { options });\n return this._tracer.startSpan(options.name, options);\n },\n });\n }\n}\n"],
5
+ "mappings": ";;;AAIA,SAASA,mBAAmBC,cAAcC,YAAY;AAW/C,IAAMC,gBAAgB,CAACC,UAAAA;AAC5B,QAAMC,WAAWC,aAAaF,KAAAA;AAC9B,MAAIC,UAAU;AACZE,SAAKC,UAAU,IAAIC,kBAAAA,GAAqBJ,QAAAA;EAC1C;AACF;;;AChBA,SAASK,sBAAsB;AAC/B,SAASC,uBAAuB;AAChC,SAASC,iBAAiBC,8BAA8B;AACxD,SAASC,yBAAyBC,sBAAsB;AACxD,SAASC,0BAA0BC,mCAAmC;AAEtE,SAGEC,UAEAC,qBACAC,2BACK;AACP,SAASC,kBAAkB;AAapB,IAAMC,WAAN,MAAMA;;EACHC;EACR,YAA6BC,SAAyB;SAAzBA,UAAAA;AAC3BC,kBAAcD,QAAQE,mBAAmB;AACzC,UAAMC,WAAWC,gBAAAA,EAAkBC,MACjCC,uBAAuB;MACrB,CAACC,wBAAAA,GAA2B,KAAKP,QAAQQ;MACzC,CAACC,2BAAAA,GAA8B,KAAKT,QAAQU;IAC9C,CAAA,CAAA;AAEF,UAAMC,cAAc,IAAIC,gBAAgB;MACtCC,KAAK,KAAKb,QAAQc,WAAW;MAC7BC,SAAS;QACPC,eAAe,KAAKhB,QAAQiB;MAC9B;MACAC,kBAAkB;IACpB,CAAA;AACA,SAAKnB,kBAAkB,IAAIoB,eAAe;MACxChB;MACAiB,YAAY;QAAC,IAAIC,wBAAwBV,WAAAA;;IAC3C,CAAA;EACF;EAEgBW,eAA6B,CAACC,QAAmBC,UAAAA;AAC/D,UAAMC,SAAS,KAAK1B,gBAAgB2B,UAAU,sBAAsB,KAAK1B,QAAQU,cAAc;AAE/F,QACEc,MAAMG,QAAQ,KAAK3B,QAAQ4B,YAC1B,CAAC,KAAK5B,QAAQ6B,2BAA2BL,MAAMM,MAAMC,GAAGC,iBACzD;AACA;IACF;AAEA,UAAMC,SAAS;MACb,GAAGT;MACH,GAAIA,MAAMM,OAAO;QAAEA,MAAM;UAAEI,MAAMC,oBAAoBX,MAAMM,KAAKM,CAAC;UAAGC,MAAMb,MAAMM,KAAKQ;QAAE;MAAE,IAAI,CAAC;MAC9FC,SAASC,WAAWC,oBAAoBjB,KAAAA,CAAAA;IAC1C;AAEAC,WAAOiB,KAAK;MACVC,gBAAgBC,aAAapB,MAAMG,KAAK;MACxCkB,MAAMC,KAAKC,UAAUd,MAAAA;MACrBe,YAAY,KAAKhD,QAAQiD,QAAO;IAClC,CAAA;EACF;EAEAC,QAAuB;AACrB,WAAO,KAAKnD,gBAAgBoD,WAAU;EACxC;EAEAC,QAAuB;AACrB,WAAO,KAAKrD,gBAAgBsD,SAAQ;EACtC;AACF;AAEA,IAAMT,eAAe,CAACjB,UAAAA;AACpB,UAAQA,OAAAA;IACN,KAAK2B,SAASC;AACZ,aAAOC,eAAeD;IACxB,KAAKD,SAASG;AACZ,aAAOD,eAAeE;IACxB,KAAKJ,SAASI;AACZ,aAAOF,eAAeE;IACxB,KAAKJ,SAASK;AACZ,aAAOH,eAAeG;IACxB,KAAKL,SAASM;AACZ,aAAOJ,eAAeI;IACxB;AACE,aAAOJ,eAAeI;EAC1B;AACF;;;AChGA,SAASC,0BAA0B;AACnC,SAASC,mBAAAA,kBAAiBC,0BAAAA,+BAA8B;AACxD,SAASC,eAAeC,qCAAqC;AAC7D,SAASC,4BAAAA,2BAA0BC,+BAAAA,oCAAmC;AAEtE,SAASC,WAAW;AACpB,SAA0BC,uBAAuB;;AAIjD,IAAMC,kBAAkB,KAAK;AAEtB,IAAMC,cAAN,MAAMA;;EACHC;EACAC;EAER,YAA6BC,SAAsB;SAAtBA,UAAAA;AAG3BC,kBAAcD,QAAQE,mBAAmB;AACzC,UAAMC,WAAWC,iBAAAA,EAAkBC,MACjCC,wBAAuB;MACrB,CAACC,yBAAAA,GAA2B,KAAKP,QAAQQ;MACzC,CAACC,4BAAAA,GAA8B,KAAKT,QAAQU;IAC9C,CAAA,CAAA;AAGF,UAAMC,sBAAsB,IAAIC,8BAA8B;MAC5DC,UAAU,IAAIC,mBAAmB;QAC/BC,KAAK,KAAKf,QAAQgB,WAAW;QAC7BC,SAAS;UACPC,eAAe,KAAKlB,QAAQmB;QAC9B;MACF,CAAA;MACAC,sBAAsBxB;IACxB,CAAA;AAEA,SAAKE,iBAAiB,IAAIuB,cAAc;MACtClB;MACAmB,SAAS;QAACX;;IACZ,CAAA;AACA,SAAKZ,SAAS,KAAKD,eAAeyB,SAAS,oBAAA;AAE3C,UAAMC,UAAU;;MAEdC,WAAW,CAACC,MAAcC,OAAgBC,SAAAA;AACxC,aAAKH,UAAUC,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MAC1C;MACAE,cAAc,CAACJ,MAAcC,OAAeC,SAAAA;AAC1C,aAAKE,aAAaJ,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MAC7C;MACAG,KAAK,CAACL,MAAcC,OAAwBC,SAAAA;MAE5C;MACAI,OAAO,CAACN,MAAcC,OAAeC,SAAAA;AACnC,aAAKI,MAAMN,MAAMC,OAAOE,YAAYD,IAAAA,CAAAA;MACtC;IACF;AAEAK,oBAAgBC,cAAcC,kBAAkBX,OAAAA;EAClD;EAEAQ,MAAMN,MAAcC,OAAeS,MAAkB;AACnD,UAAMJ,QAAQ,KAAKjC,OAAOsC,YAAYX,IAAAA;AACtCY,QAAI,cAAc;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAKpC,QAAQuC,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AAC9EJ,UAAMQ,OAAOb,OAAO;MAAE,GAAG,KAAK3B,QAAQuC,QAAO;MAAI,GAAGH;IAAK,CAAA;EAC3D;EAEAX,UAAUC,MAAcC,OAAgBS,MAAkB;AACxD,UAAMK,UAAU,KAAK1C,OAAO2C,cAAchB,IAAAA;AAC1CY,QAAI,gBAAgB;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAKpC,QAAQuC,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AAChFK,YAAQE,IAAIhB,SAAS,GAAG;MAAE,GAAG,KAAK3B,QAAQuC,QAAO;MAAI,GAAGH;IAAK,CAAA;EAC/D;EAEAN,aAAaJ,MAAcC,OAAeS,MAAkB;AAC1D,UAAMN,eAAe,KAAK/B,OAAO6C,gBAAgBlB,IAAAA;AACjDY,QAAI,qBAAqB;MAAEZ;MAAMC;MAAOS,MAAM;QAAE,GAAG,KAAKpC,QAAQuC,QAAO;QAAI,GAAGH;MAAK;IAAE,GAAA;;;;;;AACrFN,iBAAaU,OAAOb,OAAO;MAAE,GAAG,KAAK3B,QAAQuC,QAAO;MAAI,GAAGH;IAAK,CAAA;EAClE;EAEAS,QAAuB;AACrB,WAAO,KAAK/C,eAAegD,WAAU;EACvC;EAEAC,QAAuB;AACrB,WAAO,KAAKjD,eAAekD,SAAQ;EACrC;AACF;AAEA,IAAMnB,cAAc,CAACD,SAAAA;AACnB,MAAIA,QAAQA,KAAKQ,MAAM;AACrB,WAAOa,OAAOC,QAAQtB,KAAKQ,IAAI,EAAEe,OAA+B,CAACC,KAAK,CAACC,KAAK1B,KAAAA,MAAM;AAChFyB,UAAIC,GAAAA,IAAO1B;AACX,aAAOyB;IACT,GAAG,CAAC,CAAA;EACN,OAAO;AACL,WAAO,CAAC;EACV;AACF;;;ACnGA,SAAsBE,aAAa;AACnC,SAASC,yBAAyB;AAClC,SAASC,mBAAAA,kBAAiBC,0BAAAA,+BAA8B;AACxD,SACEC,qBACAC,oBACAC,qBACAC,2BACK;AACP,SAASC,4BAAAA,2BAA0BC,+BAAAA,oCAAmC;AACtE,SAASC,OAAAA,YAAW;AAEpB,SAAgCC,mBAAAA,wBAAuB;AAIhD,IAAMC,aAAN,MAAMA;;EACHC;EACR,YAA6BC,SAAsB;SAAtBA,UAAAA;AAC3B,UAAMC,WAAWC,iBAAAA,EAAkBC,MACjCC,wBAAuB;MACrB,CAACC,yBAAAA,GAA2B,KAAKL,QAAQM;MACzC,CAACC,4BAAAA,GAA8B,KAAKP,QAAQQ;IAC9C,CAAA,CAAA;AAGF,UAAMC,iBAAiB,IAAIC,oBAAoB;MAC7CT;MACAU,gBAAgB;QACd,IAAIC,oBAAoB,IAAIC,oBAAAA,CAAAA;QAC5B,IAAIC,mBACF,IAAIC,kBAAkB;UACpBC,KAAK,KAAKhB,QAAQiB,WAAW;UAC7BC,SAAS;YACPC,eAAe,KAAKnB,QAAQoB;UAC9B;UACAC,kBAAkB;QACpB,CAAA,CAAA;;IAGN,CAAA;AAEAC,UAAMC,wBAAwBd,cAAAA;AAC9B,SAAKV,UAAUuB,MAAME,UAAU,sBAAsB,KAAKxB,QAAQQ,cAAc;EAClF;EAEOiB,QAAc;AACnBC,IAAAA,KAAI,4BAAA;AACJC,IAAAA,iBAAgBC,cAAcC,kBAAkB;MAC9CC,WAAW,CAAC9B,YAAAA;AACV0B,QAAAA,KAAI,oBAAoB;UAAE1B;QAAQ,CAAA;AAClC,eAAO,KAAKD,QAAQ+B,UAAU9B,QAAQ+B,MAAM/B,OAAAA;MAC9C;IACF,CAAA;EACF;AACF;",
6
+ "names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "DiagLogLevel", "diag", "setLogger", "DiagConsoleLogger", "SeverityNumber", "OTLPLogExporter", "defaultResource", "resourceFromAttributes", "BatchLogRecordProcessor", "LoggerProvider", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "LogLevel", "getContextFromEntry", "getRelativeFilename", "jsonlogify", "OtelLogs", "_loggerProvider", "options", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "logExporter", "OTLPLogExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "LoggerProvider", "processors", "BatchLogRecordProcessor", "logProcessor", "config", "entry", "logger", "getLogger", "level", "logLevel", "includeSharedWorkerLogs", "meta", "S", "remoteSessionId", "record", "file", "getRelativeFilename", "F", "line", "L", "context", "jsonlogify", "getContextFromEntry", "emit", "severityNumber", "convertLevel", "body", "JSON", "stringify", "attributes", "getTags", "flush", "forceFlush", "close", "shutdown", "LogLevel", "DEBUG", "SeverityNumber", "VERBOSE", "INFO", "WARN", "ERROR", "OTLPMetricExporter", "defaultResource", "resourceFromAttributes", "MeterProvider", "PeriodicExportingMetricReader", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "OtelMetrics", "_meterProvider", "_meter", "options", "setDiagLogger", "consoleDiagLogLevel", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "grafanaMetricReader", "PeriodicExportingMetricReader", "exporter", "OTLPMetricExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "exportIntervalMillis", "MeterProvider", "readers", "getMeter", "metrics", "increment", "name", "value", "data", "convertTags", "distribution", "set", "gauge", "TRACE_PROCESSOR", "remoteMetrics", "registerProcessor", "tags", "createGauge", "log", "getTags", "record", "counter", "createCounter", "add", "createHistogram", "flush", "forceFlush", "close", "shutdown", "Object", "entries", "reduce", "obj", "key", "trace", "OTLPTraceExporter", "defaultResource", "resourceFromAttributes", "BasicTracerProvider", "BatchSpanProcessor", "ConsoleSpanExporter", "SimpleSpanProcessor", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "OtelTraces", "_tracer", "options", "resource", "defaultResource", "merge", "resourceFromAttributes", "SEMRESATTRS_SERVICE_NAME", "serviceName", "SEMRESATTRS_SERVICE_VERSION", "serviceVersion", "tracerProvider", "BasicTracerProvider", "spanProcessors", "SimpleSpanProcessor", "ConsoleSpanExporter", "BatchSpanProcessor", "OTLPTraceExporter", "url", "endpoint", "headers", "Authorization", "authorizationHeader", "concurrencyLimit", "trace", "setGlobalTracerProvider", "getTracer", "start", "log", "TRACE_PROCESSOR", "remoteTracing", "registerProcessor", "startSpan", "name"]
7
+ }
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  SegmentTelemetry,
4
4
  TelemetryEvent
5
- } from "../chunk-GOWQOSY6.mjs";
5
+ } from "../chunk-OJV247NY.mjs";
6
6
  import "../chunk-QUZL7LKE.mjs";
7
7
  import "../chunk-QK5IUYVA.mjs";
8
8
  export {
@@ -9,24 +9,63 @@ import {
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
- }
25
12
  var MAX_LOG_BREADCRUMBS = 150;
26
13
  var SentryLogProcessor = class {
14
+ _breadcrumbs = new CircularBuffer(MAX_LOG_BREADCRUMBS);
15
+ logProcessor = (config, entry) => {
16
+ const { level, meta, error } = entry;
17
+ if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {
18
+ if (entry.level > LogLevel.DEBUG) {
19
+ this._addBreadcrumb(void 0, entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : ""), convertLevel(entry.level), void 0);
20
+ }
21
+ return;
22
+ }
23
+ if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {
24
+ return;
25
+ }
26
+ withScope((scope) => {
27
+ const severity = convertLevel(level);
28
+ scope.setLevel(severity);
29
+ scope.setContext("dxoslog", entry.context ?? null);
30
+ if (meta) {
31
+ scope.setTag("transaction", `${getRelativeFilename(meta.F)}:${meta.L}`);
32
+ if (meta.S?.hostSessionId) {
33
+ scope.setTags({
34
+ service_host_issue: true,
35
+ service_host_session: meta.S?.hostSessionId
36
+ });
37
+ }
38
+ if (!Number.isNaN(meta.S?.uptimeSeconds)) {
39
+ scope.setExtra("uptime_seconds", meta.S?.uptimeSeconds);
40
+ }
41
+ }
42
+ const extendedMessage = formatMessageForSentry(entry);
43
+ let capturedError = error;
44
+ if (capturedError == null && entry.level === LogLevel.ERROR) {
45
+ capturedError = Object.values(entry.context ?? {}).find((v) => v instanceof Error);
46
+ }
47
+ if (capturedError) {
48
+ if (capturedError instanceof InvariantViolation) {
49
+ scope.setExtra("invariant_violation", true);
50
+ }
51
+ const isMessageDifferentFromStackTrace = error == null;
52
+ if (isMessageDifferentFromStackTrace) {
53
+ scope.setExtra("message", extendedMessage);
54
+ }
55
+ const eventId2 = captureException(capturedError);
56
+ this._addBreadcrumb(eventId2, extendedMessage, severity, entry.context);
57
+ return;
58
+ }
59
+ const message = entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : "");
60
+ scope.setFingerprint([
61
+ message
62
+ ]);
63
+ const eventId = captureMessage(extendedMessage);
64
+ this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);
65
+ });
66
+ };
27
67
  addLogBreadcrumbsTo(event) {
28
- var _event;
29
- (_event = event).breadcrumbs ?? (_event.breadcrumbs = []);
68
+ event.breadcrumbs ??= [];
30
69
  for (const breadcrumb of this._breadcrumbs) {
31
70
  event.breadcrumbs.push(breadcrumb);
32
71
  }
@@ -60,61 +99,6 @@ var SentryLogProcessor = class {
60
99
  }
61
100
  this._breadcrumbs.push(breadcrumb);
62
101
  }
63
- constructor() {
64
- _define_property(this, "_breadcrumbs", new CircularBuffer(MAX_LOG_BREADCRUMBS));
65
- _define_property(this, "logProcessor", (config, entry) => {
66
- const { level, meta, error } = entry;
67
- if (!shouldLog(entry, config.captureFilters) || meta?.S?.remoteSessionId) {
68
- if (entry.level > LogLevel.DEBUG) {
69
- this._addBreadcrumb(void 0, entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : ""), convertLevel(entry.level), void 0);
70
- }
71
- return;
72
- }
73
- if (entry.level !== LogLevel.WARN && entry.level !== LogLevel.ERROR) {
74
- return;
75
- }
76
- withScope((scope) => {
77
- const severity = convertLevel(level);
78
- scope.setLevel(severity);
79
- scope.setContext("dxoslog", entry.context ?? null);
80
- if (meta) {
81
- scope.setTag("transaction", `${getRelativeFilename(meta.F)}:${meta.L}`);
82
- if (meta.S?.hostSessionId) {
83
- scope.setTags({
84
- service_host_issue: true,
85
- service_host_session: meta.S?.hostSessionId
86
- });
87
- }
88
- if (!Number.isNaN(meta.S?.uptimeSeconds)) {
89
- scope.setExtra("uptime_seconds", meta.S?.uptimeSeconds);
90
- }
91
- }
92
- const extendedMessage = formatMessageForSentry(entry);
93
- let capturedError = error;
94
- if (capturedError == null && entry.level === LogLevel.ERROR) {
95
- capturedError = Object.values(entry.context ?? {}).find((v) => v instanceof Error);
96
- }
97
- if (capturedError) {
98
- if (capturedError instanceof InvariantViolation) {
99
- scope.setExtra("invariant_violation", true);
100
- }
101
- const isMessageDifferentFromStackTrace = error == null;
102
- if (isMessageDifferentFromStackTrace) {
103
- scope.setExtra("message", extendedMessage);
104
- }
105
- const eventId2 = captureException(capturedError);
106
- this._addBreadcrumb(eventId2, extendedMessage, severity, entry.context);
107
- return;
108
- }
109
- const message = entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : "");
110
- scope.setFingerprint([
111
- message
112
- ]);
113
- const eventId = captureMessage(extendedMessage);
114
- this._addBreadcrumb(eventId, extendedMessage, severity, entry.context);
115
- });
116
- });
117
- }
118
102
  };
119
103
  var formatMessageForSentry = (entry) => {
120
104
  const message = entry.message ?? (entry.error ? entry.error.message ?? String(entry.error) : "");
@@ -160,4 +144,4 @@ var getRelativeFilename = (filename) => {
160
144
  export {
161
145
  SentryLogProcessor
162
146
  };
163
- //# sourceMappingURL=sentry-log-processor-3BDS4BB4.mjs.map
147
+ //# sourceMappingURL=sentry-log-processor-A2EV7P3Y.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\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\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", "_breadcrumbs", "CircularBuffer", "logProcessor", "config", "entry", "level", "meta", "error", "shouldLog", "captureFilters", "S", "remoteSessionId", "LogLevel", "DEBUG", "_addBreadcrumb", "undefined", "message", "String", "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 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../src/otel/logs.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,QAAQ,EACR,KAAK,YAAY,EAGlB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,qBAAa,QAAQ;IAEP,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,eAAe,CAAiB;gBACX,OAAO,EAAE,cAAc;IAmBpD,SAAgB,YAAY,EAAE,YAAY,CAqBxC;IAEF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../src/otel/logs.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,QAAQ,EACR,KAAK,YAAY,EAGlB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,qBAAa,QAAQ;IAEP,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,eAAe,CAAiB;gBACX,OAAO,EAAE,cAAc;IAqBpD,SAAgB,YAAY,EAAE,YAAY,CAqBxC;IAEF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
@@ -3,7 +3,7 @@
3
3
  //
4
4
  import { SeverityNumber } from '@opentelemetry/api-logs';
5
5
  import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
6
- import { Resource } from '@opentelemetry/resources';
6
+ import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';
7
7
  import { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';
8
8
  import { SEMRESATTRS_SERVICE_NAME, SEMRESATTRS_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
9
9
  import { LogLevel, getContextFromEntry, getRelativeFilename, } from '@dxos/log';
@@ -15,7 +15,7 @@ export class OtelLogs {
15
15
  constructor(options) {
16
16
  this.options = options;
17
17
  setDiagLogger(options.consoleDiagLogLevel);
18
- const resource = Resource.default().merge(new Resource({
18
+ const resource = defaultResource().merge(resourceFromAttributes({
19
19
  [SEMRESATTRS_SERVICE_NAME]: this.options.serviceName,
20
20
  [SEMRESATTRS_SERVICE_VERSION]: this.options.serviceVersion,
21
21
  }));
@@ -26,8 +26,10 @@ export class OtelLogs {
26
26
  },
27
27
  concurrencyLimit: 10, // an optional limit on pending requests
28
28
  });
29
- this._loggerProvider = new LoggerProvider({ resource });
30
- this._loggerProvider.addLogRecordProcessor(new BatchLogRecordProcessor(logExporter));
29
+ this._loggerProvider = new LoggerProvider({
30
+ resource,
31
+ processors: [new BatchLogRecordProcessor(logExporter)],
32
+ });
31
33
  }
32
34
  logProcessor = (config, entry) => {
33
35
  const logger = this._loggerProvider.getLogger('dxos-observability', this.options.serviceVersion);
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../src/otel/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../../src/otel/logs.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ export declare class OtelMetrics {
3
3
  private readonly options;
4
4
  private _meterProvider;
5
5
  private _meter;
6
- private _gauges;
7
6
  constructor(options: OtelOptions);
8
7
  gauge(name: string, value: number, tags?: any): void;
9
8
  increment(name: string, value?: number, tags?: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/otel/metrics.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAUzD,qBAAa,WAAW;IAKV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAuC;gBAEzB,OAAO,EAAE,WAAW;IA8CjD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMpD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMzD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAM3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/otel/metrics.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAIzD,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAQ;gBAEO,OAAO,EAAE,WAAW;IA8CjD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMpD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAMzD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAM3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}