@dxos/observability 0.8.4-main.a4bbb77 → 0.8.4-main.abd8ff62ef
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/README.md +14 -11
- package/dist/lib/browser/chunk-3534PNWM.mjs +13 -0
- package/dist/lib/browser/chunk-3534PNWM.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/index.mjs +940 -34
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/log-processor-HPHWNBOK.mjs +38 -0
- package/dist/lib/browser/log-processor-HPHWNBOK.mjs.map +7 -0
- package/dist/lib/browser/logs-A2VDAHHD.mjs +115 -0
- package/dist/lib/browser/logs-A2VDAHHD.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/metrics-6OSN54ZV.mjs +115 -0
- package/dist/lib/browser/metrics-6OSN54ZV.mjs.map +7 -0
- package/dist/lib/browser/traces-browser-6MRGAKFC.mjs +151 -0
- package/dist/lib/browser/traces-browser-6MRGAKFC.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-SYPJQI4L.mjs +15 -0
- package/dist/lib/node-esm/chunk-SYPJQI4L.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +962 -34
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/log-processor-ZODHERST.mjs +39 -0
- package/dist/lib/node-esm/log-processor-ZODHERST.mjs.map +7 -0
- package/dist/lib/node-esm/logs-TA32MBMW.mjs +116 -0
- package/dist/lib/node-esm/logs-TA32MBMW.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/metrics-C5IKPAWD.mjs +116 -0
- package/dist/lib/node-esm/metrics-C5IKPAWD.mjs.map +7 -0
- package/dist/lib/node-esm/traces-5LKHMVVG.mjs +122 -0
- package/dist/lib/node-esm/traces-5LKHMVVG.mjs.map +7 -0
- package/dist/types/src/cli-observability-secrets.json +3 -4
- package/dist/types/src/extensions/index.d.ts +3 -0
- package/dist/types/src/extensions/index.d.ts.map +1 -0
- package/dist/types/src/extensions/index.js +6 -0
- package/dist/types/src/extensions/index.js.map +1 -0
- package/dist/types/src/extensions/otel/extension.d.ts +23 -0
- package/dist/types/src/extensions/otel/extension.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/extension.js +201 -0
- package/dist/types/src/extensions/otel/extension.js.map +1 -0
- package/dist/types/src/extensions/otel/index.d.ts +2 -0
- package/dist/types/src/extensions/otel/index.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/index.js +5 -0
- package/dist/types/src/extensions/otel/index.js.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/logs.d.ts +4 -3
- package/dist/types/src/extensions/otel/logs.d.ts.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/logs.js +52 -19
- package/dist/types/src/extensions/otel/logs.js.map +1 -0
- package/dist/types/src/extensions/otel/metrics.d.ts.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/metrics.js +2 -10
- package/dist/types/src/extensions/otel/metrics.js.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/otel.d.ts +3 -3
- package/dist/types/src/extensions/otel/otel.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/otel.js.map +1 -0
- package/dist/types/src/extensions/otel/span-processors.d.ts +25 -0
- package/dist/types/src/extensions/otel/span-processors.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/span-processors.js +41 -0
- package/dist/types/src/extensions/otel/span-processors.js.map +1 -0
- package/dist/types/src/extensions/otel/traces-browser.d.ts +25 -0
- package/dist/types/src/extensions/otel/traces-browser.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/traces-browser.js +104 -0
- package/dist/types/src/extensions/otel/traces-browser.js.map +1 -0
- package/dist/types/src/extensions/otel/traces.d.ts +25 -0
- package/dist/types/src/extensions/otel/traces.d.ts.map +1 -0
- package/dist/types/src/extensions/otel/traces.js +87 -0
- package/dist/types/src/extensions/otel/traces.js.map +1 -0
- package/dist/types/src/extensions/posthog/extension.d.ts +22 -0
- package/dist/types/src/extensions/posthog/extension.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/extension.js +144 -0
- package/dist/types/src/extensions/posthog/extension.js.map +1 -0
- package/dist/types/src/extensions/posthog/index.d.ts +2 -0
- package/dist/types/src/extensions/posthog/index.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/index.js +5 -0
- package/dist/types/src/extensions/posthog/index.js.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.d.ts +3 -0
- package/dist/types/src/extensions/posthog/log-processor.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.js +36 -0
- package/dist/types/src/extensions/posthog/log-processor.js.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.test.d.ts +2 -0
- package/dist/types/src/extensions/posthog/log-processor.test.d.ts.map +1 -0
- package/dist/types/src/extensions/posthog/log-processor.test.js +146 -0
- package/dist/types/src/extensions/posthog/log-processor.test.js.map +1 -0
- package/dist/types/src/extensions/stub.d.ts +3 -0
- package/dist/types/src/extensions/stub.d.ts.map +1 -0
- package/dist/types/src/extensions/stub.js +16 -0
- package/dist/types/src/extensions/stub.js.map +1 -0
- package/dist/types/src/index.d.ts +3 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/index.js +4 -3
- package/dist/types/src/index.js.map +1 -1
- package/dist/types/src/observability-extension.d.ts +74 -0
- package/dist/types/src/observability-extension.d.ts.map +1 -0
- package/dist/types/src/observability-extension.js +5 -0
- package/dist/types/src/observability-extension.js.map +1 -0
- package/dist/types/src/observability.d.ts +32 -110
- package/dist/types/src/observability.d.ts.map +1 -1
- package/dist/types/src/observability.js +177 -465
- package/dist/types/src/observability.js.map +1 -1
- package/dist/types/src/observability.test.d.ts +2 -0
- package/dist/types/src/observability.test.d.ts.map +1 -0
- package/dist/types/src/observability.test.js +312 -0
- package/dist/types/src/observability.test.js.map +1 -0
- package/dist/types/src/providers/client-observability.d.ts +11 -0
- package/dist/types/src/providers/client-observability.d.ts.map +1 -0
- package/dist/types/src/providers/client-observability.js +202 -0
- package/dist/types/src/providers/client-observability.js.map +1 -0
- package/dist/types/src/providers/index.d.ts +4 -0
- package/dist/types/src/providers/index.d.ts.map +1 -0
- package/dist/types/src/providers/index.js +7 -0
- package/dist/types/src/providers/index.js.map +1 -0
- package/dist/types/src/providers/ip-data.d.ts +5 -0
- package/dist/types/src/providers/ip-data.d.ts.map +1 -0
- package/dist/types/src/providers/ip-data.js +57 -0
- package/dist/types/src/providers/ip-data.js.map +1 -0
- package/dist/types/src/providers/storage.d.ts +3 -0
- package/dist/types/src/providers/storage.d.ts.map +1 -0
- package/dist/types/src/providers/storage.js +19 -0
- package/dist/types/src/providers/storage.js.map +1 -0
- package/dist/types/src/storage/browser.d.ts +19 -0
- package/dist/types/src/storage/browser.d.ts.map +1 -0
- package/dist/types/src/storage/browser.js +69 -0
- package/dist/types/src/storage/browser.js.map +1 -0
- package/dist/types/src/storage/index.d.ts +2 -0
- package/dist/types/src/storage/index.d.ts.map +1 -0
- package/dist/types/src/storage/index.js.map +1 -0
- package/dist/types/src/storage/node.d.ts +26 -0
- package/dist/types/src/storage/node.d.ts.map +1 -0
- package/dist/types/src/{helpers/node-observability.js → storage/node.js} +38 -43
- package/dist/types/src/storage/node.js.map +1 -0
- package/dist/types/src/storage/node.test.d.ts +2 -0
- package/dist/types/src/storage/node.test.d.ts.map +1 -0
- package/dist/types/src/storage/node.test.js +103 -0
- package/dist/types/src/storage/node.test.js.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +34 -54
- package/src/cli-observability-secrets.json +3 -4
- package/src/extensions/index.ts +6 -0
- package/src/extensions/otel/extension.ts +258 -0
- package/src/extensions/otel/index.ts +5 -0
- package/src/extensions/otel/logs.ts +137 -0
- package/src/{otel → extensions/otel}/metrics.ts +2 -12
- package/src/{otel → extensions/otel}/otel.ts +3 -3
- package/src/extensions/otel/span-processors.ts +45 -0
- package/src/extensions/otel/traces-browser.ts +139 -0
- package/src/extensions/otel/traces.ts +113 -0
- package/src/extensions/posthog/extension.ts +181 -0
- package/src/extensions/posthog/index.ts +5 -0
- package/src/extensions/posthog/log-processor.test.ts +186 -0
- package/src/extensions/posthog/log-processor.ts +43 -0
- package/src/extensions/stub.ts +19 -0
- package/src/index.ts +4 -3
- package/src/observability-extension.ts +94 -0
- package/src/observability.test.ts +531 -0
- package/src/observability.ts +236 -577
- package/src/providers/client-observability.ts +255 -0
- package/src/providers/index.ts +7 -0
- package/src/providers/ip-data.ts +91 -0
- package/src/providers/storage.ts +23 -0
- package/src/storage/browser.ts +71 -0
- package/src/{segment → storage}/index.ts +0 -1
- package/src/storage/node.test.ts +129 -0
- package/src/{helpers/node-observability.ts → storage/node.ts} +41 -71
- package/src/vite-import-meta.d.ts +14 -0
- package/dist/lib/browser/chunk-5ICT2XF2.mjs +0 -1
- package/dist/lib/browser/chunk-ICKR6U3G.mjs +0 -161
- package/dist/lib/browser/chunk-ICKR6U3G.mjs.map +0 -7
- package/dist/lib/browser/chunk-LJO63BXO.mjs +0 -164
- package/dist/lib/browser/chunk-LJO63BXO.mjs.map +0 -7
- package/dist/lib/browser/chunk-YTRUOREY.mjs +0 -1025
- package/dist/lib/browser/chunk-YTRUOREY.mjs.map +0 -7
- package/dist/lib/browser/observability-CQGG3MID.mjs +0 -10
- package/dist/lib/browser/otel-6FVBNA5F.mjs +0 -327
- package/dist/lib/browser/otel-6FVBNA5F.mjs.map +0 -7
- package/dist/lib/browser/segment/index.mjs +0 -11
- package/dist/lib/browser/segment/index.mjs.map +0 -7
- package/dist/lib/browser/sentry/index.mjs +0 -24
- package/dist/lib/browser/sentry/index.mjs.map +0 -7
- package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs +0 -162
- package/dist/lib/browser/sentry-log-processor-RG4CFVGL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs +0 -229
- package/dist/lib/node-esm/chunk-24NMRR4E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-4EWQFQ2F.mjs +0 -1026
- package/dist/lib/node-esm/chunk-4EWQFQ2F.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QK5IUYVA.mjs +0 -135
- package/dist/lib/node-esm/chunk-QK5IUYVA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QUZL7LKE.mjs +0 -2
- package/dist/lib/node-esm/chunk-QUZL7LKE.mjs.map +0 -7
- package/dist/lib/node-esm/observability-DHNVVRC7.mjs +0 -11
- package/dist/lib/node-esm/observability-DHNVVRC7.mjs.map +0 -7
- package/dist/lib/node-esm/otel-KHSGBROB.mjs +0 -310
- package/dist/lib/node-esm/otel-KHSGBROB.mjs.map +0 -7
- package/dist/lib/node-esm/segment/index.mjs +0 -12
- package/dist/lib/node-esm/segment/index.mjs.map +0 -7
- package/dist/lib/node-esm/sentry/index.mjs +0 -25
- package/dist/lib/node-esm/sentry/index.mjs.map +0 -7
- package/dist/lib/node-esm/sentry-log-processor-3BDS4BB4.mjs +0 -163
- package/dist/lib/node-esm/sentry-log-processor-3BDS4BB4.mjs.map +0 -7
- package/dist/types/src/helpers/browser-observability.d.ts +0 -17
- package/dist/types/src/helpers/browser-observability.d.ts.map +0 -1
- package/dist/types/src/helpers/browser-observability.js +0 -138
- package/dist/types/src/helpers/browser-observability.js.map +0 -1
- package/dist/types/src/helpers/common.d.ts +0 -12
- package/dist/types/src/helpers/common.d.ts.map +0 -1
- package/dist/types/src/helpers/common.js +0 -23
- package/dist/types/src/helpers/common.js.map +0 -1
- package/dist/types/src/helpers/index.d.ts +0 -6
- package/dist/types/src/helpers/index.d.ts.map +0 -1
- package/dist/types/src/helpers/index.js +0 -9
- package/dist/types/src/helpers/index.js.map +0 -1
- package/dist/types/src/helpers/map-spaces.d.ts +0 -18
- package/dist/types/src/helpers/map-spaces.d.ts.map +0 -1
- package/dist/types/src/helpers/map-spaces.js +0 -36
- package/dist/types/src/helpers/map-spaces.js.map +0 -1
- package/dist/types/src/helpers/node-observability.d.ts +0 -24
- package/dist/types/src/helpers/node-observability.d.ts.map +0 -1
- package/dist/types/src/helpers/node-observability.js.map +0 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts +0 -4
- package/dist/types/src/helpers/setup-telemetry-listeners.d.ts.map +0 -1
- package/dist/types/src/helpers/setup-telemetry-listeners.js +0 -94
- package/dist/types/src/helpers/setup-telemetry-listeners.js.map +0 -1
- package/dist/types/src/otel/index.d.ts +0 -5
- package/dist/types/src/otel/index.d.ts.map +0 -1
- package/dist/types/src/otel/index.js +0 -8
- package/dist/types/src/otel/index.js.map +0 -1
- package/dist/types/src/otel/logs.d.ts.map +0 -1
- package/dist/types/src/otel/logs.js.map +0 -1
- package/dist/types/src/otel/metrics.d.ts.map +0 -1
- package/dist/types/src/otel/metrics.js.map +0 -1
- package/dist/types/src/otel/otel.d.ts.map +0 -1
- package/dist/types/src/otel/otel.js.map +0 -1
- package/dist/types/src/otel/traces-browser.d.ts +0 -8
- package/dist/types/src/otel/traces-browser.d.ts.map +0 -1
- package/dist/types/src/otel/traces-browser.js +0 -53
- package/dist/types/src/otel/traces-browser.js.map +0 -1
- package/dist/types/src/otel/traces.d.ts +0 -8
- package/dist/types/src/otel/traces.d.ts.map +0 -1
- package/dist/types/src/otel/traces.js +0 -46
- package/dist/types/src/otel/traces.js.map +0 -1
- package/dist/types/src/segment/base.d.ts +0 -15
- package/dist/types/src/segment/base.d.ts.map +0 -1
- package/dist/types/src/segment/base.js +0 -51
- package/dist/types/src/segment/base.js.map +0 -1
- package/dist/types/src/segment/browser.d.ts +0 -15
- package/dist/types/src/segment/browser.d.ts.map +0 -1
- package/dist/types/src/segment/browser.js +0 -63
- package/dist/types/src/segment/browser.js.map +0 -1
- package/dist/types/src/segment/index.d.ts +0 -3
- package/dist/types/src/segment/index.d.ts.map +0 -1
- package/dist/types/src/segment/index.js +0 -6
- package/dist/types/src/segment/index.js.map +0 -1
- package/dist/types/src/segment/node.d.ts +0 -16
- package/dist/types/src/segment/node.d.ts.map +0 -1
- package/dist/types/src/segment/node.js +0 -84
- package/dist/types/src/segment/node.js.map +0 -1
- package/dist/types/src/segment/types.d.ts +0 -52
- package/dist/types/src/segment/types.d.ts.map +0 -1
- package/dist/types/src/segment/types.js +0 -18
- package/dist/types/src/segment/types.js.map +0 -1
- package/dist/types/src/sentry/browser.d.ts +0 -32
- package/dist/types/src/sentry/browser.d.ts.map +0 -1
- package/dist/types/src/sentry/browser.js +0 -110
- package/dist/types/src/sentry/browser.js.map +0 -1
- package/dist/types/src/sentry/index.d.ts +0 -3
- package/dist/types/src/sentry/index.d.ts.map +0 -1
- package/dist/types/src/sentry/index.js.map +0 -1
- package/dist/types/src/sentry/node.d.ts +0 -32
- package/dist/types/src/sentry/node.d.ts.map +0 -1
- package/dist/types/src/sentry/node.js +0 -106
- package/dist/types/src/sentry/node.js.map +0 -1
- package/dist/types/src/sentry/node.node.test.d.ts +0 -2
- package/dist/types/src/sentry/node.node.test.d.ts.map +0 -1
- package/dist/types/src/sentry/node.node.test.js +0 -32
- package/dist/types/src/sentry/node.node.test.js.map +0 -1
- package/dist/types/src/sentry/sentry-log-processor.d.ts +0 -9
- package/dist/types/src/sentry/sentry-log-processor.d.ts.map +0 -1
- package/dist/types/src/sentry/sentry-log-processor.js +0 -144
- package/dist/types/src/sentry/sentry-log-processor.js.map +0 -1
- package/dist/types/src/sentry/sentry.node.test.d.ts +0 -2
- package/dist/types/src/sentry/sentry.node.test.d.ts.map +0 -1
- package/dist/types/src/sentry/sentry.node.test.js +0 -28
- package/dist/types/src/sentry/sentry.node.test.js.map +0 -1
- package/dist/types/src/sentry/types.d.ts +0 -18
- package/dist/types/src/sentry/types.d.ts.map +0 -1
- package/dist/types/src/sentry/types.js +0 -4
- package/dist/types/src/sentry/types.js.map +0 -1
- package/dist/types/src/testing/index.d.ts +0 -2
- package/dist/types/src/testing/index.d.ts.map +0 -1
- package/dist/types/src/testing/index.js +0 -5
- package/dist/types/src/testing/index.js.map +0 -1
- package/dist/types/src/testing/testkit/browser.d.ts +0 -2
- package/dist/types/src/testing/testkit/browser.d.ts.map +0 -1
- package/dist/types/src/testing/testkit/browser.js +0 -7
- package/dist/types/src/testing/testkit/browser.js.map +0 -1
- package/dist/types/src/testing/testkit/index.d.ts +0 -2
- package/dist/types/src/testing/testkit/index.d.ts.map +0 -1
- package/dist/types/src/testing/testkit/index.js +0 -6
- package/dist/types/src/testing/testkit/index.js.map +0 -1
- package/src/helpers/browser-observability.ts +0 -178
- package/src/helpers/common.ts +0 -38
- package/src/helpers/index.ts +0 -9
- package/src/helpers/map-spaces.ts +0 -48
- package/src/helpers/setup-telemetry-listeners.ts +0 -109
- package/src/otel/index.ts +0 -8
- package/src/otel/logs.ts +0 -102
- package/src/otel/traces-browser.ts +0 -62
- package/src/otel/traces.ts +0 -60
- package/src/segment/base.ts +0 -69
- package/src/segment/browser.ts +0 -69
- package/src/segment/node.ts +0 -95
- package/src/segment/types.ts +0 -57
- package/src/sentry/browser.ts +0 -133
- package/src/sentry/index.ts +0 -6
- package/src/sentry/node.node.test.ts +0 -40
- package/src/sentry/node.ts +0 -126
- package/src/sentry/sentry-log-processor.ts +0 -174
- package/src/sentry/sentry.node.test.ts +0 -35
- package/src/sentry/types.ts +0 -22
- package/src/testing/index.ts +0 -5
- package/src/testing/testkit/browser.ts +0 -8
- package/src/testing/testkit/index.ts +0 -7
- package/src/testing/testkit/shims.d.ts +0 -5
- /package/dist/lib/browser/{chunk-5ICT2XF2.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{browser/observability-CQGG3MID.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
- /package/dist/types/src/{otel → extensions/otel}/metrics.d.ts +0 -0
- /package/dist/types/src/{otel → extensions/otel}/otel.js +0 -0
- /package/dist/types/src/{sentry → storage}/index.js +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import {
|
|
2
|
+
setDiagLogger
|
|
3
|
+
} from "./chunk-3534PNWM.mjs";
|
|
4
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
+
|
|
6
|
+
// src/extensions/otel/metrics.ts
|
|
7
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
8
|
+
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
9
|
+
import { log } from "@dxos/log";
|
|
10
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
11
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/metrics.ts";
|
|
12
|
+
var EXPORT_INTERVAL = 60 * 1e3;
|
|
13
|
+
var OtelMetrics = class {
|
|
14
|
+
options;
|
|
15
|
+
_meterProvider;
|
|
16
|
+
_meter;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.options = options;
|
|
19
|
+
setDiagLogger(options.consoleDiagLogLevel);
|
|
20
|
+
const grafanaMetricReader = new PeriodicExportingMetricReader({
|
|
21
|
+
exporter: new OTLPMetricExporter({
|
|
22
|
+
url: this.options.endpoint + "/v1/metrics",
|
|
23
|
+
headers: this.options.headers
|
|
24
|
+
}),
|
|
25
|
+
exportIntervalMillis: EXPORT_INTERVAL
|
|
26
|
+
});
|
|
27
|
+
this._meterProvider = new MeterProvider({
|
|
28
|
+
resource: this.options.resource,
|
|
29
|
+
readers: [
|
|
30
|
+
grafanaMetricReader
|
|
31
|
+
]
|
|
32
|
+
});
|
|
33
|
+
this._meter = this._meterProvider.getMeter("dxos-observability");
|
|
34
|
+
const metrics = {
|
|
35
|
+
// TODO: update metrics names and remove prefix?
|
|
36
|
+
increment: (name, value, data) => {
|
|
37
|
+
this.increment(name, value, convertTags(data));
|
|
38
|
+
},
|
|
39
|
+
distribution: (name, value, data) => {
|
|
40
|
+
this.distribution(name, value, convertTags(data));
|
|
41
|
+
},
|
|
42
|
+
set: (name, value, data) => {
|
|
43
|
+
},
|
|
44
|
+
gauge: (name, value, data) => {
|
|
45
|
+
this.gauge(name, value, convertTags(data));
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
49
|
+
}
|
|
50
|
+
gauge(name, value, tags) {
|
|
51
|
+
const gauge = this._meter.createGauge(name);
|
|
52
|
+
log("otel gauge", {
|
|
53
|
+
name,
|
|
54
|
+
value,
|
|
55
|
+
tags: {
|
|
56
|
+
...this.options.getTags(),
|
|
57
|
+
...tags
|
|
58
|
+
}
|
|
59
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 52, S: this });
|
|
60
|
+
gauge.record(value, {
|
|
61
|
+
...this.options.getTags(),
|
|
62
|
+
...tags
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
increment(name, value, tags) {
|
|
66
|
+
const counter = this._meter.createCounter(name);
|
|
67
|
+
log("otel counter", {
|
|
68
|
+
name,
|
|
69
|
+
value,
|
|
70
|
+
tags: {
|
|
71
|
+
...this.options.getTags(),
|
|
72
|
+
...tags
|
|
73
|
+
}
|
|
74
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 67, S: this });
|
|
75
|
+
counter.add(value ?? 1, {
|
|
76
|
+
...this.options.getTags(),
|
|
77
|
+
...tags
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
distribution(name, value, tags) {
|
|
81
|
+
const distribution = this._meter.createHistogram(name);
|
|
82
|
+
log("otel distribution", {
|
|
83
|
+
name,
|
|
84
|
+
value,
|
|
85
|
+
tags: {
|
|
86
|
+
...this.options.getTags(),
|
|
87
|
+
...tags
|
|
88
|
+
}
|
|
89
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 82, S: this });
|
|
90
|
+
distribution.record(value, {
|
|
91
|
+
...this.options.getTags(),
|
|
92
|
+
...tags
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
flush() {
|
|
96
|
+
return this._meterProvider.forceFlush();
|
|
97
|
+
}
|
|
98
|
+
close() {
|
|
99
|
+
return this._meterProvider.shutdown();
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
var convertTags = (data) => {
|
|
103
|
+
if (data && data.tags) {
|
|
104
|
+
return Object.entries(data.tags).reduce((obj, [key, value]) => {
|
|
105
|
+
obj[key] = value;
|
|
106
|
+
return obj;
|
|
107
|
+
}, {});
|
|
108
|
+
} else {
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
export {
|
|
113
|
+
OtelMetrics
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=metrics-6OSN54ZV.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/otel/metrics.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Meter } from '@opentelemetry/api';\nimport { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';\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\n const grafanaMetricReader = new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter({\n url: this.options.endpoint + '/v1/metrics',\n headers: this.options.headers,\n }),\n exportIntervalMillis: EXPORT_INTERVAL,\n });\n\n this._meterProvider = new MeterProvider({\n resource: this.options.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"],
|
|
5
|
+
"mappings": ";;;;;;AAKA,SAASA,0BAA0B;AACnC,SAASC,eAAeC,qCAAqC;AAE7D,SAASC,WAAW;AACpB,SAA0BC,uBAAuB;AAIjD,IAAA,eAAMC;;AAGIC,IAAAA,cAAAA,MAA8B;EAC9BC;EAER;;cACE,SAAA;AACA,SAAA,UAAA;kBAIY,QAAIC,mBAAmB;gCACbC,IAAAA,8BAAW;gBAC7BC,IAAS,mBAAoB;QAC/B,KAAA,KAAA,QAAA,WAAA;QACAC,SAAAA,KAAAA,QAAsBN;MACxB,CAAA;MAEI,sBAAsBO;;SAExBC,iBAAS,IAAA,cAAA;gBAACC,KAAAA,QAAAA;eAAoB;QAChC;MACI;IAEJ,CAAA;SACE,SAAA,KAAA,eAAA,SAAA,oBAAgD;UAChDC,UAAYC;;MAEZ,WAAA,CAAA,MAAA,OAAA,SAAA;AACAC,aAAAA,UAAeD,MAAcE,OAAeC,YAAAA,IAAAA,CAAAA;;MAE5C,cAAA,CAAA,MAAA,OAAA,SAAA;AACAC,aAAMJ,aAAsCG,MAAAA,OAAAA,YAAAA,IAAAA,CAAAA;MAC1C;MACF,KAAA,CAAA,MAAA,OAAA,SAAA;;MAGA,OAAA,CAAA,MAAA,OAAA,SAAA;AACF,aAAA,MAAA,MAAA,OAAA,YAAA,IAAA,CAAA;MAEAE;IACF;AAEAC,oBAAmCC,cAAkB,kBAAA,OAAA;;QAEnDC,MAAI,OAAA,MAAc;UAAER,QAAAA,KAAAA,OAAAA,YAAAA,IAAAA;QAAME,cAAAA;MAAOK;;YAAmC;QAAQ,GAAA,KAAA,QAAA,QAAA;QAAE,GAAA;MAC9ED;qBAA8BG,YAAQC,GAAO,cAAE,GAAA,IAAA,GAAA,KAAA,CAAA;UAAE,OAAO,OAAA;MAAC,GAAA,KAAA,QAAA,QAAA;MAC3D,GAAA;IAEAX,CAAAA;;YAEM,MAAA,OAAA,MAAgB;UAAEC,UAAAA,KAAAA,OAAAA,cAAAA,IAAAA;QAAME,gBAAAA;MAAOK;;YAAmC;QAAQ,GAAA,KAAA,QAAA,QAAA;QAAE,GAAA;MAChFI;qBAAkCF,YAAQC,GAAO,cAAE,GAAA,IAAA,GAAA,KAAA,CAAA;YAAKH,IAAI,SAAA,GAAA;MAAC,GAAA,KAAA,QAAA,QAAA;MAC/D,GAAA;IAEAN,CAAAA;;eAEM,MAAA,OAAA,MAAqB;UAAED,eAAAA,KAAAA,OAAAA,gBAAAA,IAAAA;QAAME,qBAAAA;MAAOK;;YAAmC;QAAQ,GAAA,KAAA,QAAA,QAAA;QAAE,GAAA;MACrFN;qBAAqCQ,YAAQC,GAAO,cAAE,GAAA,IAAA,GAAA,KAAA,CAAA;iBAAS,OAAA,OAAA;MAAC,GAAA,KAAA,QAAA,QAAA;MAClE,GAAA;IAEAE,CAAAA;;EAEA,QAAA;AAEAC,WAAuB,KAAA,eAAA,WAAA;;EAEvB,QAAA;AACF,WAAA,KAAA,eAAA,SAAA;EAEA;;kBAEWC,CAAAA,SAAOC;cACRC,KAAI,MAAGd;WACX,OAAOe,QAAAA,KAAAA,IAAAA,EAAAA,OAAAA,CAAAA,KAAAA,CAAAA,KAAAA,KAAAA,MAAAA;AACL,UAAA,GAAA,IAAA;AACC,aAAA;IACL,GAAA,CAAA,CAAA;EACF,OAAA;AACF,WAAA,CAAA;;;",
|
|
6
|
+
"names": ["OTLPMetricExporter", "MeterProvider", "PeriodicExportingMetricReader", "log", "TRACE_PROCESSOR", "EXPORT_INTERVAL", "_meterProvider", "_meter", "OTLPMetricExporter", "endpoint", "headers", "exportIntervalMillis", "MeterProvider", "readers", "grafanaMetricReader", "increment", "name", "distribution", "value", "data", "set", "TRACE_PROCESSOR", "gauge", "tags", "log", "options", "getTags", "counter", "flush", "close", "Object", "entries", "key", "obj"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
+
|
|
3
|
+
// src/extensions/otel/traces-browser.ts
|
|
4
|
+
import { ROOT_CONTEXT, SpanStatusCode, context as otelContext, propagation, trace } from "@opentelemetry/api";
|
|
5
|
+
import { getWebAutoInstrumentations } from "@opentelemetry/auto-instrumentations-web";
|
|
6
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
7
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
8
|
+
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
9
|
+
import { AlwaysOnSampler, BatchSpanProcessor, ParentBasedSampler, TraceIdRatioBasedSampler } from "@opentelemetry/sdk-trace-base";
|
|
10
|
+
import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
|
|
11
|
+
import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
12
|
+
import { log as log2 } from "@dxos/log";
|
|
13
|
+
import { TRACE_ALL_KEY, TRACE_PROCESSOR } from "@dxos/tracing";
|
|
14
|
+
|
|
15
|
+
// src/extensions/otel/span-processors.ts
|
|
16
|
+
import { log } from "@dxos/log";
|
|
17
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/span-processors.ts";
|
|
18
|
+
var TagInjectorSpanProcessor = class {
|
|
19
|
+
_getTags;
|
|
20
|
+
constructor(_getTags) {
|
|
21
|
+
this._getTags = _getTags;
|
|
22
|
+
}
|
|
23
|
+
onStart(span, _parentContext) {
|
|
24
|
+
let tags;
|
|
25
|
+
try {
|
|
26
|
+
tags = this._getTags();
|
|
27
|
+
} catch (err) {
|
|
28
|
+
log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 28, S: this });
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
for (const [key, value] of Object.entries(tags)) {
|
|
32
|
+
span.setAttribute(key, value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
onEnd(_span) {
|
|
36
|
+
}
|
|
37
|
+
async shutdown() {
|
|
38
|
+
}
|
|
39
|
+
async forceFlush() {
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// src/extensions/otel/traces-browser.ts
|
|
44
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/traces-browser.ts";
|
|
45
|
+
var OtelTraces = class {
|
|
46
|
+
options;
|
|
47
|
+
_tracer;
|
|
48
|
+
_tracerProvider;
|
|
49
|
+
constructor(options) {
|
|
50
|
+
this.options = options;
|
|
51
|
+
propagation.setGlobalPropagator(new W3CTraceContextPropagator());
|
|
52
|
+
const forceTraceAll = typeof localStorage !== "undefined" && localStorage.getItem(TRACE_ALL_KEY) === "true";
|
|
53
|
+
this._tracerProvider = new WebTracerProvider({
|
|
54
|
+
resource: this.options.resource,
|
|
55
|
+
sampler: new ParentBasedSampler({
|
|
56
|
+
root: forceTraceAll ? new AlwaysOnSampler() : new TraceIdRatioBasedSampler(0.3)
|
|
57
|
+
}),
|
|
58
|
+
spanProcessors: [
|
|
59
|
+
new TagInjectorSpanProcessor(this.options.getTags),
|
|
60
|
+
new BatchSpanProcessor(new OTLPTraceExporter({
|
|
61
|
+
url: this.options.endpoint + "/v1/traces",
|
|
62
|
+
headers: this.options.headers,
|
|
63
|
+
concurrencyLimit: 10
|
|
64
|
+
}), {
|
|
65
|
+
scheduledDelayMillis: 5e3
|
|
66
|
+
})
|
|
67
|
+
]
|
|
68
|
+
});
|
|
69
|
+
trace.setGlobalTracerProvider(this._tracerProvider);
|
|
70
|
+
this._tracer = trace.getTracer("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Forcibly flush the BatchSpanProcessor. Call before process exit / page unload
|
|
74
|
+
* to avoid losing queued spans (which manifests as "Missing Span" in SigNoz —
|
|
75
|
+
* their already-exported children reference a parent that never made it to OTLP).
|
|
76
|
+
*/
|
|
77
|
+
async flush() {
|
|
78
|
+
await this._tracerProvider.forceFlush();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Flush + shut down the tracer provider via `WebTracerProvider.shutdown()`,
|
|
82
|
+
* which forces a final export then terminates all span processors.
|
|
83
|
+
*
|
|
84
|
+
* Terminal and effectively one-shot: safe to call after `flush()`, but
|
|
85
|
+
* `flush()` MUST NOT be called after `close()` — shutdown stops further
|
|
86
|
+
* exporting, so subsequent `close()`/`flush()` calls resolve without
|
|
87
|
+
* emitting new spans.
|
|
88
|
+
*/
|
|
89
|
+
async close() {
|
|
90
|
+
await this._tracerProvider.shutdown();
|
|
91
|
+
}
|
|
92
|
+
start() {
|
|
93
|
+
log2("trace processor registered", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 61, S: this });
|
|
94
|
+
registerInstrumentations({
|
|
95
|
+
instrumentations: [
|
|
96
|
+
getWebAutoInstrumentations({
|
|
97
|
+
"@opentelemetry/instrumentation-fetch": {
|
|
98
|
+
enabled: false,
|
|
99
|
+
ignoreUrls: [
|
|
100
|
+
/api\.ipdata\.co/
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"@opentelemetry/instrumentation-document-load": {
|
|
104
|
+
enabled: false
|
|
105
|
+
},
|
|
106
|
+
"@opentelemetry/instrumentation-xml-http-request": {
|
|
107
|
+
enabled: false
|
|
108
|
+
},
|
|
109
|
+
"@opentelemetry/instrumentation-user-interaction": {
|
|
110
|
+
enabled: false
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
});
|
|
115
|
+
const tracer = this._tracer;
|
|
116
|
+
TRACE_PROCESSOR.tracingBackend = {
|
|
117
|
+
startSpan: (options) => {
|
|
118
|
+
log2("begin otel trace", {
|
|
119
|
+
options
|
|
120
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 86, S: this });
|
|
121
|
+
const parentCtx = options.parentContext ? propagation.extract(ROOT_CONTEXT, {
|
|
122
|
+
traceparent: options.parentContext.traceparent,
|
|
123
|
+
tracestate: options.parentContext.tracestate ?? ""
|
|
124
|
+
}) : otelContext.active();
|
|
125
|
+
const span = tracer.startSpan(options.name, options, parentCtx);
|
|
126
|
+
const sc = span.spanContext();
|
|
127
|
+
const spanContext = sc && sc.traceId && sc.spanId ? {
|
|
128
|
+
traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, "0")}`,
|
|
129
|
+
tracestate: sc.traceState?.serialize()
|
|
130
|
+
} : void 0;
|
|
131
|
+
return {
|
|
132
|
+
end: (endTime) => span.end(endTime),
|
|
133
|
+
setError: (err) => {
|
|
134
|
+
if (err instanceof Error) {
|
|
135
|
+
span.recordException(err);
|
|
136
|
+
}
|
|
137
|
+
span.setStatus({
|
|
138
|
+
code: SpanStatusCode.ERROR,
|
|
139
|
+
message: err instanceof Error ? err.message : String(err)
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
spanContext
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
export {
|
|
149
|
+
OtelTraces
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=traces-browser-6MRGAKFC.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/otel/traces-browser.ts", "../../../src/extensions/otel/span-processors.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n ROOT_CONTEXT,\n SpanStatusCode,\n type Tracer,\n context as otelContext,\n propagation,\n trace,\n} from '@opentelemetry/api';\nimport { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport {\n AlwaysOnSampler,\n BatchSpanProcessor,\n ParentBasedSampler,\n TraceIdRatioBasedSampler,\n} from '@opentelemetry/sdk-trace-base';\nimport { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { TRACE_ALL_KEY, type RemoteSpan, type StartSpanOptions, TRACE_PROCESSOR } from '@dxos/tracing';\n\nimport { type OtelOptions } from './otel';\nimport { TagInjectorSpanProcessor } from './span-processors';\n\nexport class OtelTraces {\n private _tracer: Tracer;\n private readonly _tracerProvider: WebTracerProvider;\n\n constructor(private readonly options: OtelOptions) {\n propagation.setGlobalPropagator(new W3CTraceContextPropagator());\n\n const forceTraceAll = typeof localStorage !== 'undefined' && localStorage.getItem(TRACE_ALL_KEY) === 'true';\n\n this._tracerProvider = new WebTracerProvider({\n resource: this.options.resource,\n sampler: new ParentBasedSampler({\n root: forceTraceAll ? new AlwaysOnSampler() : new TraceIdRatioBasedSampler(0.3),\n }),\n spanProcessors: [\n new TagInjectorSpanProcessor(this.options.getTags),\n new BatchSpanProcessor(\n new OTLPTraceExporter({\n url: this.options.endpoint + '/v1/traces',\n headers: this.options.headers,\n concurrencyLimit: 10,\n }),\n { scheduledDelayMillis: 5_000 },\n ),\n ],\n });\n\n trace.setGlobalTracerProvider(this._tracerProvider);\n\n this._tracer = trace.getTracer(\n 'dxos-observability',\n this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString(),\n );\n }\n\n /**\n * Forcibly flush the BatchSpanProcessor. Call before process exit / page unload\n * to avoid losing queued spans (which manifests as \"Missing Span\" in SigNoz —\n * their already-exported children reference a parent that never made it to OTLP).\n */\n public async flush(): Promise<void> {\n await this._tracerProvider.forceFlush();\n }\n\n /**\n * Flush + shut down the tracer provider via `WebTracerProvider.shutdown()`,\n * which forces a final export then terminates all span processors.\n *\n * Terminal and effectively one-shot: safe to call after `flush()`, but\n * `flush()` MUST NOT be called after `close()` — shutdown stops further\n * exporting, so subsequent `close()`/`flush()` calls resolve without\n * emitting new spans.\n */\n public async close(): Promise<void> {\n await this._tracerProvider.shutdown();\n }\n\n public start(): void {\n log('trace processor registered');\n\n registerInstrumentations({\n instrumentations: [\n getWebAutoInstrumentations({\n '@opentelemetry/instrumentation-fetch': { enabled: false, ignoreUrls: [/api\\.ipdata\\.co/] },\n '@opentelemetry/instrumentation-document-load': { enabled: false },\n '@opentelemetry/instrumentation-xml-http-request': { enabled: false },\n '@opentelemetry/instrumentation-user-interaction': { enabled: false },\n }),\n ],\n });\n\n const tracer = this._tracer;\n\n TRACE_PROCESSOR.tracingBackend = {\n startSpan: (options: StartSpanOptions): RemoteSpan => {\n log('begin otel trace', { options });\n const parentCtx = options.parentContext\n ? propagation.extract(ROOT_CONTEXT, {\n traceparent: options.parentContext.traceparent,\n tracestate: options.parentContext.tracestate ?? '',\n })\n : otelContext.active();\n\n const span = tracer.startSpan(options.name, options, parentCtx);\n\n const sc = span.spanContext();\n const spanContext =\n sc && sc.traceId && sc.spanId\n ? {\n traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, '0')}`,\n tracestate: sc.traceState?.serialize(),\n }\n : undefined;\n\n return {\n end: (endTime?: number) => span.end(endTime),\n setError: (err: unknown) => {\n if (err instanceof Error) {\n span.recordException(err);\n }\n span.setStatus({ code: SpanStatusCode.ERROR, message: err instanceof Error ? err.message : String(err) });\n },\n spanContext,\n };\n },\n };\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Context } from '@opentelemetry/api';\nimport { type ReadableSpan, type Span, type SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nimport { log } from '@dxos/log';\n\n/**\n * Injects dynamic tags as attributes on every span.\n *\n * This is an `onStart`-only processor; `onEnd`/`shutdown`/`forceFlush` are no-ops\n * because this processor never holds pending work (delegates export to downstream\n * processors like BatchSpanProcessor).\n *\n * Use for tags that are not known at provider construction (e.g. identity\n * resolved asynchronously after login). For values known at startup, prefer\n * putting them on the `Resource` — see `extension.ts`.\n *\n * Failures in the tag provider are swallowed so they can never break span\n * recording (the processor is best-effort and runs on the startSpan hot path).\n */\nexport class TagInjectorSpanProcessor implements SpanProcessor {\n constructor(private readonly _getTags: () => Record<string, string>) {}\n\n onStart(span: Span, _parentContext: Context): void {\n let tags: Record<string, string>;\n try {\n tags = this._getTags();\n } catch (err) {\n log.catch(err);\n return;\n }\n for (const [key, value] of Object.entries(tags)) {\n span.setAttribute(key, value);\n }\n }\n\n onEnd(_span: ReadableSpan): void {}\n\n async shutdown(): Promise<void> {}\n\n async forceFlush(): Promise<void> {}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ROOT_CONTEXT", "SpanStatusCode", "context", "otelContext", "propagation", "trace", "getWebAutoInstrumentations", "W3CTraceContextPropagator", "OTLPTraceExporter", "registerInstrumentations", "AlwaysOnSampler", "BatchSpanProcessor", "ParentBasedSampler", "TraceIdRatioBasedSampler", "WebTracerProvider", "ATTR_SERVICE_VERSION", "log", "TRACE_ALL_KEY", "TRACE_PROCESSOR", "log", "_getTags", "onStart", "span", "_parentContext", "tags", "catch", "err", "onEnd", "forceFlush", "__dxlog_file", "OtelTraces", "_tracer", "_tracerProvider", "propagation", "setGlobalPropagator", "forceTraceAll", "WebTracerProvider", "resource", "options", "sampler", "ParentBasedSampler", "spanProcessors", "BatchSpanProcessor", "url", "endpoint", "headers", "concurrencyLimit", "scheduledDelayMillis", "trace", "start", "registerInstrumentations", "instrumentations", "getWebAutoInstrumentations", "TRACE_PROCESSOR", "startSpan", "log", "traceparent", "parentContext", "tracestate", "active", "tracer", "name", "spanContext", "sc", "traceId", "spanId", "traceState", "serialize", "undefined", "end", "setError", "err", "Error", "span", "recordException", "setStatus", "message"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
__export
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=chunk-HSLMI22Q.mjs.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
|
|
3
|
+
// src/extensions/otel/otel.ts
|
|
4
|
+
import { DiagConsoleLogger, DiagLogLevel, diag } from "@opentelemetry/api";
|
|
5
|
+
var setDiagLogger = (level) => {
|
|
6
|
+
const logLevel = DiagLogLevel[level];
|
|
7
|
+
if (logLevel) {
|
|
8
|
+
diag.setLogger(new DiagConsoleLogger(), logLevel);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
setDiagLogger
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=chunk-SYPJQI4L.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/otel/otel.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';\nimport { type Resource } from '@opentelemetry/resources';\n\nexport type OtelOptions = {\n endpoint: string;\n headers: Record<string, string>;\n resource: Resource;\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"],
|
|
5
|
+
"mappings": ";;;AAIA,SAASA,mBAAmBC,cAAcC,YAAY;AAW/C,IAAMC,gBAAgB,CAACC,UAAAA;AAC5B,QAAMC,WAAWJ,aAAaG,KAAAA;AAC9B,MAAIC,UAAU;AACZH,SAAKI,UAAU,IAAIN,kBAAAA,GAAqBK,QAAAA;EAC1C;AACF;",
|
|
6
|
+
"names": ["DiagConsoleLogger", "DiagLogLevel", "diag", "setDiagLogger", "level", "logLevel", "setLogger"]
|
|
7
|
+
}
|