@dxos/observability 0.8.4-main.b97322e → 0.8.4-main.bc674ce
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-MWTIKIBZ.mjs → chunk-5LN7D6GM.mjs} +14 -13
- package/dist/lib/browser/chunk-5LN7D6GM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UG3VTDOH.mjs → chunk-JJQT5TQH.mjs} +85 -409
- package/dist/lib/browser/chunk-JJQT5TQH.mjs.map +7 -0
- package/dist/lib/browser/{chunk-YEPQFAES.mjs → chunk-O4BG5MRL.mjs} +2 -2
- package/dist/lib/browser/chunk-O4BG5MRL.mjs.map +7 -0
- package/dist/lib/browser/chunk-U6JWT3E2.mjs +1 -0
- package/dist/lib/browser/chunk-VL6LVQPU.mjs +69 -0
- package/dist/lib/browser/chunk-VL6LVQPU.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +341 -15
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-XK652NZG.mjs +11 -0
- package/dist/lib/browser/otel/traces-browser.mjs +7 -0
- package/dist/lib/browser/otel/traces-browser.mjs.map +7 -0
- package/dist/lib/browser/otel/traces.mjs +7 -0
- package/dist/lib/browser/otel/traces.mjs.map +7 -0
- package/dist/lib/browser/{otel-IRDZ7PES.mjs → otel-DI4ASU7Y.mjs} +44 -95
- package/dist/lib/browser/otel-DI4ASU7Y.mjs.map +7 -0
- package/dist/lib/browser/segment/browser.mjs +9 -0
- package/dist/lib/browser/segment/browser.mjs.map +7 -0
- package/dist/lib/browser/segment/index.mjs +3 -2
- package/dist/lib/browser/segment/node.mjs +9 -0
- package/dist/lib/browser/segment/node.mjs.map +7 -0
- package/dist/lib/browser/sentry/browser.mjs +23 -0
- package/dist/lib/browser/sentry/browser.mjs.map +7 -0
- package/dist/lib/browser/sentry/index.mjs +1 -1
- package/dist/lib/browser/sentry/node.mjs +23 -0
- package/dist/lib/browser/sentry/node.mjs.map +7 -0
- package/dist/lib/browser/{sentry-log-processor-N3QNOQ2O.mjs → sentry-log-processor-W7LI6WXA.mjs} +50 -52
- package/dist/lib/browser/sentry-log-processor-W7LI6WXA.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WLRNZ2S2.mjs → chunk-KKNY7TRV.mjs} +85 -409
- package/dist/lib/node-esm/chunk-KKNY7TRV.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-KLJGCUYA.mjs +2 -0
- package/dist/lib/node-esm/chunk-KLJGCUYA.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-KVJTNW3F.mjs +147 -0
- package/dist/lib/node-esm/chunk-KVJTNW3F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TEH6VIKV.mjs → chunk-M4627SMT.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-TEH6VIKV.mjs.map → chunk-M4627SMT.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-UIVXGEGJ.mjs +62 -0
- package/dist/lib/node-esm/chunk-UIVXGEGJ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WAGGA7IT.mjs +52 -0
- package/dist/lib/node-esm/chunk-WAGGA7IT.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +342 -15
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-CXQ3CZGB.mjs +13 -0
- package/dist/lib/node-esm/observability-CXQ3CZGB.mjs.map +7 -0
- package/dist/lib/node-esm/otel/traces-browser.mjs +70 -0
- package/dist/lib/node-esm/otel/traces-browser.mjs.map +7 -0
- package/dist/lib/node-esm/otel/traces.mjs +8 -0
- package/dist/lib/node-esm/otel/traces.mjs.map +7 -0
- package/dist/lib/node-esm/{otel-62HYJETM.mjs → otel-JFXO22WD.mjs} +43 -76
- package/dist/lib/node-esm/otel-JFXO22WD.mjs.map +7 -0
- package/dist/lib/node-esm/segment/browser.mjs +92 -0
- package/dist/lib/node-esm/segment/browser.mjs.map +7 -0
- package/dist/lib/node-esm/segment/index.mjs +6 -3
- package/dist/lib/node-esm/segment/node.mjs +11 -0
- package/dist/lib/node-esm/segment/node.mjs.map +7 -0
- package/dist/lib/node-esm/sentry/browser.mjs +165 -0
- package/dist/lib/node-esm/sentry/browser.mjs.map +7 -0
- package/dist/lib/node-esm/sentry/index.mjs +1 -1
- package/dist/lib/node-esm/sentry/node.mjs +24 -0
- package/dist/lib/node-esm/sentry/node.mjs.map +7 -0
- package/dist/lib/node-esm/{sentry-log-processor-FN6Y5TNI.mjs → sentry-log-processor-W3SG4RQL.mjs} +50 -52
- package/dist/lib/node-esm/sentry-log-processor-W3SG4RQL.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 +6 -7
- package/dist/types/src/helpers/map-spaces.js.map +1 -1
- package/dist/types/src/helpers/node-observability.d.ts +1 -1
- package/dist/types/src/helpers/node-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/node-observability.js +7 -11
- package/dist/types/src/helpers/node-observability.js.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.js +4 -7
- package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
- package/dist/types/src/observability.d.ts +1 -1
- package/dist/types/src/observability.d.ts.map +1 -1
- package/dist/types/src/observability.js +68 -59
- package/dist/types/src/observability.js.map +1 -1
- package/dist/types/src/otel/logs.d.ts.map +1 -1
- package/dist/types/src/otel/logs.js +26 -23
- package/dist/types/src/otel/logs.js.map +1 -1
- package/dist/types/src/otel/metrics.d.ts +0 -1
- package/dist/types/src/otel/metrics.d.ts.map +1 -1
- package/dist/types/src/otel/metrics.js +6 -4
- package/dist/types/src/otel/metrics.js.map +1 -1
- package/dist/types/src/otel/otel.js +1 -1
- package/dist/types/src/otel/otel.js.map +1 -1
- package/dist/types/src/otel/traces-browser.d.ts.map +1 -1
- package/dist/types/src/otel/traces-browser.js +19 -13
- package/dist/types/src/otel/traces-browser.js.map +1 -1
- package/dist/types/src/otel/traces.d.ts.map +1 -1
- package/dist/types/src/otel/traces.js +18 -12
- package/dist/types/src/otel/traces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +3 -3
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +4 -3
- 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 +8 -12
- 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 +4 -3
- 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 +5 -7
- package/dist/types/src/sentry/browser.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 +56 -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 +35 -34
- package/src/helpers/browser-observability.ts +2 -1
- package/src/helpers/map-spaces.ts +1 -1
- package/src/helpers/node-observability.ts +3 -2
- package/src/helpers/setup-telemetry-listeners.ts +2 -1
- package/src/observability.ts +4 -4
- package/src/otel/logs.ts +9 -7
- package/src/otel/metrics.ts +5 -12
- package/src/otel/otel.ts +1 -1
- package/src/otel/traces-browser.ts +23 -20
- package/src/otel/traces.ts +22 -19
- package/src/segment/base.ts +3 -3
- package/src/segment/browser.ts +5 -4
- package/src/segment/node.ts +5 -4
- package/src/sentry/browser.ts +8 -8
- package/src/sentry/node.node.test.ts +2 -1
- package/src/sentry/node.ts +3 -3
- package/src/sentry/sentry-log-processor.ts +4 -2
- package/src/sentry/sentry.node.test.ts +2 -1
- package/dist/lib/browser/chunk-MWTIKIBZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-UG3VTDOH.mjs.map +0 -7
- package/dist/lib/browser/chunk-YEPQFAES.mjs.map +0 -7
- package/dist/lib/browser/observability-7LFMAZBF.mjs +0 -10
- package/dist/lib/browser/otel-IRDZ7PES.mjs.map +0 -7
- package/dist/lib/browser/sentry-log-processor-N3QNOQ2O.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-552KLA6Z.mjs +0 -202
- package/dist/lib/node-esm/chunk-552KLA6Z.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WLRNZ2S2.mjs.map +0 -7
- package/dist/lib/node-esm/observability-F2NNZIF6.mjs +0 -11
- package/dist/lib/node-esm/otel-62HYJETM.mjs.map +0 -7
- package/dist/lib/node-esm/sentry-log-processor-FN6Y5TNI.mjs.map +0 -7
- /package/dist/lib/browser/{observability-7LFMAZBF.mjs.map → chunk-U6JWT3E2.mjs.map} +0 -0
- /package/dist/lib/{node-esm/observability-F2NNZIF6.mjs.map → browser/observability-XK652NZG.mjs.map} +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
TelemetryEvent
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UIVXGEGJ.mjs";
|
|
5
5
|
|
|
6
6
|
// src/observability.ts
|
|
7
7
|
import { Event, scheduleTaskInterval } from "@dxos/async";
|
|
8
8
|
import { PublicKey } from "@dxos/client";
|
|
9
9
|
import { Context } from "@dxos/context";
|
|
10
10
|
import { invariant } from "@dxos/invariant";
|
|
11
|
-
import {
|
|
11
|
+
import { LogLevel, log } from "@dxos/log";
|
|
12
12
|
import { ConnectionState } from "@dxos/network-manager";
|
|
13
13
|
import { DeviceKind, Platform } from "@dxos/protocols/proto/dxos/client/services";
|
|
14
14
|
import { isNode } from "@dxos/util";
|
|
@@ -22,163 +22,6 @@ var cli_observability_secrets_default = {
|
|
|
22
22
|
OTEL_AUTHORIZATION: "Basic OTA3MzIzOmdsY19leUp2SWpvaU1URXdNVEl6TnlJc0ltNGlPaUp6ZEdGamF5MDVNRGN6TWpNdGFXNTBaV2R5WVhScGIyNHRZMnh2ZFdSbWJHRnlaUzF2ZEd4d0xYQnliM2g1SWl3aWF5STZJalZ2Tkd4cFYydE5iRmszTlRNMGJUVXpTemRTVjNBeVNpSXNJbTBpT25zaWNpSTZJbkJ5YjJRdGRYTXRaV0Z6ZEMwd0luMTk="
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
// src/helpers/browser-observability.ts
|
|
26
|
-
import * as localForage from "localforage";
|
|
27
|
-
import { log } from "@dxos/log";
|
|
28
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/helpers/browser-observability.ts";
|
|
29
|
-
var OBSERVABILITY_DISABLED_KEY = "observability-disabled";
|
|
30
|
-
var OBSERVABILITY_GROUP_KEY = "observability-group";
|
|
31
|
-
var isObservabilityDisabled = async (namespace) => {
|
|
32
|
-
try {
|
|
33
|
-
return await localForage.getItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`) === "true";
|
|
34
|
-
} catch (err) {
|
|
35
|
-
log.catch("Failed to check if observability is disabled, assuming it is", err, {
|
|
36
|
-
F: __dxlog_file,
|
|
37
|
-
L: 24,
|
|
38
|
-
S: void 0,
|
|
39
|
-
C: (f, a) => f(...a)
|
|
40
|
-
});
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
var storeObservabilityDisabled = async (namespace, value) => {
|
|
45
|
-
try {
|
|
46
|
-
await localForage.setItem(`${namespace}:${OBSERVABILITY_DISABLED_KEY}`, String(value));
|
|
47
|
-
} catch (err) {
|
|
48
|
-
log.catch("Failed to store observability disabled", err, {
|
|
49
|
-
F: __dxlog_file,
|
|
50
|
-
L: 33,
|
|
51
|
-
S: void 0,
|
|
52
|
-
C: (f, a) => f(...a)
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
var getObservabilityGroup = async (namespace) => {
|
|
57
|
-
try {
|
|
58
|
-
return await localForage.getItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`) ?? void 0;
|
|
59
|
-
} catch (err) {
|
|
60
|
-
log.catch("Failed to get observability group", err, {
|
|
61
|
-
F: __dxlog_file,
|
|
62
|
-
L: 41,
|
|
63
|
-
S: void 0,
|
|
64
|
-
C: (f, a) => f(...a)
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
var storeObservabilityGroup = async (namespace, value) => {
|
|
69
|
-
try {
|
|
70
|
-
await localForage.setItem(`${namespace}:${OBSERVABILITY_GROUP_KEY}`, value);
|
|
71
|
-
} catch (err) {
|
|
72
|
-
log.catch("Failed to store observability group", err, {
|
|
73
|
-
F: __dxlog_file,
|
|
74
|
-
L: 49,
|
|
75
|
-
S: void 0,
|
|
76
|
-
C: (f, a) => f(...a)
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
var initializeAppObservability = async ({
|
|
81
|
-
namespace,
|
|
82
|
-
config,
|
|
83
|
-
// TODO(nf): Configure mode.
|
|
84
|
-
mode = "basic",
|
|
85
|
-
tracingEnable = false,
|
|
86
|
-
replayEnable = false
|
|
87
|
-
}) => {
|
|
88
|
-
log("initializeAppObservability", {
|
|
89
|
-
config
|
|
90
|
-
}, {
|
|
91
|
-
F: __dxlog_file,
|
|
92
|
-
L: 73,
|
|
93
|
-
S: void 0,
|
|
94
|
-
C: (f, a) => f(...a)
|
|
95
|
-
});
|
|
96
|
-
const group = await getObservabilityGroup(namespace) ?? void 0;
|
|
97
|
-
const release = `${namespace}@${config.get("runtime.app.build.version")}`;
|
|
98
|
-
const environment = config.get("runtime.app.env.DX_ENVIRONMENT");
|
|
99
|
-
const { Observability: Observability2 } = await import("./observability-F2NNZIF6.mjs");
|
|
100
|
-
const observability = new Observability2({
|
|
101
|
-
namespace,
|
|
102
|
-
release,
|
|
103
|
-
environment,
|
|
104
|
-
group,
|
|
105
|
-
mode,
|
|
106
|
-
config,
|
|
107
|
-
errorLog: {
|
|
108
|
-
sentryInitOptions: {
|
|
109
|
-
environment,
|
|
110
|
-
release,
|
|
111
|
-
tracing: tracingEnable,
|
|
112
|
-
replay: replayEnable,
|
|
113
|
-
// TODO(wittjosiah): Configure these.
|
|
114
|
-
// Consider using a sampling function to dynamically configure these values.
|
|
115
|
-
// https://docs.sentry.io/platforms/javascript/configuration/sampling/#setting-a-sampling-function
|
|
116
|
-
sampleRate: 1,
|
|
117
|
-
replaySampleRate: 1,
|
|
118
|
-
replaySampleRateOnError: 1
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
const observabilityDisabled = await isObservabilityDisabled(namespace);
|
|
123
|
-
if (observabilityDisabled) {
|
|
124
|
-
observability.setMode("disabled");
|
|
125
|
-
log.info("observability disabled", void 0, {
|
|
126
|
-
F: __dxlog_file,
|
|
127
|
-
L: 113,
|
|
128
|
-
S: void 0,
|
|
129
|
-
C: (f, a) => f(...a)
|
|
130
|
-
});
|
|
131
|
-
return observability;
|
|
132
|
-
}
|
|
133
|
-
try {
|
|
134
|
-
const getIPData = async (config2) => {
|
|
135
|
-
const IP_DATA_CACHE_TIMEOUT = 6 * 60 * 60 * 1e3;
|
|
136
|
-
const cachedData = await localForage.getItem("dxos:observability:ipdata");
|
|
137
|
-
if (cachedData && cachedData.timestamp > Date.now() - IP_DATA_CACHE_TIMEOUT) {
|
|
138
|
-
return cachedData.data;
|
|
139
|
-
}
|
|
140
|
-
const IPDATA_API_KEY = config2.get("runtime.app.env.DX_IPDATA_API_KEY");
|
|
141
|
-
if (IPDATA_API_KEY) {
|
|
142
|
-
return fetch(`https://api.ipdata.co?api-key=${IPDATA_API_KEY}`).then((res) => res.json()).then((data) => {
|
|
143
|
-
localForage.setItem("dxos:observability:ipdata", {
|
|
144
|
-
data,
|
|
145
|
-
timestamp: Date.now()
|
|
146
|
-
}).catch((err) => observability.captureException(err));
|
|
147
|
-
return data;
|
|
148
|
-
}).catch((err) => observability.captureException(err));
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
await observability.initialize();
|
|
152
|
-
observability.startErrorLogs();
|
|
153
|
-
const ipData = await getIPData(config);
|
|
154
|
-
ipData && observability.setIPDataTelemetryTags(ipData);
|
|
155
|
-
if (typeof navigator !== "undefined" && navigator.storage?.estimate) {
|
|
156
|
-
setInterval(async () => {
|
|
157
|
-
try {
|
|
158
|
-
const storageEstimate = await navigator.storage.estimate();
|
|
159
|
-
storageEstimate.usage && observability.setTag("storageUsage", storageEstimate.usage.toString(), "telemetry");
|
|
160
|
-
storageEstimate.quota && observability.setTag("storageQuota", storageEstimate.quota.toString(), "telemetry");
|
|
161
|
-
} catch (error) {
|
|
162
|
-
log.warn("Failed to run estimate()", error, {
|
|
163
|
-
F: __dxlog_file,
|
|
164
|
-
L: 168,
|
|
165
|
-
S: void 0,
|
|
166
|
-
C: (f, a) => f(...a)
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}, 1e4);
|
|
170
|
-
}
|
|
171
|
-
} catch (err) {
|
|
172
|
-
log.error("Failed to initialize app observability", err, {
|
|
173
|
-
F: __dxlog_file,
|
|
174
|
-
L: 173,
|
|
175
|
-
S: void 0,
|
|
176
|
-
C: (f, a) => f(...a)
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
return observability;
|
|
180
|
-
};
|
|
181
|
-
|
|
182
25
|
// src/helpers/common.ts
|
|
183
26
|
var getTelemetryIdentifier = (client) => {
|
|
184
27
|
if (!client?.initialized) {
|
|
@@ -197,98 +40,6 @@ var getTelemetryIdentity = (client) => {
|
|
|
197
40
|
};
|
|
198
41
|
};
|
|
199
42
|
|
|
200
|
-
// src/helpers/node-observability.ts
|
|
201
|
-
import yaml from "js-yaml";
|
|
202
|
-
import { existsSync, statSync } from "node:fs";
|
|
203
|
-
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
204
|
-
import { join } from "node:path";
|
|
205
|
-
import { v4 as uuid, validate as validateUuid } from "uuid";
|
|
206
|
-
import { log as log2 } from "@dxos/log";
|
|
207
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/observability/src/helpers/node-observability.ts";
|
|
208
|
-
var showObservabilityBanner = async (configDir, bannercb) => {
|
|
209
|
-
const path = join(configDir, ".observability-banner-printed");
|
|
210
|
-
if (existsSync(path)) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
bannercb(
|
|
214
|
-
// eslint-disable-next-line no-multi-str
|
|
215
|
-
"Basic observability data will be sent to the DXOS team in order to improve the product. This includes performance metrics, error logs, and usage data. No personally identifiable information, other than your public key, is included with this data and no private data ever leaves your devices. To disable sending observability data, set the environment variable DX_DISABLE_OBSERVABILITY=true."
|
|
216
|
-
);
|
|
217
|
-
await writeFile(path, "", "utf-8");
|
|
218
|
-
};
|
|
219
|
-
var getObservabilityState = async (configDir) => {
|
|
220
|
-
if (existsSync(configDir)) {
|
|
221
|
-
if (!statSync(configDir).isDirectory()) {
|
|
222
|
-
throw new Error(`Config directory ${configDir} exists but is not a directory`);
|
|
223
|
-
}
|
|
224
|
-
} else {
|
|
225
|
-
await mkdir(configDir, {
|
|
226
|
-
recursive: true
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
const idPath = join(configDir, "observability.yml");
|
|
230
|
-
if (existsSync(idPath)) {
|
|
231
|
-
const context = await readFile(idPath, "utf-8");
|
|
232
|
-
return validate(context) ?? initializeState(idPath);
|
|
233
|
-
}
|
|
234
|
-
return initializeState(idPath);
|
|
235
|
-
};
|
|
236
|
-
var initializeState = async (idPath) => {
|
|
237
|
-
const observabilityState = {
|
|
238
|
-
installationId: uuid(),
|
|
239
|
-
group: process.env.DX_OBSERVABILITY_GROUP ?? void 0,
|
|
240
|
-
mode: process.env.DX_DISABLE_OBSERVABILITY ? "disabled" : process.env.DX_OBSERVABILITY_MODE ?? "basic"
|
|
241
|
-
};
|
|
242
|
-
await writeFile(idPath, "# This file is automatically generated by the @dxos/cli.\n" + yaml.dump(observabilityState), "utf-8");
|
|
243
|
-
return observabilityState;
|
|
244
|
-
};
|
|
245
|
-
var validate = (contextString) => {
|
|
246
|
-
const context = yaml.load(contextString);
|
|
247
|
-
if (Boolean(context.installationId) && validateUuid(context.installationId)) {
|
|
248
|
-
return {
|
|
249
|
-
...context,
|
|
250
|
-
mode: process.env.DX_DISABLE_OBSERVABILITY ? "disabled" : context.mode ?? "basic"
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
var initializeNodeObservability = async ({ namespace, version, config, installationId, group, mode = "basic", tracingEnable = true, replayEnable = true }) => {
|
|
255
|
-
log2("initializeCliObservability", {
|
|
256
|
-
config
|
|
257
|
-
}, {
|
|
258
|
-
F: __dxlog_file2,
|
|
259
|
-
L: 110,
|
|
260
|
-
S: void 0,
|
|
261
|
-
C: (f, a) => f(...a)
|
|
262
|
-
});
|
|
263
|
-
const release = `${namespace}@${version}`;
|
|
264
|
-
const environment = process.env.DX_ENVIRONMENT ?? "unknown";
|
|
265
|
-
const observability = new Observability({
|
|
266
|
-
mode,
|
|
267
|
-
namespace,
|
|
268
|
-
release,
|
|
269
|
-
environment,
|
|
270
|
-
group,
|
|
271
|
-
errorLog: {
|
|
272
|
-
sentryInitOptions: {
|
|
273
|
-
environment,
|
|
274
|
-
release,
|
|
275
|
-
// TODO(wittjosiah): Configure this.
|
|
276
|
-
sampleRate: 1
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
observability.setTag("installationId", installationId);
|
|
281
|
-
const IPDATA_API_KEY = config.get("runtime.app.env.DX_IPDATA_API_KEY");
|
|
282
|
-
try {
|
|
283
|
-
const res = await fetch(`https://api.ipdata.co/?api-key=${IPDATA_API_KEY}`);
|
|
284
|
-
const ipData = await res.json();
|
|
285
|
-
ipData && observability.setIPDataTelemetryTags(ipData);
|
|
286
|
-
} catch (err) {
|
|
287
|
-
observability?.captureException(err);
|
|
288
|
-
}
|
|
289
|
-
return observability;
|
|
290
|
-
};
|
|
291
|
-
|
|
292
43
|
// src/helpers/map-spaces.ts
|
|
293
44
|
var mapSpaces = (spaces, options = {
|
|
294
45
|
verbose: false,
|
|
@@ -307,7 +58,7 @@ var mapSpaces = (spaces, options = {
|
|
|
307
58
|
key: space.key.truncate(),
|
|
308
59
|
open: space.isOpen,
|
|
309
60
|
members: space.members.get().length,
|
|
310
|
-
objects: space.db.coreDatabase.getAllObjectIds().length,
|
|
61
|
+
objects: space.internal.db.coreDatabase.getAllObjectIds().length,
|
|
311
62
|
startup,
|
|
312
63
|
epoch,
|
|
313
64
|
// appliedEpoch,
|
|
@@ -320,113 +71,37 @@ var mapSpaces = (spaces, options = {
|
|
|
320
71
|
});
|
|
321
72
|
};
|
|
322
73
|
|
|
323
|
-
// src/helpers/setup-telemetry-listeners.ts
|
|
324
|
-
var lastFocusEvent = /* @__PURE__ */ new Date();
|
|
325
|
-
var totalTime = 0;
|
|
326
|
-
var setupTelemetryListeners = (namespace, client, observability) => {
|
|
327
|
-
const clickCallback = (event) => {
|
|
328
|
-
const id = event.target?.id;
|
|
329
|
-
if (!id) {
|
|
330
|
-
return;
|
|
331
|
-
}
|
|
332
|
-
setTimeout(() => {
|
|
333
|
-
observability.track({
|
|
334
|
-
...getTelemetryIdentity(client),
|
|
335
|
-
action: "window.click",
|
|
336
|
-
properties: {
|
|
337
|
-
id: event.target?.id,
|
|
338
|
-
path: event.composedPath().filter((el) => Boolean(el.tagName)).map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ""}`).reverse().join(">")
|
|
339
|
-
}
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
};
|
|
343
|
-
const focusCallback = () => {
|
|
344
|
-
const now = /* @__PURE__ */ new Date();
|
|
345
|
-
setTimeout(() => {
|
|
346
|
-
observability.track({
|
|
347
|
-
...getTelemetryIdentity(client),
|
|
348
|
-
action: "window.focus",
|
|
349
|
-
properties: {
|
|
350
|
-
timeAway: now.getTime() - lastFocusEvent.getTime()
|
|
351
|
-
}
|
|
352
|
-
});
|
|
353
|
-
});
|
|
354
|
-
lastFocusEvent = now;
|
|
355
|
-
};
|
|
356
|
-
const blurCallback = () => {
|
|
357
|
-
const now = /* @__PURE__ */ new Date();
|
|
358
|
-
const duration = now.getTime() - lastFocusEvent.getTime();
|
|
359
|
-
setTimeout(() => {
|
|
360
|
-
observability.track({
|
|
361
|
-
...getTelemetryIdentity(client),
|
|
362
|
-
action: "window.blur",
|
|
363
|
-
properties: {
|
|
364
|
-
duration
|
|
365
|
-
}
|
|
366
|
-
});
|
|
367
|
-
});
|
|
368
|
-
lastFocusEvent = now;
|
|
369
|
-
totalTime = totalTime + duration;
|
|
370
|
-
};
|
|
371
|
-
const unloadCallback = () => {
|
|
372
|
-
setTimeout(() => {
|
|
373
|
-
observability.track({
|
|
374
|
-
...getTelemetryIdentity(client),
|
|
375
|
-
action: "page.unload",
|
|
376
|
-
properties: {
|
|
377
|
-
duration: totalTime
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
});
|
|
381
|
-
};
|
|
382
|
-
const errorCallback = (event) => {
|
|
383
|
-
setTimeout(() => {
|
|
384
|
-
observability.track({
|
|
385
|
-
...getTelemetryIdentity(client),
|
|
386
|
-
action: "window.error",
|
|
387
|
-
properties: {
|
|
388
|
-
message: event.message,
|
|
389
|
-
filename: event.filename,
|
|
390
|
-
stack: event.error?.stack,
|
|
391
|
-
cause: event.error?.cause
|
|
392
|
-
}
|
|
393
|
-
});
|
|
394
|
-
});
|
|
395
|
-
};
|
|
396
|
-
window.addEventListener("click", clickCallback, true);
|
|
397
|
-
window.addEventListener("focus", focusCallback);
|
|
398
|
-
window.addEventListener("blur", blurCallback);
|
|
399
|
-
window.addEventListener("beforeunload", unloadCallback);
|
|
400
|
-
window.addEventListener("error", errorCallback);
|
|
401
|
-
return () => {
|
|
402
|
-
window.removeEventListener("click", clickCallback, true);
|
|
403
|
-
window.removeEventListener("focus", focusCallback);
|
|
404
|
-
window.removeEventListener("blur", blurCallback);
|
|
405
|
-
window.removeEventListener("beforeunload", unloadCallback);
|
|
406
|
-
window.removeEventListener("error", errorCallback);
|
|
407
|
-
};
|
|
408
|
-
};
|
|
409
|
-
|
|
410
74
|
// src/observability.ts
|
|
411
|
-
var
|
|
75
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/observability.ts";
|
|
412
76
|
var SPACE_METRICS_MIN_INTERVAL = 1e3 * 60;
|
|
413
77
|
var SPACE_TELEMETRY_MIN_INTERVAL = 1e3 * 60 * 60;
|
|
414
78
|
var NETWORK_METRICS_MIN_INTERVAL = 1e3 * 60 * 5;
|
|
415
79
|
var Observability = class {
|
|
80
|
+
_mode;
|
|
81
|
+
_namespace;
|
|
82
|
+
_config;
|
|
83
|
+
_group;
|
|
84
|
+
_secrets;
|
|
85
|
+
_tags = /* @__PURE__ */ new Map();
|
|
86
|
+
// TODO(wittjosiah): Generic metrics interface.
|
|
87
|
+
_otelMetrics;
|
|
88
|
+
_otelTraces;
|
|
89
|
+
// TODO(wittjosiah): Generic telemetry interface.
|
|
90
|
+
_telemetryBatchSize;
|
|
91
|
+
_telemetry;
|
|
92
|
+
// TODO(wittjosiah): Generic error logging interface.
|
|
93
|
+
_sentryLogProcessor;
|
|
94
|
+
_otelLogs;
|
|
95
|
+
_errorReportingOptions;
|
|
96
|
+
_captureException;
|
|
97
|
+
_captureUserFeedback;
|
|
98
|
+
_lastNetworkStatus;
|
|
99
|
+
_ctx = new Context(void 0, {
|
|
100
|
+
F: __dxlog_file,
|
|
101
|
+
L: 115
|
|
102
|
+
});
|
|
416
103
|
// TODO(nf): make platform a required extension?
|
|
417
104
|
constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog }) {
|
|
418
|
-
this._tags = /* @__PURE__ */ new Map();
|
|
419
|
-
this._ctx = new Context(void 0, {
|
|
420
|
-
F: __dxlog_file3,
|
|
421
|
-
L: 115
|
|
422
|
-
});
|
|
423
|
-
this.setIPDataTelemetryTags = (ipData) => {
|
|
424
|
-
this.setTag("city", ipData.city, "telemetry");
|
|
425
|
-
this.setTag("region", ipData.region, "telemetry");
|
|
426
|
-
this.setTag("country", ipData.country, "telemetry");
|
|
427
|
-
ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
|
|
428
|
-
ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
|
|
429
|
-
};
|
|
430
105
|
this._mode = mode;
|
|
431
106
|
this._namespace = namespace;
|
|
432
107
|
this._config = config;
|
|
@@ -465,11 +140,11 @@ var Observability = class {
|
|
|
465
140
|
process.env.DX_OTEL_AUTHORIZATION && (mergedSecrets.OTEL_AUTHORIZATION = process.env.DX_OTEL_AUTHORIZATION);
|
|
466
141
|
return mergedSecrets;
|
|
467
142
|
} else {
|
|
468
|
-
|
|
143
|
+
log("config", {
|
|
469
144
|
rtc: this._secrets,
|
|
470
145
|
config
|
|
471
146
|
}, {
|
|
472
|
-
F:
|
|
147
|
+
F: __dxlog_file,
|
|
473
148
|
L: 176,
|
|
474
149
|
S: this,
|
|
475
150
|
C: (f, a) => f(...a)
|
|
@@ -487,8 +162,8 @@ var Observability = class {
|
|
|
487
162
|
}
|
|
488
163
|
}
|
|
489
164
|
async initialize() {
|
|
490
|
-
|
|
491
|
-
F:
|
|
165
|
+
log("initializing...", void 0, {
|
|
166
|
+
F: __dxlog_file,
|
|
492
167
|
L: 191,
|
|
493
168
|
S: this,
|
|
494
169
|
C: (f, a) => f(...a)
|
|
@@ -500,8 +175,8 @@ var Observability = class {
|
|
|
500
175
|
await this._initTraces();
|
|
501
176
|
}
|
|
502
177
|
async close() {
|
|
503
|
-
|
|
504
|
-
F:
|
|
178
|
+
log("closing...", void 0, {
|
|
179
|
+
F: __dxlog_file,
|
|
505
180
|
L: 200,
|
|
506
181
|
S: this,
|
|
507
182
|
C: (f, a) => f(...a)
|
|
@@ -516,6 +191,11 @@ var Observability = class {
|
|
|
516
191
|
setMode(mode) {
|
|
517
192
|
this._mode = mode;
|
|
518
193
|
}
|
|
194
|
+
//
|
|
195
|
+
// Tags
|
|
196
|
+
//
|
|
197
|
+
/** Callback (e.g., to share tags with Sentry.) */
|
|
198
|
+
_setTag;
|
|
519
199
|
/**
|
|
520
200
|
* camelCase keys are converted to snake_case in Segment.
|
|
521
201
|
*/
|
|
@@ -542,10 +222,10 @@ var Observability = class {
|
|
|
542
222
|
if (clientServices.IdentityService) {
|
|
543
223
|
clientServices.IdentityService.queryIdentity().subscribe((idqr) => {
|
|
544
224
|
if (!idqr?.identity?.did) {
|
|
545
|
-
|
|
225
|
+
log("empty response from identity service", {
|
|
546
226
|
idqr
|
|
547
227
|
}, {
|
|
548
|
-
F:
|
|
228
|
+
F: __dxlog_file,
|
|
549
229
|
L: 247,
|
|
550
230
|
S: this,
|
|
551
231
|
C: (f, a) => f(...a)
|
|
@@ -561,10 +241,10 @@ var Observability = class {
|
|
|
561
241
|
if (clientServices.DevicesService) {
|
|
562
242
|
clientServices.DevicesService.queryDevices().subscribe((dqr) => {
|
|
563
243
|
if (!dqr || !dqr.devices || dqr.devices.length === 0) {
|
|
564
|
-
|
|
244
|
+
log("empty response from device service", {
|
|
565
245
|
device: dqr
|
|
566
246
|
}, {
|
|
567
|
-
F:
|
|
247
|
+
F: __dxlog_file,
|
|
568
248
|
L: 259,
|
|
569
249
|
S: this,
|
|
570
250
|
C: (f, a) => f(...a)
|
|
@@ -572,7 +252,7 @@ var Observability = class {
|
|
|
572
252
|
return;
|
|
573
253
|
}
|
|
574
254
|
invariant(dqr, "empty response from device service", {
|
|
575
|
-
F:
|
|
255
|
+
F: __dxlog_file,
|
|
576
256
|
L: 263,
|
|
577
257
|
S: this,
|
|
578
258
|
A: [
|
|
@@ -582,10 +262,10 @@ var Observability = class {
|
|
|
582
262
|
});
|
|
583
263
|
const thisDevice = dqr.devices.find((device) => device.kind === DeviceKind.CURRENT);
|
|
584
264
|
if (!thisDevice) {
|
|
585
|
-
|
|
265
|
+
log("no current device", {
|
|
586
266
|
device: dqr
|
|
587
267
|
}, {
|
|
588
|
-
F:
|
|
268
|
+
F: __dxlog_file,
|
|
589
269
|
L: 266,
|
|
590
270
|
S: this,
|
|
591
271
|
C: (f, a) => f(...a)
|
|
@@ -599,12 +279,19 @@ var Observability = class {
|
|
|
599
279
|
});
|
|
600
280
|
}
|
|
601
281
|
}
|
|
282
|
+
setIPDataTelemetryTags = (ipData) => {
|
|
283
|
+
this.setTag("city", ipData.city, "telemetry");
|
|
284
|
+
this.setTag("region", ipData.region, "telemetry");
|
|
285
|
+
this.setTag("country", ipData.country, "telemetry");
|
|
286
|
+
ipData.latitude && this.setTag("latitude", ipData.latitude.toString(), "telemetry");
|
|
287
|
+
ipData.longitude && this.setTag("longitude", ipData.longitude.toString(), "telemetry");
|
|
288
|
+
};
|
|
602
289
|
//
|
|
603
290
|
// Logs
|
|
604
291
|
//
|
|
605
292
|
async _initLogs() {
|
|
606
293
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
607
|
-
const { OtelLogs } = await import("./otel-
|
|
294
|
+
const { OtelLogs } = await import("./otel-JFXO22WD.mjs");
|
|
608
295
|
this._otelLogs = new OtelLogs({
|
|
609
296
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
610
297
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -619,18 +306,18 @@ var Observability = class {
|
|
|
619
306
|
logLevel: LogLevel.VERBOSE,
|
|
620
307
|
includeSharedWorkerLogs: false
|
|
621
308
|
});
|
|
622
|
-
this._otelLogs &&
|
|
623
|
-
|
|
309
|
+
this._otelLogs && log.runtimeConfig.processors.push(this._otelLogs.logProcessor);
|
|
310
|
+
log("otel logs enabled", {
|
|
624
311
|
namespace: this._namespace
|
|
625
312
|
}, {
|
|
626
|
-
F:
|
|
313
|
+
F: __dxlog_file,
|
|
627
314
|
L: 310,
|
|
628
315
|
S: this,
|
|
629
316
|
C: (f, a) => f(...a)
|
|
630
317
|
});
|
|
631
318
|
} else {
|
|
632
|
-
|
|
633
|
-
F:
|
|
319
|
+
log("otel logs disabled", void 0, {
|
|
320
|
+
F: __dxlog_file,
|
|
634
321
|
L: 312,
|
|
635
322
|
S: this,
|
|
636
323
|
C: (f, a) => f(...a)
|
|
@@ -642,7 +329,7 @@ var Observability = class {
|
|
|
642
329
|
//
|
|
643
330
|
async _initMetrics() {
|
|
644
331
|
if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {
|
|
645
|
-
const { OtelMetrics } = await import("./otel-
|
|
332
|
+
const { OtelMetrics } = await import("./otel-JFXO22WD.mjs");
|
|
646
333
|
this._otelMetrics = new OtelMetrics({
|
|
647
334
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
648
335
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -655,15 +342,15 @@ var Observability = class {
|
|
|
655
342
|
value.value
|
|
656
343
|
]))
|
|
657
344
|
});
|
|
658
|
-
|
|
659
|
-
F:
|
|
345
|
+
log("otel metrics enabled", void 0, {
|
|
346
|
+
F: __dxlog_file,
|
|
660
347
|
L: 337,
|
|
661
348
|
S: this,
|
|
662
349
|
C: (f, a) => f(...a)
|
|
663
350
|
});
|
|
664
351
|
} else {
|
|
665
|
-
|
|
666
|
-
F:
|
|
352
|
+
log("otel metrics disabled", void 0, {
|
|
353
|
+
F: __dxlog_file,
|
|
667
354
|
L: 339,
|
|
668
355
|
S: this,
|
|
669
356
|
C: (f, a) => f(...a)
|
|
@@ -685,8 +372,8 @@ var Observability = class {
|
|
|
685
372
|
}
|
|
686
373
|
const updateSignalMetrics = new Event().debounce(NETWORK_METRICS_MIN_INTERVAL);
|
|
687
374
|
updateSignalMetrics.on(this._ctx, async () => {
|
|
688
|
-
|
|
689
|
-
F:
|
|
375
|
+
log("send signal metrics", void 0, {
|
|
376
|
+
F: __dxlog_file,
|
|
690
377
|
L: 361,
|
|
691
378
|
S: this,
|
|
692
379
|
C: (f, a) => f(...a)
|
|
@@ -737,8 +424,8 @@ var Observability = class {
|
|
|
737
424
|
this._ctx.onDispose(() => subscriptions.forEach((subscription) => subscription.unsubscribe()));
|
|
738
425
|
const updateSpaceMetrics = new Event().debounce(SPACE_METRICS_MIN_INTERVAL);
|
|
739
426
|
updateSpaceMetrics.on(this._ctx, async () => {
|
|
740
|
-
|
|
741
|
-
F:
|
|
427
|
+
log("send space metrics", void 0, {
|
|
428
|
+
F: __dxlog_file,
|
|
742
429
|
L: 414,
|
|
743
430
|
S: this,
|
|
744
431
|
C: (f, a) => f(...a)
|
|
@@ -762,8 +449,8 @@ var Observability = class {
|
|
|
762
449
|
});
|
|
763
450
|
const updateSpaceTelemetry = new Event().debounce(SPACE_TELEMETRY_MIN_INTERVAL);
|
|
764
451
|
updateSpaceTelemetry.on(this._ctx, async () => {
|
|
765
|
-
|
|
766
|
-
F:
|
|
452
|
+
log("send space telemetry", void 0, {
|
|
453
|
+
F: __dxlog_file,
|
|
767
454
|
L: 425,
|
|
768
455
|
S: this,
|
|
769
456
|
C: (f, a) => f(...a)
|
|
@@ -800,7 +487,7 @@ var Observability = class {
|
|
|
800
487
|
async startRuntimeMetrics(client, frequency = NETWORK_METRICS_MIN_INTERVAL) {
|
|
801
488
|
const platform = await client.services.services.SystemService?.getPlatform();
|
|
802
489
|
invariant(platform, "platform is required", {
|
|
803
|
-
F:
|
|
490
|
+
F: __dxlog_file,
|
|
804
491
|
L: 463,
|
|
805
492
|
S: this,
|
|
806
493
|
A: [
|
|
@@ -835,10 +522,10 @@ var Observability = class {
|
|
|
835
522
|
this.gauge("dxos.client.services.runtime.heapTotal", platform2.memory.heapTotal);
|
|
836
523
|
this.gauge("dxos.client.services.runtime.heapUsed", platform2.memory.heapUsed);
|
|
837
524
|
}
|
|
838
|
-
}).catch((error) =>
|
|
525
|
+
}).catch((error) => log("platform error", {
|
|
839
526
|
error
|
|
840
527
|
}, {
|
|
841
|
-
F:
|
|
528
|
+
F: __dxlog_file,
|
|
842
529
|
L: 497,
|
|
843
530
|
S: this,
|
|
844
531
|
C: (f, a) => f(...a)
|
|
@@ -862,8 +549,8 @@ var Observability = class {
|
|
|
862
549
|
]))
|
|
863
550
|
});
|
|
864
551
|
} else {
|
|
865
|
-
|
|
866
|
-
F:
|
|
552
|
+
log("segment disabled", void 0, {
|
|
553
|
+
F: __dxlog_file,
|
|
867
554
|
L: 523,
|
|
868
555
|
S: this,
|
|
869
556
|
C: (f, a) => f(...a)
|
|
@@ -890,15 +577,15 @@ var Observability = class {
|
|
|
890
577
|
async _initErrorLogs() {
|
|
891
578
|
if (this._secrets.SENTRY_DESTINATION && this._mode !== "disabled") {
|
|
892
579
|
const { captureException, captureUserFeedback, init, setTag } = await import("./sentry/index.mjs");
|
|
893
|
-
const { SentryLogProcessor } = await import("./sentry-log-processor-
|
|
580
|
+
const { SentryLogProcessor } = await import("./sentry-log-processor-W3SG4RQL.mjs");
|
|
894
581
|
this._captureException = captureException;
|
|
895
582
|
this._captureUserFeedback = captureUserFeedback;
|
|
896
583
|
this._setTag = setTag;
|
|
897
|
-
|
|
584
|
+
log.info("Initializing Sentry", {
|
|
898
585
|
dest: this._secrets.SENTRY_DESTINATION,
|
|
899
586
|
options: this._errorReportingOptions
|
|
900
587
|
}, {
|
|
901
|
-
F:
|
|
588
|
+
F: __dxlog_file,
|
|
902
589
|
L: 556,
|
|
903
590
|
S: this,
|
|
904
591
|
C: (f, a) => f(...a)
|
|
@@ -916,8 +603,8 @@ var Observability = class {
|
|
|
916
603
|
}
|
|
917
604
|
});
|
|
918
605
|
} else {
|
|
919
|
-
|
|
920
|
-
F:
|
|
606
|
+
log("sentry disabled", void 0, {
|
|
607
|
+
F: __dxlog_file,
|
|
921
608
|
L: 576,
|
|
922
609
|
S: this,
|
|
923
610
|
C: (f, a) => f(...a)
|
|
@@ -925,7 +612,7 @@ var Observability = class {
|
|
|
925
612
|
}
|
|
926
613
|
}
|
|
927
614
|
startErrorLogs() {
|
|
928
|
-
this._sentryLogProcessor &&
|
|
615
|
+
this._sentryLogProcessor && log.runtimeConfig.processors.push(this._sentryLogProcessor.logProcessor);
|
|
929
616
|
}
|
|
930
617
|
startTraces() {
|
|
931
618
|
this._otelTraces && this._otelTraces.start();
|
|
@@ -933,7 +620,7 @@ var Observability = class {
|
|
|
933
620
|
// TODO(nf): Refactor init based on providers and their capabilities.
|
|
934
621
|
async _initTraces() {
|
|
935
622
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== "disabled") {
|
|
936
|
-
const { OtelTraces } = await import("./otel-
|
|
623
|
+
const { OtelTraces } = await import("./otel-JFXO22WD.mjs");
|
|
937
624
|
this._otelTraces = new OtelTraces({
|
|
938
625
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
939
626
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
@@ -963,10 +650,10 @@ var Observability = class {
|
|
|
963
650
|
*/
|
|
964
651
|
captureUserFeedback(message) {
|
|
965
652
|
if (!this._secrets.SENTRY_DESTINATION) {
|
|
966
|
-
|
|
653
|
+
log.info("Feedback submitted without Sentry destination", {
|
|
967
654
|
message
|
|
968
655
|
}, {
|
|
969
|
-
F:
|
|
656
|
+
F: __dxlog_file,
|
|
970
657
|
L: 625,
|
|
971
658
|
S: this,
|
|
972
659
|
C: (f, a) => f(...a)
|
|
@@ -979,19 +666,8 @@ var Observability = class {
|
|
|
979
666
|
|
|
980
667
|
export {
|
|
981
668
|
Observability,
|
|
982
|
-
OBSERVABILITY_DISABLED_KEY,
|
|
983
|
-
OBSERVABILITY_GROUP_KEY,
|
|
984
|
-
isObservabilityDisabled,
|
|
985
|
-
storeObservabilityDisabled,
|
|
986
|
-
getObservabilityGroup,
|
|
987
|
-
storeObservabilityGroup,
|
|
988
|
-
initializeAppObservability,
|
|
989
669
|
getTelemetryIdentifier,
|
|
990
670
|
getTelemetryIdentity,
|
|
991
|
-
|
|
992
|
-
getObservabilityState,
|
|
993
|
-
initializeNodeObservability,
|
|
994
|
-
mapSpaces,
|
|
995
|
-
setupTelemetryListeners
|
|
671
|
+
mapSpaces
|
|
996
672
|
};
|
|
997
|
-
//# sourceMappingURL=chunk-
|
|
673
|
+
//# sourceMappingURL=chunk-KKNY7TRV.mjs.map
|