@dxos/observability 0.8.3 → 0.8.4-main.1da679c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/chunk-5ICT2XF2.mjs +1 -0
- package/dist/lib/browser/{chunk-G6EE7HFV.mjs → chunk-ICKR6U3G.mjs} +51 -37
- package/dist/lib/browser/chunk-ICKR6U3G.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JA5VJRKF.mjs → chunk-LJO63BXO.mjs} +4 -4
- package/dist/lib/browser/{chunk-JA5VJRKF.mjs.map → chunk-LJO63BXO.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-YQJELTRP.mjs → chunk-OO2RDFNE.mjs} +86 -57
- package/dist/lib/browser/chunk-OO2RDFNE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/observability-ZVQ2YD62.mjs +10 -0
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs → otel-UHLVSR24.mjs} +123 -75
- package/dist/lib/browser/{otel-LHAFLNBQ.mjs.map → otel-UHLVSR24.mjs.map} +3 -3
- package/dist/lib/browser/segment/index.mjs +3 -3
- package/dist/lib/browser/sentry/index.mjs +2 -2
- package/dist/lib/browser/{sentry-log-processor-625AISXI.mjs → sentry-log-processor-RG4CFVGL.mjs} +60 -44
- package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-AZMSBUWR.mjs → chunk-24NMRR4E.mjs} +74 -47
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-M7QJLFGR.mjs → chunk-Q2I5AUBI.mjs} +86 -57
- package/dist/lib/{browser/chunk-YQJELTRP.mjs.map → node-esm/chunk-Q2I5AUBI.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs → chunk-QK5IUYVA.mjs} +4 -4
- package/dist/lib/node-esm/{chunk-H7Y2DDUN.mjs.map → chunk-QK5IUYVA.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs → chunk-QUZL7LKE.mjs} +1 -1
- package/dist/lib/node-esm/index.mjs +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/observability-DHZIWGLJ.mjs +11 -0
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs → otel-W6KWKVW5.mjs} +113 -65
- package/dist/lib/node-esm/{otel-AF5TSABC.mjs.map → otel-W6KWKVW5.mjs.map} +3 -3
- package/dist/lib/node-esm/segment/index.mjs +3 -3
- package/dist/lib/node-esm/sentry/index.mjs +2 -2
- package/dist/lib/node-esm/{sentry-log-processor-HPUPCMRG.mjs → sentry-log-processor-3BDS4BB4.mjs} +60 -44
- package/dist/lib/node-esm/sentry-log-processor-3BDS4BB4.mjs.map +7 -0
- package/dist/types/src/helpers/browser-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/browser-observability.js +4 -6
- package/dist/types/src/helpers/browser-observability.js.map +1 -1
- package/dist/types/src/helpers/common.js +1 -1
- package/dist/types/src/helpers/common.js.map +1 -1
- package/dist/types/src/helpers/map-spaces.js +5 -6
- package/dist/types/src/helpers/map-spaces.js.map +1 -1
- package/dist/types/src/helpers/node-observability.d.ts +1 -1
- package/dist/types/src/helpers/node-observability.d.ts.map +1 -1
- package/dist/types/src/helpers/node-observability.js +7 -11
- package/dist/types/src/helpers/node-observability.js.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +1 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.js +4 -7
- package/dist/types/src/helpers/setup-telemetry-listeners.js.map +1 -1
- package/dist/types/src/observability.d.ts +1 -1
- package/dist/types/src/observability.d.ts.map +1 -1
- package/dist/types/src/observability.js +68 -59
- package/dist/types/src/observability.js.map +1 -1
- package/dist/types/src/otel/logs.d.ts.map +1 -1
- package/dist/types/src/otel/logs.js +20 -19
- package/dist/types/src/otel/logs.js.map +1 -1
- package/dist/types/src/otel/metrics.js +5 -2
- package/dist/types/src/otel/metrics.js.map +1 -1
- package/dist/types/src/otel/otel.js +1 -1
- package/dist/types/src/otel/otel.js.map +1 -1
- package/dist/types/src/otel/traces-browser.js +3 -1
- package/dist/types/src/otel/traces-browser.js.map +1 -1
- package/dist/types/src/otel/traces.js +2 -0
- package/dist/types/src/otel/traces.js.map +1 -1
- package/dist/types/src/segment/base.d.ts +1 -1
- package/dist/types/src/segment/base.d.ts.map +1 -1
- package/dist/types/src/segment/base.js +2 -1
- package/dist/types/src/segment/base.js.map +1 -1
- package/dist/types/src/segment/browser.d.ts +1 -1
- package/dist/types/src/segment/browser.d.ts.map +1 -1
- package/dist/types/src/segment/browser.js +6 -10
- package/dist/types/src/segment/browser.js.map +1 -1
- package/dist/types/src/segment/node.d.ts +1 -1
- package/dist/types/src/segment/node.d.ts.map +1 -1
- package/dist/types/src/segment/node.js +2 -1
- package/dist/types/src/segment/node.js.map +1 -1
- package/dist/types/src/sentry/browser.d.ts.map +1 -1
- package/dist/types/src/sentry/browser.js +4 -6
- package/dist/types/src/sentry/browser.js.map +1 -1
- package/dist/types/src/sentry/index.d.ts +1 -1
- package/dist/types/src/sentry/index.d.ts.map +1 -1
- package/dist/types/src/sentry/index.js +0 -1
- package/dist/types/src/sentry/index.js.map +1 -1
- package/dist/types/src/sentry/node.d.ts.map +1 -1
- package/dist/types/src/sentry/node.js +8 -13
- package/dist/types/src/sentry/node.js.map +1 -1
- package/dist/types/src/sentry/node.node.test.js +3 -5
- package/dist/types/src/sentry/node.node.test.js.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.d.ts.map +1 -1
- package/dist/types/src/sentry/sentry-log-processor.js +58 -63
- package/dist/types/src/sentry/sentry-log-processor.js.map +1 -1
- package/dist/types/src/sentry/sentry.node.test.js +1 -1
- package/dist/types/src/sentry/sentry.node.test.js.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -15
- package/src/helpers/browser-observability.ts +2 -1
- package/src/helpers/node-observability.ts +5 -4
- package/src/helpers/setup-telemetry-listeners.ts +2 -1
- package/src/observability.ts +4 -4
- package/src/otel/logs.ts +2 -2
- package/src/otel/metrics.ts +1 -1
- package/src/otel/otel.ts +1 -1
- package/src/otel/traces-browser.ts +3 -3
- package/src/otel/traces.ts +2 -2
- package/src/segment/base.ts +1 -1
- package/src/segment/browser.ts +3 -2
- package/src/segment/node.ts +3 -2
- package/src/sentry/browser.ts +7 -7
- package/src/sentry/index.ts +1 -1
- package/src/sentry/node.node.test.ts +2 -1
- package/src/sentry/node.ts +3 -3
- package/src/sentry/sentry-log-processor.ts +15 -7
- package/src/sentry/sentry.node.test.ts +2 -1
- package/dist/lib/browser/chunk-G6EE7HFV.mjs.map +0 -7
- package/dist/lib/browser/chunk-KDP3SESE.mjs +0 -1
- package/dist/lib/browser/observability-HDE3I7TA.mjs +0 -10
- package/dist/lib/browser/sentry-log-processor-625AISXI.mjs.map +0 -7
- package/dist/lib/node/chunk-325GAGFA.cjs +0 -213
- package/dist/lib/node/chunk-325GAGFA.cjs.map +0 -7
- package/dist/lib/node/chunk-BZHVFSLF.cjs +0 -1025
- package/dist/lib/node/chunk-BZHVFSLF.cjs.map +0 -7
- package/dist/lib/node/chunk-GIYJMZEQ.cjs +0 -2
- package/dist/lib/node/chunk-GIYJMZEQ.cjs.map +0 -7
- package/dist/lib/node/chunk-MZ3PMDTP.cjs +0 -163
- package/dist/lib/node/chunk-MZ3PMDTP.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -60
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/observability-E2NGRIEN.cjs +0 -32
- package/dist/lib/node/observability-E2NGRIEN.cjs.map +0 -7
- package/dist/lib/node/otel-VF5YNCR3.cjs +0 -278
- package/dist/lib/node/otel-VF5YNCR3.cjs.map +0 -7
- package/dist/lib/node/segment/index.cjs +0 -33
- package/dist/lib/node/segment/index.cjs.map +0 -7
- package/dist/lib/node/sentry/index.cjs +0 -46
- package/dist/lib/node/sentry/index.cjs.map +0 -7
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs +0 -164
- package/dist/lib/node/sentry-log-processor-CCV4RL7N.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-AZMSBUWR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-M7QJLFGR.mjs.map +0 -7
- package/dist/lib/node-esm/observability-7BTI46NM.mjs +0 -11
- package/dist/lib/node-esm/sentry-log-processor-HPUPCMRG.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-KDP3SESE.mjs.map → chunk-5ICT2XF2.mjs.map} +0 -0
- /package/dist/lib/browser/{observability-HDE3I7TA.mjs.map → observability-ZVQ2YD62.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-YJ4KVBWC.mjs.map → chunk-QUZL7LKE.mjs.map} +0 -0
- /package/dist/lib/node-esm/{observability-7BTI46NM.mjs.map → observability-DHZIWGLJ.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-observability.js","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,sDAAsD;AACtD,OAAO,KAAK,WAAW,MAAM,aAAa,CAAC;AAM3C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-observability.js","sourceRoot":"","sources":["../../../../src/helpers/browser-observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// - Identifier can be synced via HALO to allow for correlation of events bewteen devices.
|
|
8
8
|
// - Identifier should also be stored outside of HALO such that it is available immediately on startup.
|
|
9
9
|
export const getTelemetryIdentifier = (client) => {
|
|
10
|
-
if (!
|
|
10
|
+
if (!client?.initialized) {
|
|
11
11
|
return undefined;
|
|
12
12
|
}
|
|
13
13
|
const identity = client.halo.identity.get();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/helpers/common.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAcF,8DAA8D;AAC9D,gFAAgF;AAChF,2CAA2C;AAC3C,2FAA2F;AAC3F,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAsB,EAAE;IAC3E,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/helpers/common.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAcF,8DAA8D;AAC9D,gFAAgF;AAChF,2CAA2C;AAC3C,2FAA2F;AAC3F,wGAAwG;AACxG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAsB,EAAE;IAC3E,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAmB,EAAE;IACtE,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -3,19 +3,18 @@
|
|
|
3
3
|
//
|
|
4
4
|
export const mapSpaces = (spaces, options = { verbose: false, truncateKeys: false }) => {
|
|
5
5
|
return spaces.map((space) => {
|
|
6
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
7
6
|
// TODO(burdon): Factor out.
|
|
8
7
|
// TODO(burdon): Agent needs to restart before `ready` is available.
|
|
9
|
-
const { open, ready } =
|
|
8
|
+
const { open, ready } = space.internal.data.metrics ?? {};
|
|
10
9
|
const startup = open && ready && ready.getTime() - open.getTime();
|
|
11
10
|
// TODO(burdon): Get feeds from client-services if verbose (factor out from devtools/diagnostics).
|
|
12
11
|
// const host = client.services.services.DevtoolsHost!;
|
|
13
12
|
const pipeline = space.internal.data.pipeline;
|
|
14
|
-
const startDataMutations =
|
|
15
|
-
const epoch =
|
|
13
|
+
const startDataMutations = pipeline?.currentEpoch?.subject.assertion.timeframe.totalMessages() ?? 0;
|
|
14
|
+
const epoch = pipeline?.currentEpoch?.subject.assertion.number;
|
|
16
15
|
// const appliedEpoch = pipeline?.appliedEpoch?.subject.assertion.number;
|
|
17
|
-
const currentDataMutations =
|
|
18
|
-
const totalDataMutations =
|
|
16
|
+
const currentDataMutations = pipeline?.currentDataTimeframe?.totalMessages() ?? 0;
|
|
17
|
+
const totalDataMutations = pipeline?.targetDataTimeframe?.totalMessages() ?? 0;
|
|
19
18
|
return {
|
|
20
19
|
// TODO(nf): truncate keys for DD?
|
|
21
20
|
key: space.key.truncate(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-spaces.js","sourceRoot":"","sources":["../../../../src/helpers/map-spaces.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AASF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAe,EAAE,UAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;IAChH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"map-spaces.js","sourceRoot":"","sources":["../../../../src/helpers/map-spaces.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AASF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAe,EAAE,UAA4B,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;IAChH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,4BAA4B;QAC5B,oEAAoE;QACpE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAElE,kGAAkG;QAClG,uDAAuD;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9C,MAAM,kBAAkB,GAAG,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACpG,MAAM,KAAK,GAAG,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/D,yEAAyE;QACzE,MAAM,oBAAoB,GAAG,QAAQ,EAAE,oBAAoB,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAClF,MAAM,kBAAkB,GAAG,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAE/E,OAAO;YACL,kCAAkC;YAClC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;YACzB,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM;YACnC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,MAAM;YACvD,OAAO;YACP,KAAK;YACL,gBAAgB;YAChB,kBAAkB;YAClB,oBAAoB;YACpB,kBAAkB;YAElB,0BAA0B;YAC1B,QAAQ,EAAE,CACR,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,GAAG,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9G,GAAG,CACJ,CAAC,OAAO,CAAC,CAAC,CAAC;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-observability.d.ts","sourceRoot":"","sources":["../../../../src/helpers/node-observability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-observability.d.ts","sourceRoot":"","sources":["../../../../src/helpers/node-observability.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,KAAK,IAAI,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAU,WAAW,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,kBAcjG,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,WAAW,MAAM,KAAG,OAAO,CAAC,4BAA4B,CAkBnG,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AA8BF,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CAExB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAU,2FAS/C,wBAAwB,KAAG,OAAO,CAAC,aAAa,CAoClD,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
//
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
|
-
import yaml from 'js-yaml';
|
|
5
4
|
import { existsSync, statSync } from 'node:fs';
|
|
6
5
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
7
6
|
import { join } from 'node:path';
|
|
7
|
+
import yaml from 'js-yaml';
|
|
8
8
|
import { v4 as uuid, validate as validateUuid } from 'uuid';
|
|
9
9
|
import { log } from '@dxos/log';
|
|
10
10
|
import { Observability } from '../observability';
|
|
@@ -26,7 +26,6 @@ export const showObservabilityBanner = async (configDir, bannercb) => {
|
|
|
26
26
|
};
|
|
27
27
|
export const getObservabilityState = async (configDir) => {
|
|
28
28
|
// check whether configDir exists and if it's a directory
|
|
29
|
-
var _a;
|
|
30
29
|
if (existsSync(configDir)) {
|
|
31
30
|
if (!statSync(configDir).isDirectory()) {
|
|
32
31
|
throw new Error(`Config directory ${configDir} exists but is not a directory`);
|
|
@@ -38,38 +37,35 @@ export const getObservabilityState = async (configDir) => {
|
|
|
38
37
|
const idPath = join(configDir, 'observability.yml');
|
|
39
38
|
if (existsSync(idPath)) {
|
|
40
39
|
const context = await readFile(idPath, 'utf-8');
|
|
41
|
-
return
|
|
40
|
+
return validate(context) ?? initializeState(idPath);
|
|
42
41
|
}
|
|
43
42
|
return initializeState(idPath);
|
|
44
43
|
};
|
|
45
44
|
// create initial state and write to file, using environment variables to override defaults.
|
|
46
45
|
const initializeState = async (idPath) => {
|
|
47
|
-
var _a, _b;
|
|
48
46
|
// TODO(nf): read initial values from config or seed file
|
|
49
47
|
const observabilityState = {
|
|
50
48
|
installationId: uuid(),
|
|
51
|
-
group:
|
|
52
|
-
mode: (process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : (
|
|
49
|
+
group: process.env.DX_OBSERVABILITY_GROUP ?? undefined,
|
|
50
|
+
mode: (process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : (process.env.DX_OBSERVABILITY_MODE ?? 'basic')),
|
|
53
51
|
};
|
|
54
52
|
await writeFile(idPath, '# This file is automatically generated by the @dxos/cli.\n' + yaml.dump(observabilityState), 'utf-8');
|
|
55
53
|
return observabilityState;
|
|
56
54
|
};
|
|
57
55
|
const validate = (contextString) => {
|
|
58
|
-
var _a;
|
|
59
56
|
const context = yaml.load(contextString);
|
|
60
57
|
if (Boolean(context.installationId) && validateUuid(context.installationId)) {
|
|
61
58
|
return {
|
|
62
59
|
...context,
|
|
63
|
-
mode: process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : (
|
|
60
|
+
mode: process.env.DX_DISABLE_OBSERVABILITY ? 'disabled' : (context.mode ?? 'basic'),
|
|
64
61
|
};
|
|
65
62
|
}
|
|
66
63
|
};
|
|
67
64
|
export const initializeNodeObservability = async ({ namespace, version, config, installationId, group, mode = 'basic', tracingEnable = true, replayEnable = true, }) => {
|
|
68
|
-
var _a;
|
|
69
65
|
log('initializeCliObservability', { config });
|
|
70
66
|
// TODO(nf): make CLI build populate runtime.app.build config?
|
|
71
67
|
const release = `${namespace}@${version}`;
|
|
72
|
-
const environment =
|
|
68
|
+
const environment = process.env.DX_ENVIRONMENT ?? 'unknown';
|
|
73
69
|
const observability = new Observability({
|
|
74
70
|
mode,
|
|
75
71
|
namespace,
|
|
@@ -94,7 +90,7 @@ export const initializeNodeObservability = async ({ namespace, version, config,
|
|
|
94
90
|
ipData && observability.setIPDataTelemetryTags(ipData);
|
|
95
91
|
}
|
|
96
92
|
catch (err) {
|
|
97
|
-
observability
|
|
93
|
+
observability?.captureException(err);
|
|
98
94
|
}
|
|
99
95
|
return observability;
|
|
100
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-observability.js","sourceRoot":"","sources":["../../../../src/helpers/node-observability.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,OAAO,
|
|
1
|
+
{"version":3,"file":"node-observability.js","sourceRoot":"","sources":["../../../../src/helpers/node-observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-telemetry-listeners.d.ts","sourceRoot":"","sources":["../../../../src/helpers/setup-telemetry-listeners.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-telemetry-listeners.d.ts","sourceRoot":"","sources":["../../../../src/helpers/setup-telemetry-listeners.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,eAAO,MAAM,uBAAuB,GAAI,WAAW,MAAM,EAAE,QAAQ,MAAM,EAAE,eAAe,aAAa,eA+FtG,CAAC"}
|
|
@@ -6,18 +6,16 @@ let lastFocusEvent = new Date();
|
|
|
6
6
|
let totalTime = 0;
|
|
7
7
|
export const setupTelemetryListeners = (namespace, client, observability) => {
|
|
8
8
|
const clickCallback = (event) => {
|
|
9
|
-
|
|
10
|
-
const id = (_a = event.target) === null || _a === void 0 ? void 0 : _a.id;
|
|
9
|
+
const id = event.target?.id;
|
|
11
10
|
if (!id) {
|
|
12
11
|
return;
|
|
13
12
|
}
|
|
14
13
|
setTimeout(() => {
|
|
15
|
-
var _a;
|
|
16
14
|
observability.track({
|
|
17
15
|
...getTelemetryIdentity(client),
|
|
18
16
|
action: 'window.click',
|
|
19
17
|
properties: {
|
|
20
|
-
id:
|
|
18
|
+
id: event.target?.id,
|
|
21
19
|
path: event.composedPath()
|
|
22
20
|
.filter((el) => Boolean(el.tagName))
|
|
23
21
|
.map((el) => `${el.tagName.toLowerCase()}${el.id ? `#${el.id}` : ''}`)
|
|
@@ -68,15 +66,14 @@ export const setupTelemetryListeners = (namespace, client, observability) => {
|
|
|
68
66
|
};
|
|
69
67
|
const errorCallback = (event) => {
|
|
70
68
|
setTimeout(() => {
|
|
71
|
-
var _a, _b;
|
|
72
69
|
observability.track({
|
|
73
70
|
...getTelemetryIdentity(client),
|
|
74
71
|
action: 'window.error',
|
|
75
72
|
properties: {
|
|
76
73
|
message: event.message,
|
|
77
74
|
filename: event.filename,
|
|
78
|
-
stack:
|
|
79
|
-
cause:
|
|
75
|
+
stack: event.error?.stack,
|
|
76
|
+
cause: event.error?.cause,
|
|
80
77
|
},
|
|
81
78
|
});
|
|
82
79
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-telemetry-listeners.js","sourceRoot":"","sources":["../../../../src/helpers/setup-telemetry-listeners.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;
|
|
1
|
+
{"version":3,"file":"setup-telemetry-listeners.js","sourceRoot":"","sources":["../../../../src/helpers/setup-telemetry-listeners.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Client, type Config } from '@dxos/client';
|
|
2
2
|
import { type ClientServices } from '@dxos/client-protocol';
|
|
3
3
|
import { type IPData } from './helpers';
|
|
4
|
-
import { type
|
|
4
|
+
import { type PageOptions, type TrackOptions } from './segment';
|
|
5
5
|
import { type InitOptions } from './sentry';
|
|
6
6
|
export type ObservabilitySecrets = {
|
|
7
7
|
DX_ENVIRONMENT: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/observability.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { Event, scheduleTaskInterval } from '@dxos/async';
|
|
|
5
5
|
import { PublicKey } from '@dxos/client';
|
|
6
6
|
import { Context } from '@dxos/context';
|
|
7
7
|
import { invariant } from '@dxos/invariant';
|
|
8
|
-
import {
|
|
8
|
+
import { LogLevel, log } from '@dxos/log';
|
|
9
9
|
import { ConnectionState } from '@dxos/network-manager';
|
|
10
10
|
import { DeviceKind, Platform } from '@dxos/protocols/proto/dxos/client/services';
|
|
11
11
|
import { isNode } from '@dxos/util';
|
|
@@ -39,25 +39,35 @@ const NETWORK_METRICS_MIN_INTERVAL = 1000 * 60 * 5; // 5 minutes
|
|
|
39
39
|
* https://dxosorg.grafana.net/explore
|
|
40
40
|
*/
|
|
41
41
|
export class Observability {
|
|
42
|
+
_mode;
|
|
43
|
+
_namespace;
|
|
44
|
+
_config;
|
|
45
|
+
_group;
|
|
46
|
+
_secrets;
|
|
47
|
+
_tags = new Map();
|
|
48
|
+
// TODO(wittjosiah): Generic metrics interface.
|
|
49
|
+
_otelMetrics;
|
|
50
|
+
_otelTraces;
|
|
51
|
+
// TODO(wittjosiah): Generic telemetry interface.
|
|
52
|
+
_telemetryBatchSize;
|
|
53
|
+
_telemetry;
|
|
54
|
+
// TODO(wittjosiah): Generic error logging interface.
|
|
55
|
+
_sentryLogProcessor;
|
|
56
|
+
_otelLogs;
|
|
57
|
+
_errorReportingOptions;
|
|
58
|
+
_captureException;
|
|
59
|
+
_captureUserFeedback;
|
|
60
|
+
_lastNetworkStatus;
|
|
61
|
+
_ctx = new Context();
|
|
42
62
|
// TODO(nf): make platform a required extension?
|
|
43
63
|
constructor({ mode, namespace, environment, release, config, group, secrets, telemetry, errorLog, }) {
|
|
44
|
-
var _a;
|
|
45
|
-
this._tags = new Map();
|
|
46
|
-
this._ctx = new Context();
|
|
47
|
-
this.setIPDataTelemetryTags = (ipData) => {
|
|
48
|
-
this.setTag('city', ipData.city, 'telemetry');
|
|
49
|
-
this.setTag('region', ipData.region, 'telemetry');
|
|
50
|
-
this.setTag('country', ipData.country, 'telemetry');
|
|
51
|
-
ipData.latitude && this.setTag('latitude', ipData.latitude.toString(), 'telemetry');
|
|
52
|
-
ipData.longitude && this.setTag('longitude', ipData.longitude.toString(), 'telemetry');
|
|
53
|
-
};
|
|
54
64
|
this._mode = mode;
|
|
55
65
|
this._namespace = namespace;
|
|
56
66
|
this._config = config;
|
|
57
67
|
this._group = group;
|
|
58
68
|
this._secrets = this._loadSecrets(config, secrets);
|
|
59
|
-
this._telemetryBatchSize =
|
|
60
|
-
this._errorReportingOptions = errorLog
|
|
69
|
+
this._telemetryBatchSize = telemetry?.batchSize ?? 30;
|
|
70
|
+
this._errorReportingOptions = errorLog?.sentryInitOptions;
|
|
61
71
|
// Tags.
|
|
62
72
|
this.setTag('mode', this._mode);
|
|
63
73
|
this.setTag('namespace', this._namespace);
|
|
@@ -93,13 +103,13 @@ export class Observability {
|
|
|
93
103
|
else {
|
|
94
104
|
log('config', { rtc: this._secrets, config });
|
|
95
105
|
return {
|
|
96
|
-
DX_ENVIRONMENT: config
|
|
97
|
-
DX_RELEASE: config
|
|
98
|
-
SENTRY_DESTINATION: config
|
|
99
|
-
TELEMETRY_API_KEY: config
|
|
100
|
-
IPDATA_API_KEY: config
|
|
101
|
-
OTEL_ENDPOINT: config
|
|
102
|
-
OTEL_AUTHORIZATION: config
|
|
106
|
+
DX_ENVIRONMENT: config?.get('runtime.app.env.DX_ENVIRONMENT'),
|
|
107
|
+
DX_RELEASE: config?.get('runtime.app.env.DX_RELEASE'),
|
|
108
|
+
SENTRY_DESTINATION: config?.get('runtime.app.env.DX_SENTRY_DESTINATION'),
|
|
109
|
+
TELEMETRY_API_KEY: config?.get('runtime.app.env.DX_TELEMETRY_API_KEY'),
|
|
110
|
+
IPDATA_API_KEY: config?.get('runtime.app.env.DX_IPDATA_API_KEY'),
|
|
111
|
+
OTEL_ENDPOINT: config?.get('runtime.app.env.DX_OTEL_ENDPOINT'),
|
|
112
|
+
OTEL_AUTHORIZATION: config?.get('runtime.app.env.DX_OTEL_AUTHORIZATION'),
|
|
103
113
|
...secrets,
|
|
104
114
|
};
|
|
105
115
|
}
|
|
@@ -124,16 +134,20 @@ export class Observability {
|
|
|
124
134
|
setMode(mode) {
|
|
125
135
|
this._mode = mode;
|
|
126
136
|
}
|
|
137
|
+
//
|
|
138
|
+
// Tags
|
|
139
|
+
//
|
|
140
|
+
/** Callback (e.g., to share tags with Sentry.) */
|
|
141
|
+
_setTag;
|
|
127
142
|
/**
|
|
128
143
|
* camelCase keys are converted to snake_case in Segment.
|
|
129
144
|
*/
|
|
130
145
|
setTag(key, value, scope) {
|
|
131
|
-
var _a;
|
|
132
146
|
if (value === undefined) {
|
|
133
147
|
return;
|
|
134
148
|
}
|
|
135
149
|
if (this.enabled && (scope === undefined || scope === 'all' || scope === 'errors')) {
|
|
136
|
-
|
|
150
|
+
this._setTag?.(key, value);
|
|
137
151
|
}
|
|
138
152
|
if (!scope) {
|
|
139
153
|
scope = 'all';
|
|
@@ -147,18 +161,16 @@ export class Observability {
|
|
|
147
161
|
async setIdentityTags(clientServices) {
|
|
148
162
|
if (clientServices.IdentityService) {
|
|
149
163
|
clientServices.IdentityService.queryIdentity().subscribe((idqr) => {
|
|
150
|
-
|
|
151
|
-
if (!((_a = idqr === null || idqr === void 0 ? void 0 : idqr.identity) === null || _a === void 0 ? void 0 : _a.did)) {
|
|
164
|
+
if (!idqr?.identity?.did) {
|
|
152
165
|
log('empty response from identity service', { idqr });
|
|
153
166
|
return;
|
|
154
167
|
}
|
|
155
168
|
this.setTag('did', idqr.identity.did);
|
|
156
|
-
|
|
169
|
+
this._telemetry?.identify({ userId: idqr.identity.did });
|
|
157
170
|
});
|
|
158
171
|
}
|
|
159
172
|
if (clientServices.DevicesService) {
|
|
160
173
|
clientServices.DevicesService.queryDevices().subscribe((dqr) => {
|
|
161
|
-
var _a;
|
|
162
174
|
if (!dqr || !dqr.devices || dqr.devices.length === 0) {
|
|
163
175
|
log('empty response from device service', { device: dqr });
|
|
164
176
|
return;
|
|
@@ -170,24 +182,30 @@ export class Observability {
|
|
|
170
182
|
return;
|
|
171
183
|
}
|
|
172
184
|
this.setTag('deviceKey', thisDevice.deviceKey.truncate());
|
|
173
|
-
if (
|
|
185
|
+
if (thisDevice.profile?.label) {
|
|
174
186
|
this.setTag('deviceProfile', thisDevice.profile.label);
|
|
175
187
|
}
|
|
176
188
|
});
|
|
177
189
|
}
|
|
178
190
|
}
|
|
191
|
+
setIPDataTelemetryTags = (ipData) => {
|
|
192
|
+
this.setTag('city', ipData.city, 'telemetry');
|
|
193
|
+
this.setTag('region', ipData.region, 'telemetry');
|
|
194
|
+
this.setTag('country', ipData.country, 'telemetry');
|
|
195
|
+
ipData.latitude && this.setTag('latitude', ipData.latitude.toString(), 'telemetry');
|
|
196
|
+
ipData.longitude && this.setTag('longitude', ipData.longitude.toString(), 'telemetry');
|
|
197
|
+
};
|
|
179
198
|
//
|
|
180
199
|
// Logs
|
|
181
200
|
//
|
|
182
201
|
async _initLogs() {
|
|
183
|
-
var _a, _b;
|
|
184
202
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== 'disabled') {
|
|
185
203
|
const { OtelLogs } = await import('./otel');
|
|
186
204
|
this._otelLogs = new OtelLogs({
|
|
187
205
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
188
206
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
189
207
|
serviceName: this._namespace,
|
|
190
|
-
serviceVersion:
|
|
208
|
+
serviceVersion: this.getTag('release')?.value ?? '0.0.0',
|
|
191
209
|
getTags: () => Object.fromEntries(Array.from(this._tags)
|
|
192
210
|
.filter(([key, value]) => {
|
|
193
211
|
return value.scope === 'all' || value.scope === 'errors';
|
|
@@ -207,14 +225,13 @@ export class Observability {
|
|
|
207
225
|
// Metrics
|
|
208
226
|
//
|
|
209
227
|
async _initMetrics() {
|
|
210
|
-
var _a, _b;
|
|
211
228
|
if (this.enabled && this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION) {
|
|
212
229
|
const { OtelMetrics } = await import('./otel');
|
|
213
230
|
this._otelMetrics = new OtelMetrics({
|
|
214
231
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
215
232
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
216
233
|
serviceName: this._namespace,
|
|
217
|
-
serviceVersion:
|
|
234
|
+
serviceVersion: this.getTag('release')?.value ?? '0.0.0',
|
|
218
235
|
getTags: () => Object.fromEntries(Array.from(this._tags)
|
|
219
236
|
.filter(([key, value]) => {
|
|
220
237
|
return value.scope === 'all' || value.scope === 'metrics';
|
|
@@ -233,8 +250,7 @@ export class Observability {
|
|
|
233
250
|
* The default implementation uses OpenTelemetry
|
|
234
251
|
*/
|
|
235
252
|
gauge(name, value, extraTags) {
|
|
236
|
-
|
|
237
|
-
(_a = this._otelMetrics) === null || _a === void 0 ? void 0 : _a.gauge(name, value, extraTags);
|
|
253
|
+
this._otelMetrics?.gauge(name, value, extraTags);
|
|
238
254
|
}
|
|
239
255
|
// TODO(nf): Refactor into ObservabilityExtensions.
|
|
240
256
|
startNetworkMetrics(clientServices) {
|
|
@@ -244,9 +260,8 @@ export class Observability {
|
|
|
244
260
|
// TODO(nf): support type in debounce()
|
|
245
261
|
const updateSignalMetrics = new Event().debounce(NETWORK_METRICS_MIN_INTERVAL);
|
|
246
262
|
updateSignalMetrics.on(this._ctx, async () => {
|
|
247
|
-
var _a, _b, _c, _d;
|
|
248
263
|
log('send signal metrics');
|
|
249
|
-
|
|
264
|
+
this._lastNetworkStatus?.signaling?.forEach(({ server, state }) => {
|
|
250
265
|
this.gauge('dxos.client.network.signal.connectionState', state, { server });
|
|
251
266
|
});
|
|
252
267
|
let swarmCount = 0;
|
|
@@ -257,20 +272,19 @@ export class Observability {
|
|
|
257
272
|
let totalReadBufferSize = 0;
|
|
258
273
|
let totalWriteBufferSize = 0;
|
|
259
274
|
let totalChannelBufferSize = 0;
|
|
260
|
-
|
|
261
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
275
|
+
this._lastNetworkStatus?.connectionInfo?.forEach((connectionInfo) => {
|
|
262
276
|
swarmCount++;
|
|
263
|
-
for (const conn of
|
|
264
|
-
connectionStates.set(conn.state, (
|
|
265
|
-
totalReadBufferSize +=
|
|
266
|
-
totalWriteBufferSize +=
|
|
267
|
-
for (const stream of
|
|
268
|
-
totalChannelBufferSize +=
|
|
277
|
+
for (const conn of connectionInfo.connections ?? []) {
|
|
278
|
+
connectionStates.set(conn.state, (connectionStates.get(conn.state) ?? 0) + 1);
|
|
279
|
+
totalReadBufferSize += conn.readBufferSize ?? 0;
|
|
280
|
+
totalWriteBufferSize += conn.writeBufferSize ?? 0;
|
|
281
|
+
for (const stream of conn.streams ?? []) {
|
|
282
|
+
totalChannelBufferSize += stream.writeBufferSize ?? 0;
|
|
269
283
|
}
|
|
270
284
|
}
|
|
271
285
|
this.gauge('dxos.client.network.swarm.count', swarmCount);
|
|
272
286
|
for (const state in ConnectionState) {
|
|
273
|
-
this.gauge('dxos.client.network.connection.count',
|
|
287
|
+
this.gauge('dxos.client.network.connection.count', connectionStates.get(state) ?? 0, { state });
|
|
274
288
|
}
|
|
275
289
|
this.gauge('dxos.client.network.totalReadBufferSize', totalReadBufferSize);
|
|
276
290
|
this.gauge('dxos.client.network.totalWriteBufferSize', totalWriteBufferSize);
|
|
@@ -331,8 +345,7 @@ export class Observability {
|
|
|
331
345
|
scheduleTaskInterval(this._ctx, async () => updateSpaceMetrics.emit(), NETWORK_METRICS_MIN_INTERVAL);
|
|
332
346
|
}
|
|
333
347
|
async startRuntimeMetrics(client, frequency = NETWORK_METRICS_MIN_INTERVAL) {
|
|
334
|
-
|
|
335
|
-
const platform = await ((_a = client.services.services.SystemService) === null || _a === void 0 ? void 0 : _a.getPlatform());
|
|
348
|
+
const platform = await client.services.services.SystemService?.getPlatform();
|
|
336
349
|
invariant(platform, 'platform is required');
|
|
337
350
|
this.setTag('platformType', Platform.PLATFORM_TYPE[platform.type].toLowerCase());
|
|
338
351
|
if (this._mode === 'full') {
|
|
@@ -347,7 +360,6 @@ export class Observability {
|
|
|
347
360
|
}
|
|
348
361
|
}
|
|
349
362
|
scheduleTaskInterval(this._ctx, async () => {
|
|
350
|
-
var _a;
|
|
351
363
|
if (client.services.constructor.name === 'WorkerClientServices') {
|
|
352
364
|
const memory = window.performance.memory;
|
|
353
365
|
if (memory) {
|
|
@@ -356,13 +368,15 @@ export class Observability {
|
|
|
356
368
|
this.gauge('dxos.client.runtime.heapSizeLimit', memory.jsHeapSizeLimit);
|
|
357
369
|
}
|
|
358
370
|
}
|
|
359
|
-
|
|
371
|
+
client.services.services.SystemService?.getPlatform()
|
|
372
|
+
.then((platform) => {
|
|
360
373
|
if (platform.memory) {
|
|
361
374
|
this.gauge('dxos.client.services.runtime.rss', platform.memory.rss);
|
|
362
375
|
this.gauge('dxos.client.services.runtime.heapTotal', platform.memory.heapTotal);
|
|
363
376
|
this.gauge('dxos.client.services.runtime.heapUsed', platform.memory.heapUsed);
|
|
364
377
|
}
|
|
365
|
-
})
|
|
378
|
+
})
|
|
379
|
+
.catch((error) => log('platform error', { error }));
|
|
366
380
|
}, frequency);
|
|
367
381
|
}
|
|
368
382
|
//
|
|
@@ -390,16 +404,14 @@ export class Observability {
|
|
|
390
404
|
* The default implementation uses Segment.
|
|
391
405
|
*/
|
|
392
406
|
page(options) {
|
|
393
|
-
|
|
394
|
-
(_a = this._telemetry) === null || _a === void 0 ? void 0 : _a.page(options);
|
|
407
|
+
this._telemetry?.page(options);
|
|
395
408
|
}
|
|
396
409
|
/**
|
|
397
410
|
* Submit telemetry user action.
|
|
398
411
|
* The default implementation uses Segment.
|
|
399
412
|
*/
|
|
400
413
|
track(options) {
|
|
401
|
-
|
|
402
|
-
(_a = this._telemetry) === null || _a === void 0 ? void 0 : _a.track(options);
|
|
414
|
+
this._telemetry?.track(options);
|
|
403
415
|
}
|
|
404
416
|
//
|
|
405
417
|
// Error Logs
|
|
@@ -443,14 +455,13 @@ export class Observability {
|
|
|
443
455
|
}
|
|
444
456
|
// TODO(nf): Refactor init based on providers and their capabilities.
|
|
445
457
|
async _initTraces() {
|
|
446
|
-
var _a, _b;
|
|
447
458
|
if (this._secrets.OTEL_ENDPOINT && this._secrets.OTEL_AUTHORIZATION && this._mode !== 'disabled') {
|
|
448
459
|
const { OtelTraces } = await import('./otel');
|
|
449
460
|
this._otelTraces = new OtelTraces({
|
|
450
461
|
endpoint: this._secrets.OTEL_ENDPOINT,
|
|
451
462
|
authorizationHeader: this._secrets.OTEL_AUTHORIZATION,
|
|
452
463
|
serviceName: this._namespace,
|
|
453
|
-
serviceVersion:
|
|
464
|
+
serviceVersion: this.getTag('release')?.value ?? '0.0.0',
|
|
454
465
|
getTags: () => Object.fromEntries(Array.from(this._tags)
|
|
455
466
|
.filter(([key, value]) => {
|
|
456
467
|
return value.scope === 'all' || value.scope === 'metrics';
|
|
@@ -464,9 +475,8 @@ export class Observability {
|
|
|
464
475
|
* The default implementation uses Sentry.
|
|
465
476
|
*/
|
|
466
477
|
captureException(err) {
|
|
467
|
-
var _a;
|
|
468
478
|
if (this.enabled) {
|
|
469
|
-
|
|
479
|
+
this._captureException?.(err);
|
|
470
480
|
}
|
|
471
481
|
}
|
|
472
482
|
/**
|
|
@@ -474,7 +484,6 @@ export class Observability {
|
|
|
474
484
|
* The default implementation uses Sentry.
|
|
475
485
|
*/
|
|
476
486
|
captureUserFeedback(message) {
|
|
477
|
-
var _a;
|
|
478
487
|
if (!this._secrets.SENTRY_DESTINATION) {
|
|
479
488
|
log.info('Feedback submitted without Sentry destination', { message });
|
|
480
489
|
return;
|
|
@@ -482,7 +491,7 @@ export class Observability {
|
|
|
482
491
|
// TODO(Zan): Should this respect telemetry mode? Sending feedback is explicitly user-initiated.
|
|
483
492
|
// - Maybe if telemetry is disable we shouldn't enable replay.
|
|
484
493
|
// - (Check the browser.ts implementation for reference).
|
|
485
|
-
void
|
|
494
|
+
void this._captureUserFeedback?.(message);
|
|
486
495
|
}
|
|
487
496
|
}
|
|
488
497
|
//# sourceMappingURL=observability.js.map
|