@dxos/observability 0.8.4-main.dedc0f3 → 0.8.4-main.dfabb4ec29
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/extensions/otel/logs.js +107 -0
- package/dist/types/src/extensions/otel/logs.js.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/metrics.d.ts +0 -1
- package/dist/types/src/extensions/otel/metrics.d.ts.map +1 -0
- package/dist/types/src/{otel → extensions/otel}/metrics.js +2 -11
- 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 +46 -66
- 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 +3 -20
- 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-LJO63BXO.mjs +0 -164
- package/dist/lib/browser/chunk-LJO63BXO.mjs.map +0 -7
- package/dist/lib/browser/chunk-MB7KKARJ.mjs +0 -1025
- package/dist/lib/browser/chunk-MB7KKARJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-VSEBD3XA.mjs +0 -161
- package/dist/lib/browser/chunk-VSEBD3XA.mjs.map +0 -7
- package/dist/lib/browser/observability-NZM3OOLO.mjs +0 -10
- package/dist/lib/browser/otel-UHLVSR24.mjs +0 -325
- package/dist/lib/browser/otel-UHLVSR24.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-GOWQOSY6.mjs +0 -229
- package/dist/lib/node-esm/chunk-GOWQOSY6.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/chunk-YLYRR73V.mjs +0 -1026
- package/dist/lib/node-esm/chunk-YLYRR73V.mjs.map +0 -7
- package/dist/lib/node-esm/observability-2CTGITMR.mjs +0 -11
- package/dist/lib/node-esm/observability-2CTGITMR.mjs.map +0 -7
- package/dist/lib/node-esm/otel-W6KWKVW5.mjs +0 -308
- package/dist/lib/node-esm/otel-W6KWKVW5.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 +0 -72
- 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 -49
- 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 -42
- 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 -100
- package/src/otel/traces-browser.ts +0 -59
- package/src/otel/traces.ts +0 -57
- 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-NZM3OOLO.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +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,116 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
setDiagLogger
|
|
4
|
+
} from "./chunk-SYPJQI4L.mjs";
|
|
5
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
6
|
+
|
|
7
|
+
// src/extensions/otel/metrics.ts
|
|
8
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
9
|
+
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
10
|
+
import { log } from "@dxos/log";
|
|
11
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
12
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/metrics.ts";
|
|
13
|
+
var EXPORT_INTERVAL = 60 * 1e3;
|
|
14
|
+
var OtelMetrics = class {
|
|
15
|
+
options;
|
|
16
|
+
_meterProvider;
|
|
17
|
+
_meter;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
this.options = options;
|
|
20
|
+
setDiagLogger(options.consoleDiagLogLevel);
|
|
21
|
+
const grafanaMetricReader = new PeriodicExportingMetricReader({
|
|
22
|
+
exporter: new OTLPMetricExporter({
|
|
23
|
+
url: this.options.endpoint + "/v1/metrics",
|
|
24
|
+
headers: this.options.headers
|
|
25
|
+
}),
|
|
26
|
+
exportIntervalMillis: EXPORT_INTERVAL
|
|
27
|
+
});
|
|
28
|
+
this._meterProvider = new MeterProvider({
|
|
29
|
+
resource: this.options.resource,
|
|
30
|
+
readers: [
|
|
31
|
+
grafanaMetricReader
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
this._meter = this._meterProvider.getMeter("dxos-observability");
|
|
35
|
+
const metrics = {
|
|
36
|
+
// TODO: update metrics names and remove prefix?
|
|
37
|
+
increment: (name, value, data) => {
|
|
38
|
+
this.increment(name, value, convertTags(data));
|
|
39
|
+
},
|
|
40
|
+
distribution: (name, value, data) => {
|
|
41
|
+
this.distribution(name, value, convertTags(data));
|
|
42
|
+
},
|
|
43
|
+
set: (name, value, data) => {
|
|
44
|
+
},
|
|
45
|
+
gauge: (name, value, data) => {
|
|
46
|
+
this.gauge(name, value, convertTags(data));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
TRACE_PROCESSOR.remoteMetrics.registerProcessor(metrics);
|
|
50
|
+
}
|
|
51
|
+
gauge(name, value, tags) {
|
|
52
|
+
const gauge = this._meter.createGauge(name);
|
|
53
|
+
log("otel gauge", {
|
|
54
|
+
name,
|
|
55
|
+
value,
|
|
56
|
+
tags: {
|
|
57
|
+
...this.options.getTags(),
|
|
58
|
+
...tags
|
|
59
|
+
}
|
|
60
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 52, S: this });
|
|
61
|
+
gauge.record(value, {
|
|
62
|
+
...this.options.getTags(),
|
|
63
|
+
...tags
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
increment(name, value, tags) {
|
|
67
|
+
const counter = this._meter.createCounter(name);
|
|
68
|
+
log("otel counter", {
|
|
69
|
+
name,
|
|
70
|
+
value,
|
|
71
|
+
tags: {
|
|
72
|
+
...this.options.getTags(),
|
|
73
|
+
...tags
|
|
74
|
+
}
|
|
75
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 67, S: this });
|
|
76
|
+
counter.add(value ?? 1, {
|
|
77
|
+
...this.options.getTags(),
|
|
78
|
+
...tags
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
distribution(name, value, tags) {
|
|
82
|
+
const distribution = this._meter.createHistogram(name);
|
|
83
|
+
log("otel distribution", {
|
|
84
|
+
name,
|
|
85
|
+
value,
|
|
86
|
+
tags: {
|
|
87
|
+
...this.options.getTags(),
|
|
88
|
+
...tags
|
|
89
|
+
}
|
|
90
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 82, S: this });
|
|
91
|
+
distribution.record(value, {
|
|
92
|
+
...this.options.getTags(),
|
|
93
|
+
...tags
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
flush() {
|
|
97
|
+
return this._meterProvider.forceFlush();
|
|
98
|
+
}
|
|
99
|
+
close() {
|
|
100
|
+
return this._meterProvider.shutdown();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
var convertTags = (data) => {
|
|
104
|
+
if (data && data.tags) {
|
|
105
|
+
return Object.entries(data.tags).reduce((obj, [key, value]) => {
|
|
106
|
+
obj[key] = value;
|
|
107
|
+
return obj;
|
|
108
|
+
}, {});
|
|
109
|
+
} else {
|
|
110
|
+
return {};
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
export {
|
|
114
|
+
OtelMetrics
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=metrics-C5IKPAWD.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,122 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import "./chunk-HSLMI22Q.mjs";
|
|
3
|
+
|
|
4
|
+
// src/extensions/otel/traces.ts
|
|
5
|
+
import { ROOT_CONTEXT, SpanStatusCode, context as otelContext, propagation, trace } from "@opentelemetry/api";
|
|
6
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
7
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
8
|
+
import { BasicTracerProvider, BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
9
|
+
import { ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
10
|
+
import { log as log2 } from "@dxos/log";
|
|
11
|
+
import { TRACE_PROCESSOR } from "@dxos/tracing";
|
|
12
|
+
|
|
13
|
+
// src/extensions/otel/span-processors.ts
|
|
14
|
+
import { log } from "@dxos/log";
|
|
15
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/span-processors.ts";
|
|
16
|
+
var TagInjectorSpanProcessor = class {
|
|
17
|
+
_getTags;
|
|
18
|
+
constructor(_getTags) {
|
|
19
|
+
this._getTags = _getTags;
|
|
20
|
+
}
|
|
21
|
+
onStart(span, _parentContext) {
|
|
22
|
+
let tags;
|
|
23
|
+
try {
|
|
24
|
+
tags = this._getTags();
|
|
25
|
+
} catch (err) {
|
|
26
|
+
log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 28, S: this });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
for (const [key, value] of Object.entries(tags)) {
|
|
30
|
+
span.setAttribute(key, value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
onEnd(_span) {
|
|
34
|
+
}
|
|
35
|
+
async shutdown() {
|
|
36
|
+
}
|
|
37
|
+
async forceFlush() {
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// src/extensions/otel/traces.ts
|
|
42
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/sdk/observability/src/extensions/otel/traces.ts";
|
|
43
|
+
var OtelTraces = class {
|
|
44
|
+
options;
|
|
45
|
+
_tracer;
|
|
46
|
+
_tracerProvider;
|
|
47
|
+
constructor(options) {
|
|
48
|
+
this.options = options;
|
|
49
|
+
propagation.setGlobalPropagator(new W3CTraceContextPropagator());
|
|
50
|
+
this._tracerProvider = new BasicTracerProvider({
|
|
51
|
+
resource: this.options.resource,
|
|
52
|
+
spanProcessors: [
|
|
53
|
+
new TagInjectorSpanProcessor(this.options.getTags),
|
|
54
|
+
new BatchSpanProcessor(new OTLPTraceExporter({
|
|
55
|
+
url: this.options.endpoint + "/v1/traces",
|
|
56
|
+
headers: this.options.headers,
|
|
57
|
+
concurrencyLimit: 10
|
|
58
|
+
}))
|
|
59
|
+
]
|
|
60
|
+
});
|
|
61
|
+
trace.setGlobalTracerProvider(this._tracerProvider);
|
|
62
|
+
this._tracer = trace.getTracer("dxos-observability", this.options.resource.attributes[ATTR_SERVICE_VERSION]?.toString());
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Forcibly flush the BatchSpanProcessor. Call before process exit to avoid
|
|
66
|
+
* losing queued spans (which manifests as "Missing Span" in SigNoz — their
|
|
67
|
+
* already-exported children reference a parent that never made it to OTLP).
|
|
68
|
+
*/
|
|
69
|
+
async flush() {
|
|
70
|
+
await this._tracerProvider.forceFlush();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Flush + shut down the tracer provider via `BasicTracerProvider.shutdown()`,
|
|
74
|
+
* which forces a final export then terminates all span processors.
|
|
75
|
+
*
|
|
76
|
+
* Terminal and effectively one-shot: safe to call after `flush()`, but
|
|
77
|
+
* `flush()` MUST NOT be called after `close()` — shutdown stops further
|
|
78
|
+
* exporting, so subsequent `close()`/`flush()` calls resolve without
|
|
79
|
+
* emitting new spans.
|
|
80
|
+
*/
|
|
81
|
+
async close() {
|
|
82
|
+
await this._tracerProvider.shutdown();
|
|
83
|
+
}
|
|
84
|
+
start() {
|
|
85
|
+
log2("trace processor registered", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 52, S: this });
|
|
86
|
+
const tracer = this._tracer;
|
|
87
|
+
TRACE_PROCESSOR.tracingBackend = {
|
|
88
|
+
startSpan: (options) => {
|
|
89
|
+
log2("begin otel trace", {
|
|
90
|
+
options
|
|
91
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 56, S: this });
|
|
92
|
+
const parentCtx = options.parentContext ? propagation.extract(ROOT_CONTEXT, {
|
|
93
|
+
traceparent: options.parentContext.traceparent,
|
|
94
|
+
tracestate: options.parentContext.tracestate ?? ""
|
|
95
|
+
}) : otelContext.active();
|
|
96
|
+
const span = tracer.startSpan(options.name, options, parentCtx);
|
|
97
|
+
const sc = span.spanContext();
|
|
98
|
+
const spanContext = sc && sc.traceId && sc.spanId ? {
|
|
99
|
+
traceparent: `00-${sc.traceId}-${sc.spanId}-${(sc.traceFlags ?? 0).toString(16).padStart(2, "0")}`,
|
|
100
|
+
tracestate: sc.traceState?.serialize()
|
|
101
|
+
} : void 0;
|
|
102
|
+
return {
|
|
103
|
+
end: (endTime) => span.end(endTime),
|
|
104
|
+
setError: (err) => {
|
|
105
|
+
if (err instanceof Error) {
|
|
106
|
+
span.recordException(err);
|
|
107
|
+
}
|
|
108
|
+
span.setStatus({
|
|
109
|
+
code: SpanStatusCode.ERROR,
|
|
110
|
+
message: err instanceof Error ? err.message : String(err)
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
spanContext
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
export {
|
|
120
|
+
OtelTraces
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=traces-5LKHMVVG.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/extensions/otel/traces.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 { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { BasicTracerProvider, BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';\n\nimport { log } from '@dxos/log';\nimport { 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: BasicTracerProvider;\n\n constructor(private readonly options: OtelOptions) {\n propagation.setGlobalPropagator(new W3CTraceContextPropagator());\n\n this._tracerProvider = new BasicTracerProvider({\n resource: this.options.resource,\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 ),\n ],\n });\n\n trace.setGlobalTracerProvider(this._tracerProvider);\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 to avoid\n * losing queued spans (which manifests as \"Missing Span\" in SigNoz — their\n * 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 `BasicTracerProvider.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 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": ";;;;AAIA,SACEA,cACAC,gBAEAC,WAAWC,aACXC,aACAC,aACK;AACP,SAASC,iCAAiC;AAC1C,SAASC,yBAAyB;AAClC,SAASC,qBAAqBC,0BAA0B;AACxD,SAASC,4BAA4B;AAErC,SAASC,OAAAA,YAAW;AACpB,SAAiDC,uBAAuB;;;ACXxE,SAASC,WAAW;AAEpB,IAAA,eAAA;AAeE,IAA6BC,2BAA7B,MAAqE;;EAAC,YAAA,UAAA;AAEtEC,SAAQC,WAAYC;;UAEd,MAAA,gBAAA;QACFC;AACF,QAAE;AACAL,aAAIM,KAAMC,SAAAA;aACV,KAAA;AACF,UAAA,MAAA,KAAA,QAAA,EAAA,YAAA,YAAA,GAAA,cAAA,GAAA,IAAA,GAAA,KAAA,CAAA;AACA;;AAEA,eAAA,CAAA,KAAA,KAAA,KAAA,OAAA,QAAA,IAAA,GAAA;AACF,WAAA,aAAA,KAAA,KAAA;IAEAC;EAEA;EAEA,MAAMC,OAAAA;EAAAA;EACR,MAAA,WAAA;EAAA;;;;;;ADrBA,IAAAC,gBAAaC;AACHC,IAAgB,aAAhBA,MAAgB;EACPC;EAEjB;;cACEC,SAAYC;AAEZ,SAAKF,UAAAA;gBACHG,oBAAuBA,IAAQ,0BAAA,CAAA;SAC/BC,kBAAgB,IAAA,oBAAA;gBACVC,KAAAA,QAAAA;sBACAC;YAEAC,yBAAkBC,KAAW,QAAA,OAAA;YAC7BC,mBAAcC,IAAQD,kBAAO;UAC7BE,KAAAA,KAAAA,QAAkB,WAAA;UACpB,SAAA,KAAA,QAAA;UAEH,kBAAA;QACH,CAAA,CAAA;MAEAC;IACA,CAAA;AAIF,UAAA,wBAAA,KAAA,eAAA;AAEA,SAAA,UAAA,MAAA,UAAA,sBAAA,KAAA,QAAA,SAAA,WAAA,oBAAA,GAAA,SAAA,CAAA;;;;;;;EAOA,MAAA,QAAA;AAEA,UAAA,KAAA,gBAAA,WAAA;;;;;;;;;;;EAWA,MAAA,QAAA;AAEOC,UAAc,KAAA,gBAAA,SAAA;;UAGnB;AAEAC,IAAAA,KAAAA,8BAAiC,QAAA,EAAA,YAAA,YAAA,GAAAjB,eAAA,GAAA,IAAA,GAAA,KAAA,CAAA;UAC/BkB,SAAW,KAACL;oBACN,iBAAoB;iBAAEA,CAAAA,YAAAA;AAAQ,QAAAM,KAAA,oBAAA;UAClC;yBAEMC,YAAqBC,GAAAA,eAAcD,GAAAA,IAAAA,GAAAA,KAAW,CAAA;cAC9CE,YAAYT,QAAQQ,gBAAcC,YAAc,QAAA,cAAA;UAClD,aACYC,QAAM,cAAA;UAEtB,YAAaC,QAAON,cAAkBO,cAAMZ;QAE5C,CAAA,IAAA,YAAgBa,OAAAA;AAChB,cAAMA,OAAAA,OACJC,UAASC,QAAO,MAAOC,SACnB,SAAA;cACET,KAAAA,KAAAA,YAAsBQ;cACtBN,cAAeQ,MAAAA,GAAU,WAAEC,GAAAA,SAAAA;UAE7BC,aAAAA,MAAAA,GAAAA,OAAAA,IAAAA,GAAAA,MAAAA,KAAAA,GAAAA,cAAAA,GAAAA,SAAAA,EAAAA,EAAAA,SAAAA,GAAAA,GAAAA,CAAAA;UAEN,YAAO,GAAA,YAAA,UAAA;YACLC;eACAC;eACE,CAAA,YAAIC,KAAAA,IAAeC,OAAO;oBACxBC,CAAAA,QAAKC;AACP,gBAAA,eAAA,OAAA;AACAD,mBAAKE,gBAAU,GAAA;;iBAA8BC,UAASL;cAAiD,MAAA,eAAA;cACzG,SAAA,eAAA,QAAA,IAAA,UAAA,OAAA,GAAA;YACAT,CAAAA;UACF;UACF;QACF;MACF;IACF;;;",
|
|
6
|
+
"names": ["ROOT_CONTEXT", "SpanStatusCode", "context", "otelContext", "propagation", "trace", "W3CTraceContextPropagator", "OTLPTraceExporter", "BasicTracerProvider", "BatchSpanProcessor", "ATTR_SERVICE_VERSION", "log", "TRACE_PROCESSOR", "log", "_getTags", "onStart", "span", "_parentContext", "tags", "catch", "err", "onEnd", "forceFlush", "__dxlog_file", "OtelTraces", "_tracer", "_tracerProvider", "propagation", "setGlobalPropagator", "resource", "spanProcessors", "TagInjectorSpanProcessor", "BatchSpanProcessor", "url", "endpoint", "headers", "options", "concurrencyLimit", "trace", "start", "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
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"TELEMETRY_API_KEY": "B00QG6PtJJrJ0VVFe0H5a6bcUUShKyZM",
|
|
2
|
+
"POSTHOG_API_KEY": null,
|
|
4
3
|
"IPDATA_API_KEY": "73dfdecdf979c18f07d50cf841bbdd9e589f237256326ac8cca23786",
|
|
5
|
-
"OTEL_ENDPOINT": "
|
|
6
|
-
"
|
|
4
|
+
"OTEL_ENDPOINT": "/api/otel",
|
|
5
|
+
"OTEL_HEADERS": null
|
|
7
6
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/extensions/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { type Config } from '@dxos/config';
|
|
3
|
+
import { LogLevel } from '@dxos/log';
|
|
4
|
+
import { type Extension } from '../../observability-extension';
|
|
5
|
+
export type ExtensionsOptions = {
|
|
6
|
+
/** For the OTEL, the name of the entity for which signals (metrics or trace) are collected. */
|
|
7
|
+
serviceName: string;
|
|
8
|
+
/** For the OTEL, the version of the entity for which signals (metrics or trace) are collected. */
|
|
9
|
+
serviceVersion: string;
|
|
10
|
+
/** For the OTEL, the environment of the entity for which signals (metrics or trace) are collected. */
|
|
11
|
+
environment: string;
|
|
12
|
+
config: Config;
|
|
13
|
+
endpoint?: string;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
logs?: boolean;
|
|
16
|
+
/** Minimum log level to export. Defaults to INFO (i.e. info, warn, error). */
|
|
17
|
+
logLevel?: LogLevel;
|
|
18
|
+
metrics?: boolean;
|
|
19
|
+
traces?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/** Create an OTEL-backed observability extension for logs, metrics, and/or traces. */
|
|
22
|
+
export declare const extensions: (options: ExtensionsOptions) => Effect.Effect<Extension>;
|
|
23
|
+
//# sourceMappingURL=extension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/extension.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAKxC,OAAO,EAAE,KAAK,MAAM,EAAuB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAO,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,+BAA+B,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+FAA+F;IAC/F,WAAW,EAAE,MAAM,CAAC;IACpB,kGAAkG;IAClG,cAAc,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,UAAU,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CA6K9E,CAAC"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources';
|
|
5
|
+
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import * as Match from 'effect/Match';
|
|
8
|
+
import * as Option from 'effect/Option';
|
|
9
|
+
import * as Ref from 'effect/Ref';
|
|
10
|
+
import { resolveTelemetryTag } from '@dxos/config';
|
|
11
|
+
import { LogLevel, log } from '@dxos/log';
|
|
12
|
+
import { isNode, isNonNullable } from '@dxos/util';
|
|
13
|
+
import buildSecrets from '../../cli-observability-secrets.json';
|
|
14
|
+
import { isObservabilityDisabled, storeObservabilityDisabled } from '../../storage';
|
|
15
|
+
import { stubExtension } from '../stub';
|
|
16
|
+
/** Create an OTEL-backed observability extension for logs, metrics, and/or traces. */
|
|
17
|
+
export const extensions = Effect.fn(function* ({ serviceName, serviceVersion, environment, config, endpoint: _endpoint, headers: _headers,
|
|
18
|
+
// TODO(wittjosiah): Logging integration.
|
|
19
|
+
// - logger should run even if observability is disabled
|
|
20
|
+
// - logs should be cached locally in a circular buffer
|
|
21
|
+
// - logs should be flushed to the server if user opts to include them in a bug report
|
|
22
|
+
logs: logsEnabled = false, logLevel = LogLevel.INFO, metrics: metricsEnabled = false, traces: tracesEnabled = false, }) {
|
|
23
|
+
const { OtelLogs } = yield* Effect.promise(() => import('./logs'));
|
|
24
|
+
const { OtelMetrics } = yield* Effect.promise(() => import('./metrics'));
|
|
25
|
+
const { OtelTraces } = yield* Effect.promise(() => import('./traces'));
|
|
26
|
+
const cachedDisabled = yield* Effect.promise(() => isObservabilityDisabled(serviceName));
|
|
27
|
+
const disabled = cachedDisabled || isObservabilityDisabledSync(serviceName);
|
|
28
|
+
const enabledRef = yield* Ref.make(!disabled);
|
|
29
|
+
const tags = new Map();
|
|
30
|
+
const endpoint = isNode()
|
|
31
|
+
? (process.env.DX_OTEL_ENDPOINT ?? _endpoint ?? buildSecrets.OTEL_ENDPOINT)
|
|
32
|
+
: config.values.runtime?.app?.env?.DX_OTEL_ENDPOINT;
|
|
33
|
+
const headers = _headers ??
|
|
34
|
+
Match.value(isNode()).pipe(Match.when(true, () => Option.fromNullable(process.env.DX_OTEL_HEADERS ?? buildSecrets.OTEL_HEADERS)), Match.when(false, () => Option.fromNullable(config.values.runtime?.app?.env?.DX_OTEL_HEADERS)), Match.exhaustive, Option.map((raw) => parseHeaders(raw)), Option.getOrElse(() => undefined));
|
|
35
|
+
if (!endpoint || !headers) {
|
|
36
|
+
log.info('Missing OTEL_ENDPOINT or OTEL_HEADERS');
|
|
37
|
+
return stubExtension;
|
|
38
|
+
}
|
|
39
|
+
// Matches edge's `ctx.tag` span attribute (stamped by the edge log middleware
|
|
40
|
+
// when it reads the `X-DXOS-Client-Tag` header, see
|
|
41
|
+
// /edge/packages/services/edge/src/log-middleware.ts).
|
|
42
|
+
//
|
|
43
|
+
// Stamped in TWO places:
|
|
44
|
+
// 1. Resource attribute — so logs and metrics emitted from this extension
|
|
45
|
+
// also carry it, and for zero per-span cost.
|
|
46
|
+
// 2. Span attribute via `tags` — because edge puts `ctx.tag` in the span-
|
|
47
|
+
// attribute context (not resource), and SigNoz indexes the two contexts
|
|
48
|
+
// separately. Stamping it on span attributes here keeps a single
|
|
49
|
+
// `ctx.tag = <value>` filter matching spans from both tiers in SigNoz
|
|
50
|
+
// without requiring qualified `attribute.ctx.tag`/`resource.ctx.tag` syntax.
|
|
51
|
+
const clientTag = resolveTelemetryTag(config);
|
|
52
|
+
if (clientTag) {
|
|
53
|
+
tags.set('ctx.tag', clientTag);
|
|
54
|
+
}
|
|
55
|
+
const resource = defaultResource().merge(resourceFromAttributes({
|
|
56
|
+
[ATTR_SERVICE_NAME]: serviceName,
|
|
57
|
+
[ATTR_SERVICE_VERSION]: serviceVersion,
|
|
58
|
+
'session.id': crypto.randomUUID(),
|
|
59
|
+
'deployment.environment': environment,
|
|
60
|
+
'dxos.process.type': detectProcessType(),
|
|
61
|
+
...(clientTag ? { 'ctx.tag': clientTag } : {}),
|
|
62
|
+
}));
|
|
63
|
+
const logs = logsEnabled
|
|
64
|
+
? new OtelLogs({
|
|
65
|
+
endpoint,
|
|
66
|
+
headers,
|
|
67
|
+
resource,
|
|
68
|
+
getTags: () => Object.fromEntries(tags),
|
|
69
|
+
logLevel,
|
|
70
|
+
})
|
|
71
|
+
: undefined;
|
|
72
|
+
const metrics = metricsEnabled
|
|
73
|
+
? new OtelMetrics({
|
|
74
|
+
endpoint,
|
|
75
|
+
headers,
|
|
76
|
+
resource,
|
|
77
|
+
getTags: () => Object.fromEntries(tags),
|
|
78
|
+
})
|
|
79
|
+
: undefined;
|
|
80
|
+
const traces = tracesEnabled
|
|
81
|
+
? new OtelTraces({
|
|
82
|
+
endpoint,
|
|
83
|
+
headers,
|
|
84
|
+
resource,
|
|
85
|
+
getTags: () => Object.fromEntries(tags),
|
|
86
|
+
})
|
|
87
|
+
: undefined;
|
|
88
|
+
const extension = {
|
|
89
|
+
initialize: () => Effect.sync(() => {
|
|
90
|
+
if (disabled) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (logs) {
|
|
94
|
+
log.runtimeConfig.processors.push(logs.logProcessor);
|
|
95
|
+
}
|
|
96
|
+
if (traces) {
|
|
97
|
+
traces.start();
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
enable: Effect.fn(function* () {
|
|
101
|
+
yield* Effect.promise(() => storeObservabilityDisabled(serviceName, false));
|
|
102
|
+
yield* Ref.update(enabledRef, () => true);
|
|
103
|
+
}),
|
|
104
|
+
disable: Effect.fn(function* () {
|
|
105
|
+
yield* Effect.promise(() => storeObservabilityDisabled(serviceName, true));
|
|
106
|
+
yield* Ref.update(enabledRef, () => false);
|
|
107
|
+
}),
|
|
108
|
+
close: () => Effect.promise(async () => {
|
|
109
|
+
// Run logs/metrics close concurrently and swallow their failures so the
|
|
110
|
+
// tracer provider shutdown below ALWAYS runs. Without this, a rejection
|
|
111
|
+
// from logs or metrics would drop the tracer provider's BatchSpanProcessor
|
|
112
|
+
// queue on process exit, manifesting as "Missing Span" in SigNoz for any
|
|
113
|
+
// already-exported children.
|
|
114
|
+
const results = await Promise.allSettled([logs?.close(), metrics?.close()]);
|
|
115
|
+
for (const result of results) {
|
|
116
|
+
if (result.status === 'rejected') {
|
|
117
|
+
log.catch(result.reason);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Critical: shut down the tracer provider so BatchSpanProcessor drains its
|
|
121
|
+
// queue. Otherwise spans enqueued in the last 5s (close/teardown spans)
|
|
122
|
+
// are dropped on process exit.
|
|
123
|
+
await traces?.close();
|
|
124
|
+
}),
|
|
125
|
+
flush: () => Effect.promise(async () => {
|
|
126
|
+
const results = await Promise.allSettled([logs?.flush(), metrics?.flush()]);
|
|
127
|
+
for (const result of results) {
|
|
128
|
+
if (result.status === 'rejected') {
|
|
129
|
+
log.catch(result.reason);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
await traces?.flush();
|
|
133
|
+
}),
|
|
134
|
+
setTags: (incomingTags) => {
|
|
135
|
+
for (const [key, value] of Object.entries(incomingTags)) {
|
|
136
|
+
tags.set(key, value);
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
get enabled() {
|
|
140
|
+
return Ref.get(enabledRef).pipe(Effect.runSync);
|
|
141
|
+
},
|
|
142
|
+
apis: [
|
|
143
|
+
{ kind: 'logs', isAvailable: () => Effect.succeed(!!logs) },
|
|
144
|
+
metrics
|
|
145
|
+
? {
|
|
146
|
+
kind: 'metrics',
|
|
147
|
+
isAvailable: () => Effect.succeed(true),
|
|
148
|
+
gauge: (name, value, tags) => metrics.gauge(name, value, tags),
|
|
149
|
+
increment: (name, value, tags) => metrics.increment(name, value, tags),
|
|
150
|
+
distribution: (name, value, tags) => metrics.distribution(name, value, tags),
|
|
151
|
+
}
|
|
152
|
+
: undefined,
|
|
153
|
+
traces ? { kind: 'traces', isAvailable: () => Effect.succeed(true) } : undefined,
|
|
154
|
+
].filter(isNonNullable),
|
|
155
|
+
};
|
|
156
|
+
return extension;
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* Synchronous best-effort check for observability opt-out.
|
|
160
|
+
* Prevents telemetry from being emitted before the async storage check completes.
|
|
161
|
+
*/
|
|
162
|
+
const isObservabilityDisabledSync = (serviceName) => {
|
|
163
|
+
if (isNode()) {
|
|
164
|
+
return process.env.DX_DISABLE_OBSERVABILITY === 'true';
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
if (typeof localStorage !== 'undefined') {
|
|
168
|
+
return localStorage.getItem(`${serviceName}/observability-disabled`) === 'true';
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// localStorage not available (e.g., in workers).
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
};
|
|
176
|
+
/** Best-effort detection of the JavaScript execution context type. */
|
|
177
|
+
const detectProcessType = () => {
|
|
178
|
+
if (isNode()) {
|
|
179
|
+
return 'node';
|
|
180
|
+
}
|
|
181
|
+
if (typeof window !== 'undefined') {
|
|
182
|
+
return 'browser';
|
|
183
|
+
}
|
|
184
|
+
if (typeof globalThis.ServiceWorkerGlobalScope !== 'undefined') {
|
|
185
|
+
return 'service-worker';
|
|
186
|
+
}
|
|
187
|
+
if (typeof globalThis.SharedWorkerGlobalScope !== 'undefined') {
|
|
188
|
+
return 'shared-worker';
|
|
189
|
+
}
|
|
190
|
+
return 'dedicated-worker';
|
|
191
|
+
};
|
|
192
|
+
const parseHeaders = (unparsedHeaders) => {
|
|
193
|
+
return unparsedHeaders.split(';').reduce((acc, header) => {
|
|
194
|
+
const [key, ...rest] = header.split(':');
|
|
195
|
+
if (key && rest.length > 0) {
|
|
196
|
+
acc[key.trim().toLowerCase()] = rest.join(':').trim();
|
|
197
|
+
}
|
|
198
|
+
return acc;
|
|
199
|
+
}, {});
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/extensions/otel/index.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,cAAc,aAAa,CAAC"}
|
|
@@ -3,10 +3,11 @@ import { type OtelOptions } from './otel';
|
|
|
3
3
|
export type OtelLogOptions = OtelOptions & {
|
|
4
4
|
logLevel: LogLevel;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Include logs forwarded from the shared worker via LoggingService.
|
|
7
|
+
*
|
|
8
|
+
* @deprecated
|
|
8
9
|
*/
|
|
9
|
-
includeSharedWorkerLogs
|
|
10
|
+
includeSharedWorkerLogs?: boolean;
|
|
10
11
|
};
|
|
11
12
|
export declare class OtelLogs {
|
|
12
13
|
private readonly options;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../../../src/extensions/otel/logs.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,QAAQ,EACR,KAAK,YAAY,EAGlB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAIzD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,qBAAa,QAAQ;IAEP,OAAO,CAAC,QAAQ,CAAC,OAAO;IADpC,OAAO,CAAC,eAAe,CAAiB;IACxC,YAA6B,OAAO,EAAE,cAAc,EAWnD;IAED,SAAgB,YAAY,EAAE,YAAY,CAyBxC;IAEF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;CACF"}
|