@superblocksteam/telemetry 2.0.171 → 2.0.173-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/console-logging.js +2 -7
- package/dist/browser/console-logging.js.map +1 -1
- package/dist/browser/early-console-buffer.js +12 -14
- package/dist/browser/early-console-buffer.js.map +1 -1
- package/dist/browser/index.js +12 -41
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/init.d.ts +1 -1
- package/dist/browser/init.d.ts.map +1 -1
- package/dist/browser/init.js +42 -52
- package/dist/browser/init.js.map +1 -1
- package/dist/browser/instrumentations.js +11 -15
- package/dist/browser/instrumentations.js.map +1 -1
- package/dist/browser/logs.d.ts +1 -1
- package/dist/browser/logs.d.ts.map +1 -1
- package/dist/browser/logs.js +11 -18
- package/dist/browser/logs.js.map +1 -1
- package/dist/browser/metrics.js +9 -12
- package/dist/browser/metrics.js.map +1 -1
- package/dist/browser/resilient-exporter.d.ts +1 -1
- package/dist/browser/resilient-exporter.d.ts.map +1 -1
- package/dist/browser/resilient-exporter.js +8 -12
- package/dist/browser/resilient-exporter.js.map +1 -1
- package/dist/browser/sanitizer.js +2 -6
- package/dist/browser/sanitizer.js.map +1 -1
- package/dist/browser/traced-socket.js +14 -18
- package/dist/browser/traced-socket.js.map +1 -1
- package/dist/common/contracts/tier2-traces.js +33 -44
- package/dist/common/contracts/tier2-traces.js.map +1 -1
- package/dist/common/deployment-type.js +5 -8
- package/dist/common/deployment-type.js.map +1 -1
- package/dist/common/guardrails.js +26 -38
- package/dist/common/guardrails.js.map +1 -1
- package/dist/common/index.js +8 -24
- package/dist/common/index.js.map +1 -1
- package/dist/common/log-sanitizer.js +37 -55
- package/dist/common/log-sanitizer.js.map +1 -1
- package/dist/common/policy-evaluator.d.ts +1 -1
- package/dist/common/policy-evaluator.d.ts.map +1 -1
- package/dist/common/policy-evaluator.js +5 -9
- package/dist/common/policy-evaluator.js.map +1 -1
- package/dist/common/resource.js +18 -25
- package/dist/common/resource.js.map +1 -1
- package/dist/common/tier-hints.js +12 -22
- package/dist/common/tier-hints.js.map +1 -1
- package/dist/common/trace-sanitizer.js +6 -10
- package/dist/common/trace-sanitizer.js.map +1 -1
- package/dist/common/traced-socket-types.js +1 -2
- package/dist/common/traced-socket-types.js.map +1 -1
- package/dist/index.js +6 -38
- package/dist/index.js.map +1 -1
- package/dist/lint/forbidden-attributes.js +19 -24
- package/dist/lint/forbidden-attributes.js.map +1 -1
- package/dist/lint/index.js +1 -8
- package/dist/lint/index.js.map +1 -1
- package/dist/llmobs/index.js +2 -9
- package/dist/llmobs/index.js.map +1 -1
- package/dist/llmobs/tier1-exporter.js +6 -12
- package/dist/llmobs/tier1-exporter.js.map +1 -1
- package/dist/llmobs/tier2-summarizer.js +1 -5
- package/dist/llmobs/tier2-summarizer.js.map +1 -1
- package/dist/node/dynamic-attribute-processor.js +2 -7
- package/dist/node/dynamic-attribute-processor.js.map +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts.map +1 -1
- package/dist/node/exporters/resilient-exporter.js +8 -12
- package/dist/node/exporters/resilient-exporter.js.map +1 -1
- package/dist/node/index.js +7 -26
- package/dist/node/index.js.map +1 -1
- package/dist/node/init.d.ts +3 -3
- package/dist/node/init.d.ts.map +1 -1
- package/dist/node/init.js +66 -72
- package/dist/node/init.js.map +1 -1
- package/dist/node/local-obs-mode.js +1 -4
- package/dist/node/local-obs-mode.js.map +1 -1
- package/dist/node/log-processor.d.ts +1 -1
- package/dist/node/log-processor.d.ts.map +1 -1
- package/dist/node/log-processor.js +47 -55
- package/dist/node/log-processor.js.map +1 -1
- package/dist/node/metrics-client.js +1 -5
- package/dist/node/metrics-client.js.map +1 -1
- package/dist/node/safe-logger.js +8 -12
- package/dist/node/safe-logger.js.map +1 -1
- package/dist/node/sanitizing-processor.d.ts +2 -2
- package/dist/node/sanitizing-processor.d.ts.map +1 -1
- package/dist/node/sanitizing-processor.js +6 -10
- package/dist/node/sanitizing-processor.js.map +1 -1
- package/dist/node/service-tracers.js +7 -10
- package/dist/node/service-tracers.js.map +1 -1
- package/dist/node/traced-socket.d.ts +3 -3
- package/dist/node/traced-socket.d.ts.map +1 -1
- package/dist/node/traced-socket.js +48 -52
- package/dist/node/traced-socket.js.map +1 -1
- package/dist/npm-registry/emitter.js +34 -47
- package/dist/npm-registry/emitter.js.map +1 -1
- package/dist/npm-registry/index.js +3 -19
- package/dist/npm-registry/index.js.map +1 -1
- package/dist/npm-registry/sanitize.js +16 -27
- package/dist/npm-registry/sanitize.js.map +1 -1
- package/dist/npm-registry/spans.js +7 -12
- package/dist/npm-registry/spans.js.map +1 -1
- package/dist/testing/in-memory-exporter.d.ts +1 -1
- package/dist/testing/in-memory-exporter.d.ts.map +1 -1
- package/dist/testing/in-memory-exporter.js +6 -12
- package/dist/testing/in-memory-exporter.js.map +1 -1
- package/dist/testing/index.js +3 -15
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/metrics-capture.js +12 -15
- package/dist/testing/metrics-capture.js.map +1 -1
- package/dist/testing/test-init.js +24 -31
- package/dist/testing/test-init.js.map +1 -1
- package/dist/types/index.js +1 -17
- package/dist/types/index.js.map +1 -1
- package/dist/types/policy.js +21 -24
- package/dist/types/policy.js.map +1 -1
- package/package.json +11 -17
- package/dist-esm/browser/console-logging.d.ts +0 -18
- package/dist-esm/browser/console-logging.d.ts.map +0 -1
- package/dist-esm/browser/console-logging.js +0 -27
- package/dist-esm/browser/console-logging.js.map +0 -1
- package/dist-esm/browser/early-console-buffer.d.ts +0 -49
- package/dist-esm/browser/early-console-buffer.d.ts.map +0 -1
- package/dist-esm/browser/early-console-buffer.js +0 -181
- package/dist-esm/browser/early-console-buffer.js.map +0 -1
- package/dist-esm/browser/index.d.ts +0 -18
- package/dist-esm/browser/index.d.ts.map +0 -1
- package/dist-esm/browser/index.js +0 -23
- package/dist-esm/browser/index.js.map +0 -1
- package/dist-esm/browser/init.d.ts +0 -100
- package/dist-esm/browser/init.d.ts.map +0 -1
- package/dist-esm/browser/init.js +0 -317
- package/dist-esm/browser/init.js.map +0 -1
- package/dist-esm/browser/instrumentations.d.ts +0 -67
- package/dist-esm/browser/instrumentations.d.ts.map +0 -1
- package/dist-esm/browser/instrumentations.js +0 -79
- package/dist-esm/browser/instrumentations.js.map +0 -1
- package/dist-esm/browser/logs.d.ts +0 -57
- package/dist-esm/browser/logs.d.ts.map +0 -1
- package/dist-esm/browser/logs.js +0 -80
- package/dist-esm/browser/logs.js.map +0 -1
- package/dist-esm/browser/metrics.d.ts +0 -29
- package/dist-esm/browser/metrics.d.ts.map +0 -1
- package/dist-esm/browser/metrics.js +0 -46
- package/dist-esm/browser/metrics.js.map +0 -1
- package/dist-esm/browser/resilient-exporter.d.ts +0 -43
- package/dist-esm/browser/resilient-exporter.d.ts.map +0 -1
- package/dist-esm/browser/resilient-exporter.js +0 -84
- package/dist-esm/browser/resilient-exporter.js.map +0 -1
- package/dist-esm/browser/sanitizer.d.ts +0 -35
- package/dist-esm/browser/sanitizer.d.ts.map +0 -1
- package/dist-esm/browser/sanitizer.js +0 -207
- package/dist-esm/browser/sanitizer.js.map +0 -1
- package/dist-esm/browser/traced-socket.d.ts +0 -102
- package/dist-esm/browser/traced-socket.d.ts.map +0 -1
- package/dist-esm/browser/traced-socket.js +0 -199
- package/dist-esm/browser/traced-socket.js.map +0 -1
- package/dist-esm/common/contracts/tier2-traces.d.ts +0 -116
- package/dist-esm/common/contracts/tier2-traces.d.ts.map +0 -1
- package/dist-esm/common/contracts/tier2-traces.js +0 -725
- package/dist-esm/common/contracts/tier2-traces.js.map +0 -1
- package/dist-esm/common/deployment-type.d.ts +0 -18
- package/dist-esm/common/deployment-type.d.ts.map +0 -1
- package/dist-esm/common/deployment-type.js +0 -27
- package/dist-esm/common/deployment-type.js.map +0 -1
- package/dist-esm/common/guardrails.d.ts +0 -132
- package/dist-esm/common/guardrails.d.ts.map +0 -1
- package/dist-esm/common/guardrails.js +0 -230
- package/dist-esm/common/guardrails.js.map +0 -1
- package/dist-esm/common/index.d.ts +0 -17
- package/dist-esm/common/index.d.ts.map +0 -1
- package/dist-esm/common/index.js +0 -17
- package/dist-esm/common/index.js.map +0 -1
- package/dist-esm/common/log-sanitizer.d.ts +0 -163
- package/dist-esm/common/log-sanitizer.d.ts.map +0 -1
- package/dist-esm/common/log-sanitizer.js +0 -745
- package/dist-esm/common/log-sanitizer.js.map +0 -1
- package/dist-esm/common/policy-evaluator.d.ts +0 -103
- package/dist-esm/common/policy-evaluator.d.ts.map +0 -1
- package/dist-esm/common/policy-evaluator.js +0 -196
- package/dist-esm/common/policy-evaluator.js.map +0 -1
- package/dist-esm/common/resource.d.ts +0 -79
- package/dist-esm/common/resource.d.ts.map +0 -1
- package/dist-esm/common/resource.js +0 -121
- package/dist-esm/common/resource.js.map +0 -1
- package/dist-esm/common/tier-hints.d.ts +0 -182
- package/dist-esm/common/tier-hints.d.ts.map +0 -1
- package/dist-esm/common/tier-hints.js +0 -199
- package/dist-esm/common/tier-hints.js.map +0 -1
- package/dist-esm/common/trace-sanitizer.d.ts +0 -82
- package/dist-esm/common/trace-sanitizer.d.ts.map +0 -1
- package/dist-esm/common/trace-sanitizer.js +0 -230
- package/dist-esm/common/trace-sanitizer.js.map +0 -1
- package/dist-esm/common/traced-socket-types.d.ts +0 -43
- package/dist-esm/common/traced-socket-types.d.ts.map +0 -1
- package/dist-esm/common/traced-socket-types.js +0 -16
- package/dist-esm/common/traced-socket-types.js.map +0 -1
- package/dist-esm/index.d.ts +0 -45
- package/dist-esm/index.d.ts.map +0 -1
- package/dist-esm/index.js +0 -56
- package/dist-esm/index.js.map +0 -1
- package/dist-esm/lint/forbidden-attributes.d.ts +0 -149
- package/dist-esm/lint/forbidden-attributes.d.ts.map +0 -1
- package/dist-esm/lint/forbidden-attributes.js +0 -210
- package/dist-esm/lint/forbidden-attributes.js.map +0 -1
- package/dist-esm/lint/index.d.ts +0 -9
- package/dist-esm/lint/index.d.ts.map +0 -1
- package/dist-esm/lint/index.js +0 -9
- package/dist-esm/lint/index.js.map +0 -1
- package/dist-esm/llmobs/index.d.ts +0 -22
- package/dist-esm/llmobs/index.d.ts.map +0 -1
- package/dist-esm/llmobs/index.js +0 -22
- package/dist-esm/llmobs/index.js.map +0 -1
- package/dist-esm/llmobs/tier1-exporter.d.ts +0 -146
- package/dist-esm/llmobs/tier1-exporter.d.ts.map +0 -1
- package/dist-esm/llmobs/tier1-exporter.js +0 -193
- package/dist-esm/llmobs/tier1-exporter.js.map +0 -1
- package/dist-esm/llmobs/tier2-summarizer.d.ts +0 -268
- package/dist-esm/llmobs/tier2-summarizer.d.ts.map +0 -1
- package/dist-esm/llmobs/tier2-summarizer.js +0 -652
- package/dist-esm/llmobs/tier2-summarizer.js.map +0 -1
- package/dist-esm/node/dynamic-attribute-processor.d.ts +0 -43
- package/dist-esm/node/dynamic-attribute-processor.d.ts.map +0 -1
- package/dist-esm/node/dynamic-attribute-processor.js +0 -74
- package/dist-esm/node/dynamic-attribute-processor.js.map +0 -1
- package/dist-esm/node/exporters/resilient-exporter.d.ts +0 -91
- package/dist-esm/node/exporters/resilient-exporter.d.ts.map +0 -1
- package/dist-esm/node/exporters/resilient-exporter.js +0 -132
- package/dist-esm/node/exporters/resilient-exporter.js.map +0 -1
- package/dist-esm/node/index.d.ts +0 -13
- package/dist-esm/node/index.d.ts.map +0 -1
- package/dist-esm/node/index.js +0 -13
- package/dist-esm/node/index.js.map +0 -1
- package/dist-esm/node/init.d.ts +0 -97
- package/dist-esm/node/init.d.ts.map +0 -1
- package/dist-esm/node/init.js +0 -359
- package/dist-esm/node/init.js.map +0 -1
- package/dist-esm/node/local-obs-mode.d.ts +0 -17
- package/dist-esm/node/local-obs-mode.d.ts.map +0 -1
- package/dist-esm/node/local-obs-mode.js +0 -19
- package/dist-esm/node/local-obs-mode.js.map +0 -1
- package/dist-esm/node/log-processor.d.ts +0 -132
- package/dist-esm/node/log-processor.d.ts.map +0 -1
- package/dist-esm/node/log-processor.js +0 -389
- package/dist-esm/node/log-processor.js.map +0 -1
- package/dist-esm/node/metrics-client.d.ts +0 -88
- package/dist-esm/node/metrics-client.d.ts.map +0 -1
- package/dist-esm/node/metrics-client.js +0 -205
- package/dist-esm/node/metrics-client.js.map +0 -1
- package/dist-esm/node/safe-logger.d.ts +0 -55
- package/dist-esm/node/safe-logger.d.ts.map +0 -1
- package/dist-esm/node/safe-logger.js +0 -154
- package/dist-esm/node/safe-logger.js.map +0 -1
- package/dist-esm/node/sanitizing-processor.d.ts +0 -67
- package/dist-esm/node/sanitizing-processor.d.ts.map +0 -1
- package/dist-esm/node/sanitizing-processor.js +0 -163
- package/dist-esm/node/sanitizing-processor.js.map +0 -1
- package/dist-esm/node/service-tracers.d.ts +0 -52
- package/dist-esm/node/service-tracers.d.ts.map +0 -1
- package/dist-esm/node/service-tracers.js +0 -78
- package/dist-esm/node/service-tracers.js.map +0 -1
- package/dist-esm/node/traced-socket.d.ts +0 -120
- package/dist-esm/node/traced-socket.d.ts.map +0 -1
- package/dist-esm/node/traced-socket.js +0 -334
- package/dist-esm/node/traced-socket.js.map +0 -1
- package/dist-esm/npm-registry/emitter.d.ts +0 -330
- package/dist-esm/npm-registry/emitter.d.ts.map +0 -1
- package/dist-esm/npm-registry/emitter.js +0 -546
- package/dist-esm/npm-registry/emitter.js.map +0 -1
- package/dist-esm/npm-registry/index.d.ts +0 -12
- package/dist-esm/npm-registry/index.d.ts.map +0 -1
- package/dist-esm/npm-registry/index.js +0 -12
- package/dist-esm/npm-registry/index.js.map +0 -1
- package/dist-esm/npm-registry/sanitize.d.ts +0 -174
- package/dist-esm/npm-registry/sanitize.d.ts.map +0 -1
- package/dist-esm/npm-registry/sanitize.js +0 -331
- package/dist-esm/npm-registry/sanitize.js.map +0 -1
- package/dist-esm/npm-registry/spans.d.ts +0 -61
- package/dist-esm/npm-registry/spans.d.ts.map +0 -1
- package/dist-esm/npm-registry/spans.js +0 -86
- package/dist-esm/npm-registry/spans.js.map +0 -1
- package/dist-esm/package.json +0 -1
- package/dist-esm/testing/in-memory-exporter.d.ts +0 -179
- package/dist-esm/testing/in-memory-exporter.d.ts.map +0 -1
- package/dist-esm/testing/in-memory-exporter.js +0 -250
- package/dist-esm/testing/in-memory-exporter.js.map +0 -1
- package/dist-esm/testing/index.d.ts +0 -9
- package/dist-esm/testing/index.d.ts.map +0 -1
- package/dist-esm/testing/index.js +0 -9
- package/dist-esm/testing/index.js.map +0 -1
- package/dist-esm/testing/metrics-capture.d.ts +0 -29
- package/dist-esm/testing/metrics-capture.d.ts.map +0 -1
- package/dist-esm/testing/metrics-capture.js +0 -71
- package/dist-esm/testing/metrics-capture.js.map +0 -1
- package/dist-esm/testing/test-init.d.ts +0 -80
- package/dist-esm/testing/test-init.d.ts.map +0 -1
- package/dist-esm/testing/test-init.js +0 -137
- package/dist-esm/testing/test-init.js.map +0 -1
- package/dist-esm/types/index.d.ts +0 -84
- package/dist-esm/types/index.d.ts.map +0 -1
- package/dist-esm/types/index.js +0 -7
- package/dist-esm/types/index.js.map +0 -1
- package/dist-esm/types/policy.d.ts +0 -92
- package/dist-esm/types/policy.d.ts.map +0 -1
- package/dist-esm/types/policy.js +0 -122
- package/dist-esm/types/policy.js.map +0 -1
package/dist/node/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/node/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAS,MAAM,EAAW,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/node/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAS,KAAK,MAAM,EAAW,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAc5D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOlD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAYzE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,6CAA6C;IAC7C,eAAe,EAAE,wBAAwB,CAAC;IAC1C;;;;;;;;OAQG;IACH,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACjE,kCAAkC;IAClC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;IACnC,mCAAmC;IACnC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,oEAAoE;IACpE,aAAa,EAAE,aAAa,CAAC;IAC7B,wBAAwB;IACxB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AASD,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,kCAAkC,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC3E;AA0GD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,eAAe,GACtB,qBAAqB,CAqPvB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,qBAAqB,CAQ5D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
package/dist/node/init.js
CHANGED
|
@@ -1,38 +1,32 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Node.js Telemetry Bootstrap
|
|
4
3
|
*
|
|
5
4
|
* This is the ONLY approved way to initialize telemetry in Node.js services.
|
|
6
5
|
* Direct NodeSDK usage outside this package is prohibited.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const local_obs_mode_js_1 = require("./local-obs-mode.js");
|
|
32
|
-
const log_processor_js_1 = require("./log-processor.js");
|
|
33
|
-
const metrics_client_js_1 = require("./metrics-client.js");
|
|
34
|
-
const sanitizing_processor_js_1 = require("./sanitizing-processor.js");
|
|
35
|
-
const service_tracers_js_1 = require("./service-tracers.js");
|
|
7
|
+
import { trace, metrics } from "@opentelemetry/api";
|
|
8
|
+
import { logs } from "@opentelemetry/api-logs";
|
|
9
|
+
import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
|
|
10
|
+
import { W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
11
|
+
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
|
|
12
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
13
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
14
|
+
import { BatchLogRecordProcessor, } from "@opentelemetry/sdk-logs";
|
|
15
|
+
import { AggregationTemporality, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
|
|
16
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
17
|
+
import { BatchSpanProcessor, } from "@opentelemetry/sdk-trace-base";
|
|
18
|
+
import { getTraceSanitizerAttributeSets } from "../common/contracts/tier2-traces.js";
|
|
19
|
+
import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js";
|
|
20
|
+
import { buildResource, validateResource } from "../common/resource.js";
|
|
21
|
+
import { TraceSanitizer } from "../common/trace-sanitizer.js";
|
|
22
|
+
import { TelemetryTier } from "../types/policy.js";
|
|
23
|
+
import { DynamicAttributeLogRecordProcessor, DynamicAttributeSpanProcessor, } from "./dynamic-attribute-processor.js";
|
|
24
|
+
import { ResilientExporter } from "./exporters/resilient-exporter.js";
|
|
25
|
+
import { isLocalObsMode } from "./local-obs-mode.js";
|
|
26
|
+
import { PolicyAwareLogProcessor, getLoggingPolicy, LogExportMode, } from "./log-processor.js";
|
|
27
|
+
import { MetricsClient } from "./metrics-client.js";
|
|
28
|
+
import { SanitizingSpanProcessor, noopSpanProcessor, } from "./sanitizing-processor.js";
|
|
29
|
+
import { createServiceTracers } from "./service-tracers.js";
|
|
36
30
|
function getInstance() {
|
|
37
31
|
return globalThis.__superblocksNodeTelemetryInstance;
|
|
38
32
|
}
|
|
@@ -52,18 +46,18 @@ function setInstance(next) {
|
|
|
52
46
|
* (which returns no-op tracers/meters/loggers when no provider is registered).
|
|
53
47
|
*/
|
|
54
48
|
function createNoOpInstance(config, policy) {
|
|
55
|
-
const policyEvaluator = new
|
|
49
|
+
const policyEvaluator = new TelemetryPolicyEvaluator(policy);
|
|
56
50
|
// Use a no-op meter for the metrics client
|
|
57
|
-
const defaultMeter =
|
|
51
|
+
const defaultMeter = metrics.getMeter(config.serviceName, config.serviceVersion);
|
|
58
52
|
return {
|
|
59
53
|
sdk: undefined,
|
|
60
54
|
policyEvaluator,
|
|
61
55
|
// No-op mode has no SDK/exporter, so secondary services collapse to the
|
|
62
56
|
// global (no-op) tracer — options.serviceName is accepted but inert.
|
|
63
|
-
getTracer: (name, _options) =>
|
|
64
|
-
getMeter: (name) =>
|
|
65
|
-
getLogger: (name) =>
|
|
66
|
-
metricsClient: new
|
|
57
|
+
getTracer: (name, _options) => trace.getTracer(name ?? config.serviceName, config.serviceVersion),
|
|
58
|
+
getMeter: (name) => metrics.getMeter(name ?? config.serviceName, config.serviceVersion),
|
|
59
|
+
getLogger: (name) => logs.getLogger(name ?? config.serviceName, config.serviceVersion),
|
|
60
|
+
metricsClient: new MetricsClient(defaultMeter),
|
|
67
61
|
shutdown: async () => {
|
|
68
62
|
// No-op: nothing to flush or shut down
|
|
69
63
|
},
|
|
@@ -144,7 +138,7 @@ function validateNodeTelemetryConfig(config) {
|
|
|
144
138
|
* const tracer = telemetry.getTracer();
|
|
145
139
|
* ```
|
|
146
140
|
*/
|
|
147
|
-
function initNodeTelemetry(config, policy) {
|
|
141
|
+
export function initNodeTelemetry(config, policy) {
|
|
148
142
|
// Policy is required
|
|
149
143
|
if (!policy) {
|
|
150
144
|
throw new Error("[Telemetry] Policy is required. Cannot initialize telemetry without a policy.");
|
|
@@ -176,10 +170,10 @@ function initNodeTelemetry(config, policy) {
|
|
|
176
170
|
setInstance(noOp);
|
|
177
171
|
return noOp;
|
|
178
172
|
}
|
|
179
|
-
const policyEvaluator = new
|
|
180
|
-
const resource =
|
|
173
|
+
const policyEvaluator = new TelemetryPolicyEvaluator(policy);
|
|
174
|
+
const resource = buildResource(config);
|
|
181
175
|
// Validate resource has required attributes
|
|
182
|
-
|
|
176
|
+
validateResource(resource);
|
|
183
177
|
// Track dropped spans for observability
|
|
184
178
|
let droppedSpans = 0;
|
|
185
179
|
const onDrop = (count, reason) => {
|
|
@@ -191,9 +185,9 @@ function initNodeTelemetry(config, policy) {
|
|
|
191
185
|
// Use isExportEnabled (not canExport) - sampling applies at runtime, not initialization.
|
|
192
186
|
let spanProcessor;
|
|
193
187
|
if (config.otlpUrl &&
|
|
194
|
-
policyEvaluator.isExportEnabled(
|
|
195
|
-
const tier2Exporter = new
|
|
196
|
-
delegate: new
|
|
188
|
+
policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL)) {
|
|
189
|
+
const tier2Exporter = new ResilientExporter({
|
|
190
|
+
delegate: new OTLPTraceExporter({
|
|
197
191
|
headers: config.otlpHeaders,
|
|
198
192
|
url: `${config.otlpUrl}/v1/traces`,
|
|
199
193
|
}),
|
|
@@ -201,23 +195,23 @@ function initNodeTelemetry(config, policy) {
|
|
|
201
195
|
logger: config.logger,
|
|
202
196
|
});
|
|
203
197
|
const hashConfig = config.traceSanitizerHashConfig ?? null;
|
|
204
|
-
const attributeSets =
|
|
205
|
-
const traceSanitizer = new
|
|
198
|
+
const attributeSets = getTraceSanitizerAttributeSets(policy.deploymentType);
|
|
199
|
+
const traceSanitizer = new TraceSanitizer({
|
|
206
200
|
hashConfig,
|
|
207
201
|
...attributeSets,
|
|
208
202
|
});
|
|
209
203
|
const spanProcessorLogger = config.logger ?? createConsoleFallbackLogger();
|
|
210
|
-
spanProcessor = new
|
|
204
|
+
spanProcessor = new SanitizingSpanProcessor(policyEvaluator, noopSpanProcessor, tier2Exporter, traceSanitizer, spanProcessorLogger);
|
|
211
205
|
// Local-obs override: bypass the sanitizer so the local LGTM stack sees
|
|
212
206
|
// every span (service graph, raw attrs). Same exporter as cloud — only the
|
|
213
207
|
// processor changes.
|
|
214
|
-
if (
|
|
215
|
-
spanProcessor = new
|
|
208
|
+
if (isLocalObsMode()) {
|
|
209
|
+
spanProcessor = new BatchSpanProcessor(tier2Exporter);
|
|
216
210
|
}
|
|
217
211
|
// Stamp late-known identity (e.g. a dev-server's app/user/org, resolved at
|
|
218
212
|
// connect) onto every span without re-initializing the SDK.
|
|
219
213
|
if (config.dynamicAttributes) {
|
|
220
|
-
spanProcessor = new
|
|
214
|
+
spanProcessor = new DynamicAttributeSpanProcessor(spanProcessor, config.dynamicAttributes);
|
|
221
215
|
}
|
|
222
216
|
}
|
|
223
217
|
// Create metric exporter if enabled
|
|
@@ -225,11 +219,11 @@ function initNodeTelemetry(config, policy) {
|
|
|
225
219
|
let metricReader;
|
|
226
220
|
if (config.otlpUrl &&
|
|
227
221
|
config.metricsEnabled !== false &&
|
|
228
|
-
policyEvaluator.isExportEnabled(
|
|
229
|
-
metricReader = new
|
|
230
|
-
exporter: new
|
|
222
|
+
policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL)) {
|
|
223
|
+
metricReader = new PeriodicExportingMetricReader({
|
|
224
|
+
exporter: new OTLPMetricExporter({
|
|
231
225
|
headers: config.otlpHeaders,
|
|
232
|
-
temporalityPreference:
|
|
226
|
+
temporalityPreference: AggregationTemporality.DELTA,
|
|
233
227
|
url: `${config.otlpUrl}/v1/metrics`,
|
|
234
228
|
}),
|
|
235
229
|
exportIntervalMillis: 10000, // every 10 seconds
|
|
@@ -241,42 +235,42 @@ function initNodeTelemetry(config, policy) {
|
|
|
241
235
|
// 2. Sanitize log bodies and attributes to remove PII, file paths, stack traces
|
|
242
236
|
// 3. Remove forbidden fields that should never be exported
|
|
243
237
|
let logProcessor;
|
|
244
|
-
let loggingPolicy =
|
|
238
|
+
let loggingPolicy = getLoggingPolicy(policy);
|
|
245
239
|
// Local-obs override: ship info+ logs to the local LGTM stack regardless of
|
|
246
240
|
// the deployment policy's export mode (cloud-prem is ERRORS_ONLY). Mirrors the
|
|
247
241
|
// span sanitizer bypass above. See isLocalObsMode for why this is local-only.
|
|
248
|
-
if (
|
|
242
|
+
if (isLocalObsMode()) {
|
|
249
243
|
loggingPolicy = {
|
|
250
244
|
...loggingPolicy,
|
|
251
|
-
exportMode:
|
|
245
|
+
exportMode: LogExportMode.INFO_AND_ABOVE,
|
|
252
246
|
};
|
|
253
247
|
}
|
|
254
248
|
if (config.otlpUrl &&
|
|
255
249
|
config.logsEnabled !== false &&
|
|
256
|
-
policyEvaluator.isExportEnabled(
|
|
257
|
-
loggingPolicy.exportMode !==
|
|
258
|
-
const batchProcessor = new
|
|
259
|
-
exporter: new
|
|
250
|
+
policyEvaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL) &&
|
|
251
|
+
loggingPolicy.exportMode !== LogExportMode.LOCAL_ONLY) {
|
|
252
|
+
const batchProcessor = new BatchLogRecordProcessor({
|
|
253
|
+
exporter: new OTLPLogExporter({
|
|
260
254
|
headers: config.otlpHeaders,
|
|
261
255
|
url: `${config.otlpUrl}/v1/logs`,
|
|
262
256
|
}),
|
|
263
257
|
});
|
|
264
|
-
logProcessor = new
|
|
258
|
+
logProcessor = new PolicyAwareLogProcessor(loggingPolicy, batchProcessor);
|
|
265
259
|
// Same late-known identity as spans: stamp before the policy processor so
|
|
266
260
|
// sanitization sees (and can redact) the identity attributes.
|
|
267
261
|
if (config.dynamicAttributes) {
|
|
268
|
-
logProcessor = new
|
|
262
|
+
logProcessor = new DynamicAttributeLogRecordProcessor(logProcessor, config.dynamicAttributes);
|
|
269
263
|
}
|
|
270
264
|
}
|
|
271
265
|
// Create the SDK
|
|
272
266
|
// Note: instrumentations typed as unknown[] for flexibility with various OTEL instrumentation packages
|
|
273
|
-
const sdk = new
|
|
267
|
+
const sdk = new NodeSDK({
|
|
274
268
|
resource,
|
|
275
269
|
spanProcessor,
|
|
276
270
|
metricReader,
|
|
277
271
|
logRecordProcessor: logProcessor,
|
|
278
|
-
contextManager: new
|
|
279
|
-
textMapPropagator: new
|
|
272
|
+
contextManager: new AsyncLocalStorageContextManager(),
|
|
273
|
+
textMapPropagator: new W3CTraceContextPropagator(),
|
|
280
274
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- OTEL instrumentation types vary
|
|
281
275
|
instrumentations: (config.instrumentations ?? []),
|
|
282
276
|
});
|
|
@@ -300,11 +294,11 @@ function initNodeTelemetry(config, policy) {
|
|
|
300
294
|
console.info(`[Telemetry] Initialized for ${config.serviceName} (${policy.deploymentType})` +
|
|
301
295
|
` | Traces: ${tracesEnabled} | Metrics: ${metricsEnabled} | Logs: ${logsEnabled}`);
|
|
302
296
|
}
|
|
303
|
-
const defaultMeter =
|
|
297
|
+
const defaultMeter = metrics.getMeter(config.serviceName, config.serviceVersion);
|
|
304
298
|
// Secondary-service tracers (e.g. server LLM-Obs spans under
|
|
305
299
|
// `superblocks-ai-code-gen`). They reuse the SAME span processor so
|
|
306
300
|
// sanitization + export are identical; the SDK owns its lifecycle.
|
|
307
|
-
const serviceTracers =
|
|
301
|
+
const serviceTracers = createServiceTracers({
|
|
308
302
|
baseResource: resource,
|
|
309
303
|
defaultServiceName: config.serviceName,
|
|
310
304
|
serviceVersion: config.serviceVersion,
|
|
@@ -314,9 +308,9 @@ function initNodeTelemetry(config, policy) {
|
|
|
314
308
|
sdk,
|
|
315
309
|
policyEvaluator,
|
|
316
310
|
getTracer: (name, options) => serviceTracers.getTracer(name ?? config.serviceName, options?.serviceName ?? config.serviceName),
|
|
317
|
-
getMeter: (name) =>
|
|
318
|
-
getLogger: (name) =>
|
|
319
|
-
metricsClient: new
|
|
311
|
+
getMeter: (name) => metrics.getMeter(name ?? config.serviceName, config.serviceVersion),
|
|
312
|
+
getLogger: (name) => logs.getLogger(name ?? config.serviceName, config.serviceVersion),
|
|
313
|
+
metricsClient: new MetricsClient(defaultMeter),
|
|
320
314
|
shutdown: async () => {
|
|
321
315
|
try {
|
|
322
316
|
// Best-effort flush of secondary providers; never let it block the
|
|
@@ -342,7 +336,7 @@ function initNodeTelemetry(config, policy) {
|
|
|
342
336
|
*
|
|
343
337
|
* @throws Error if not initialized
|
|
344
338
|
*/
|
|
345
|
-
function getTelemetryInstance() {
|
|
339
|
+
export function getTelemetryInstance() {
|
|
346
340
|
const current = getInstance();
|
|
347
341
|
if (!current) {
|
|
348
342
|
throw new Error("[Telemetry] Not initialized. Call initNodeTelemetry() first.");
|
|
@@ -352,14 +346,14 @@ function getTelemetryInstance() {
|
|
|
352
346
|
/**
|
|
353
347
|
* Check if telemetry is initialized.
|
|
354
348
|
*/
|
|
355
|
-
function isTelemetryInitialized() {
|
|
349
|
+
export function isTelemetryInitialized() {
|
|
356
350
|
return getInstance() !== undefined;
|
|
357
351
|
}
|
|
358
352
|
/**
|
|
359
353
|
* Reset telemetry (for testing only).
|
|
360
354
|
* @internal
|
|
361
355
|
*/
|
|
362
|
-
function resetTelemetry() {
|
|
356
|
+
export function resetTelemetry() {
|
|
363
357
|
setInstance(undefined);
|
|
364
358
|
}
|
|
365
359
|
//# sourceMappingURL=init.js.map
|
package/dist/node/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/node/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/node/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isLocalObsMode = isLocalObsMode;
|
|
4
1
|
/**
|
|
5
2
|
* Local-observability mode toggle for the Node telemetry pipeline.
|
|
6
3
|
*
|
|
@@ -16,7 +13,7 @@ exports.isLocalObsMode = isLocalObsMode;
|
|
|
16
13
|
* the info-level log-export override) never activate in a deployed environment
|
|
17
14
|
* and therefore never duplicate log volume into Datadog.
|
|
18
15
|
*/
|
|
19
|
-
function isLocalObsMode(env = process.env) {
|
|
16
|
+
export function isLocalObsMode(env = process.env) {
|
|
20
17
|
return env.SUPERBLOCKS_LOCAL_OBS === "true";
|
|
21
18
|
}
|
|
22
19
|
//# sourceMappingURL=local-obs-mode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-obs-mode.js","sourceRoot":"","sources":["../../src/node/local-obs-mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-obs-mode.js","sourceRoot":"","sources":["../../src/node/local-obs-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,OAAO,GAAG,CAAC,qBAAqB,KAAK,MAAM,CAAC;AAC9C,CAAC"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import type { Context } from "@opentelemetry/api";
|
|
12
12
|
import type { LogRecordProcessor, ReadableLogRecord } from "@opentelemetry/sdk-logs";
|
|
13
13
|
import type { SensitivePattern } from "../common/log-sanitizer.js";
|
|
14
|
-
import { TelemetryPolicy } from "../types/policy.js";
|
|
14
|
+
import { type TelemetryPolicy } from "../types/policy.js";
|
|
15
15
|
/**
|
|
16
16
|
* Controls what logs are exported via OTEL.
|
|
17
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-processor.d.ts","sourceRoot":"","sources":["../../src/node/log-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAoBnE,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"log-processor.d.ts","sourceRoot":"","sources":["../../src/node/log-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAoBnE,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAOzE;;GAEG;AACH,oBAAY,aAAa;IACvB,+CAA+C;IAC/C,UAAU,eAAe;IACzB,4DAA4D;IAC5D,WAAW,gBAAgB;IAC3B,6DAA6D;IAC7D,cAAc,mBAAmB;CAClC;AAMD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,UAAU,EAAE,aAAa,CAAC;IAC1B,4CAA4C;IAC5C,aAAa,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvE,oHAAoH;IACpH,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;IAC1C,6GAA6G;IAC7G,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,uHAAuH;IACvH,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,wGAAwG;IACxG,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4EAA4E;IAC5E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oEAAoE;IACpE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,oEAAoE;IACpE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,aAAa,GAAG,SAAS,CAS3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,aAAa,GACjC,mBAAmB,CAyDrB;AAiCD;;;;;;;;;;;GAWG;AACH,wBAAgB,oCAAoC,CAClD,aAAa,EAAE,mBAAmB,EAClC,QAAQ,EAAE,MAAM,GACf,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,aAAa,GACjC,MAAM,CAsBR;AAuDD;;;;;;;GAOG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB;IAKrE;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAqB7D,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;IAa3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuE1B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Policy-Aware Log Processor
|
|
4
3
|
*
|
|
@@ -9,24 +8,18 @@
|
|
|
9
8
|
*
|
|
10
9
|
* @see https://github.com/superblocksteam/engineering/blob/main/projects/o11y-refactor/epics/epic-c4-logging-strategy.md
|
|
11
10
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
exports.getMinimumPinoLevelForDeployment = getMinimumPinoLevelForDeployment;
|
|
18
|
-
const shared_1 = require("@superblocksteam/shared");
|
|
19
|
-
const log_sanitizer_js_1 = require("../common/log-sanitizer.js");
|
|
20
|
-
const policy_evaluator_js_1 = require("../common/policy-evaluator.js");
|
|
21
|
-
const policy_js_1 = require("../types/policy.js");
|
|
22
|
-
const local_obs_mode_js_1 = require("./local-obs-mode.js");
|
|
11
|
+
import { DeploymentTypeEnum } from "@superblocksteam/shared";
|
|
12
|
+
import { applyRedactPatterns, CLOUD_PREM_REDACT_PATTERNS, containsStackTrace, DEFAULT_SECRET_PATTERNS, DEFAULT_SENSITIVE_PATTERNS, EXPORT_FORBIDDEN_FIELDS_CLOUD_PREM, isSecretFieldFromPolicy, isStackAttributeKey, redactSensitivePatterns, redactStackTraceForExport, REDACTED_PLACEHOLDER, sanitizeLogObjectForExport, SECRET_FIELD_PATTERNS, SECRET_FIELDS, STACK_TRACE_REDACTED_PLACEHOLDER, TIER1_FORBIDDEN_LOG_FIELDS, } from "../common/log-sanitizer.js";
|
|
13
|
+
import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js";
|
|
14
|
+
import { TelemetryTier } from "../types/policy.js";
|
|
15
|
+
import { isLocalObsMode } from "./local-obs-mode.js";
|
|
23
16
|
// ============================================================================
|
|
24
17
|
// Log Export Mode
|
|
25
18
|
// ============================================================================
|
|
26
19
|
/**
|
|
27
20
|
* Controls what logs are exported via OTEL.
|
|
28
21
|
*/
|
|
29
|
-
var LogExportMode;
|
|
22
|
+
export var LogExportMode;
|
|
30
23
|
(function (LogExportMode) {
|
|
31
24
|
/** No log export - local stdout/stderr only */
|
|
32
25
|
LogExportMode["LOCAL_ONLY"] = "local_only";
|
|
@@ -34,12 +27,12 @@ var LogExportMode;
|
|
|
34
27
|
LogExportMode["ERRORS_ONLY"] = "errors_only";
|
|
35
28
|
/** Export INFO and above (not recommended for cloud-prem) */
|
|
36
29
|
LogExportMode["INFO_AND_ABOVE"] = "info_and_above";
|
|
37
|
-
})(LogExportMode || (
|
|
30
|
+
})(LogExportMode || (LogExportMode = {}));
|
|
38
31
|
/**
|
|
39
32
|
* Parse a string value into a LogExportMode, returning undefined if unrecognized.
|
|
40
33
|
* Used to validate SUPERBLOCKS_LOG_EXPORT_MODE env var values.
|
|
41
34
|
*/
|
|
42
|
-
function parseLogExportMode(value) {
|
|
35
|
+
export function parseLogExportMode(value) {
|
|
43
36
|
if (!value)
|
|
44
37
|
return undefined;
|
|
45
38
|
const normalized = value.toLowerCase();
|
|
@@ -60,42 +53,42 @@ function parseLogExportMode(value) {
|
|
|
60
53
|
* Cloud-prem sanitization (redaction, forbidden fields) is still applied regardless of override.
|
|
61
54
|
* @returns Logging policy configuration
|
|
62
55
|
*/
|
|
63
|
-
function getLoggingPolicy(policy, exportModeOverride) {
|
|
64
|
-
const evaluator = new
|
|
56
|
+
export function getLoggingPolicy(policy, exportModeOverride) {
|
|
57
|
+
const evaluator = new TelemetryPolicyEvaluator(policy);
|
|
65
58
|
// Check if Tier 2 export is allowed.
|
|
66
59
|
// ORDERING IS SECURITY-CRITICAL: this gate MUST come before the cloud-prem branch.
|
|
67
60
|
// exportModeOverride must never escalate a LOCAL_ONLY (Tier 2 disabled) deployment to
|
|
68
61
|
// INFO_AND_ABOVE. Do not move the cloud-prem branch above this check.
|
|
69
|
-
const canExportTier2 = evaluator.isExportEnabled(
|
|
62
|
+
const canExportTier2 = evaluator.isExportEnabled(TelemetryTier.TIER_2_OPERATIONAL);
|
|
70
63
|
if (!canExportTier2) {
|
|
71
64
|
return {
|
|
72
65
|
exportMode: LogExportMode.LOCAL_ONLY,
|
|
73
66
|
localMaxLevel: "debug",
|
|
74
|
-
messageSecretPatterns:
|
|
75
|
-
secretFieldNames:
|
|
76
|
-
secretFieldPatterns:
|
|
67
|
+
messageSecretPatterns: DEFAULT_SECRET_PATTERNS,
|
|
68
|
+
secretFieldNames: SECRET_FIELDS,
|
|
69
|
+
secretFieldPatterns: SECRET_FIELD_PATTERNS,
|
|
77
70
|
redactStackTraces: true,
|
|
78
71
|
redactPatterns: [],
|
|
79
|
-
sensitivePatterns:
|
|
80
|
-
forbiddenFields:
|
|
72
|
+
sensitivePatterns: DEFAULT_SENSITIVE_PATTERNS,
|
|
73
|
+
forbiddenFields: TIER1_FORBIDDEN_LOG_FIELDS,
|
|
81
74
|
};
|
|
82
75
|
}
|
|
83
76
|
// Cloud-prem: export errors only by default, with full sanitization (secrets + sensitive patterns).
|
|
84
77
|
// exportModeOverride allows specific deployments (e.g. trial environments) to opt into INFO_AND_ABOVE
|
|
85
78
|
// for debugging. Sanitization is always applied on cloud-prem regardless of the override.
|
|
86
|
-
if (policy.deploymentType ===
|
|
79
|
+
if (policy.deploymentType === DeploymentTypeEnum.CLOUD_PREM) {
|
|
87
80
|
return {
|
|
88
81
|
exportMode: exportModeOverride ?? LogExportMode.ERRORS_ONLY,
|
|
89
82
|
localMaxLevel: "debug",
|
|
90
|
-
messageSecretPatterns:
|
|
91
|
-
secretFieldNames:
|
|
92
|
-
secretFieldPatterns:
|
|
83
|
+
messageSecretPatterns: DEFAULT_SECRET_PATTERNS,
|
|
84
|
+
secretFieldNames: SECRET_FIELDS,
|
|
85
|
+
secretFieldPatterns: SECRET_FIELD_PATTERNS,
|
|
93
86
|
redactStackTraces: true,
|
|
94
|
-
redactPatterns:
|
|
95
|
-
sensitivePatterns:
|
|
87
|
+
redactPatterns: CLOUD_PREM_REDACT_PATTERNS,
|
|
88
|
+
sensitivePatterns: DEFAULT_SENSITIVE_PATTERNS,
|
|
96
89
|
forbiddenFields: new Set([
|
|
97
|
-
...
|
|
98
|
-
...
|
|
90
|
+
...TIER1_FORBIDDEN_LOG_FIELDS,
|
|
91
|
+
...EXPORT_FORBIDDEN_FIELDS_CLOUD_PREM,
|
|
99
92
|
]),
|
|
100
93
|
};
|
|
101
94
|
}
|
|
@@ -147,7 +140,7 @@ function moreRestrictiveLevel(a, b) {
|
|
|
147
140
|
* @param envLevel - Level from env (e.g. SUPERBLOCKS_SERVER_LOG_LEVEL)
|
|
148
141
|
* @returns Level to pass to Pino
|
|
149
142
|
*/
|
|
150
|
-
function getMinimumPinoLevelFromLoggingPolicy(loggingPolicy, envLevel) {
|
|
143
|
+
export function getMinimumPinoLevelFromLoggingPolicy(loggingPolicy, envLevel) {
|
|
151
144
|
let level;
|
|
152
145
|
const envLevelNormalized = envLevel.toLowerCase();
|
|
153
146
|
// Under local-obs the OTLP log processor exports INFO+ (see the override in
|
|
@@ -155,7 +148,7 @@ function getMinimumPinoLevelFromLoggingPolicy(loggingPolicy, envLevel) {
|
|
|
155
148
|
// deployment type keeps the ERRORS_ONLY 'warn' floor and INFO lines are dropped
|
|
156
149
|
// by Pino before they can reach the pino->OTel tee. See isLocalObsMode.
|
|
157
150
|
if (loggingPolicy.exportMode === LogExportMode.ERRORS_ONLY &&
|
|
158
|
-
!
|
|
151
|
+
!isLocalObsMode() &&
|
|
159
152
|
LEVELS_BELOW_WARN.has(envLevelNormalized)) {
|
|
160
153
|
level = "warn";
|
|
161
154
|
}
|
|
@@ -180,8 +173,8 @@ function getMinimumPinoLevelFromLoggingPolicy(loggingPolicy, envLevel) {
|
|
|
180
173
|
* which always enforces !canExportTier2 before applying the override.
|
|
181
174
|
* @returns Level to pass to Pino (envLevel or 'warn' for cloud-prem when envLevel is below warn)
|
|
182
175
|
*/
|
|
183
|
-
function getMinimumPinoLevelForDeployment(envLevel, deploymentType, exportModeOverride) {
|
|
184
|
-
const isCloudPrem = deploymentType ===
|
|
176
|
+
export function getMinimumPinoLevelForDeployment(envLevel, deploymentType, exportModeOverride) {
|
|
177
|
+
const isCloudPrem = deploymentType === DeploymentTypeEnum.CLOUD_PREM;
|
|
185
178
|
const deploymentDefault = isCloudPrem
|
|
186
179
|
? LogExportMode.ERRORS_ONLY
|
|
187
180
|
: LogExportMode.INFO_AND_ABOVE;
|
|
@@ -254,7 +247,7 @@ function shouldExportSeverity(severityNumber, mode) {
|
|
|
254
247
|
* 2. Filters by severity level based on exportMode
|
|
255
248
|
* 3. Sanitizes log body and attributes before forwarding
|
|
256
249
|
*/
|
|
257
|
-
class PolicyAwareLogProcessor {
|
|
250
|
+
export class PolicyAwareLogProcessor {
|
|
258
251
|
policy;
|
|
259
252
|
delegate;
|
|
260
253
|
constructor(policy, delegate) {
|
|
@@ -300,19 +293,19 @@ class PolicyAwareLogProcessor {
|
|
|
300
293
|
// Sanitize body - mutate in place
|
|
301
294
|
if (typeof logRecord.body === "string") {
|
|
302
295
|
let body = p.messageSecretPatterns.length > 0
|
|
303
|
-
?
|
|
296
|
+
? redactSensitivePatterns(logRecord.body, p.messageSecretPatterns)
|
|
304
297
|
: logRecord.body;
|
|
305
|
-
body =
|
|
306
|
-
body =
|
|
307
|
-
if (p.redactStackTraces &&
|
|
308
|
-
body =
|
|
298
|
+
body = redactSensitivePatterns(body, p.sensitivePatterns);
|
|
299
|
+
body = applyRedactPatterns(body, p.redactPatterns);
|
|
300
|
+
if (p.redactStackTraces && containsStackTrace(body)) {
|
|
301
|
+
body = redactStackTraceForExport(body, p.sensitivePatterns, p.messageSecretPatterns);
|
|
309
302
|
}
|
|
310
303
|
logRecord.body = body;
|
|
311
304
|
}
|
|
312
305
|
else if (logRecord.body && typeof logRecord.body === "object") {
|
|
313
306
|
if (!this.isPassthroughPolicy()) {
|
|
314
307
|
logRecord.body =
|
|
315
|
-
|
|
308
|
+
sanitizeLogObjectForExport(logRecord.body, p.forbiddenFields, 0, p.sensitivePatterns);
|
|
316
309
|
}
|
|
317
310
|
}
|
|
318
311
|
// Sanitize attributes - mutate in place
|
|
@@ -339,8 +332,8 @@ class PolicyAwareLogProcessor {
|
|
|
339
332
|
const sanitized = {};
|
|
340
333
|
for (const [key, value] of Object.entries(attributes)) {
|
|
341
334
|
const lowerKey = key.toLowerCase();
|
|
342
|
-
if (
|
|
343
|
-
sanitized[key] =
|
|
335
|
+
if (isSecretFieldFromPolicy(key, p.secretFieldNames, p.secretFieldPatterns)) {
|
|
336
|
+
sanitized[key] = REDACTED_PLACEHOLDER;
|
|
344
337
|
continue;
|
|
345
338
|
}
|
|
346
339
|
if (p.forbiddenFields.has(lowerKey)) {
|
|
@@ -348,18 +341,18 @@ class PolicyAwareLogProcessor {
|
|
|
348
341
|
}
|
|
349
342
|
if (typeof value === "string") {
|
|
350
343
|
let str = p.messageSecretPatterns.length > 0
|
|
351
|
-
?
|
|
344
|
+
? redactSensitivePatterns(value, p.messageSecretPatterns)
|
|
352
345
|
: value;
|
|
353
|
-
str =
|
|
354
|
-
str =
|
|
346
|
+
str = redactSensitivePatterns(str, p.sensitivePatterns);
|
|
347
|
+
str = applyRedactPatterns(str, p.redactPatterns);
|
|
355
348
|
if (p.redactStackTraces) {
|
|
356
|
-
if (
|
|
357
|
-
sanitized[key] =
|
|
358
|
-
?
|
|
359
|
-
:
|
|
349
|
+
if (isStackAttributeKey(key)) {
|
|
350
|
+
sanitized[key] = containsStackTrace(str)
|
|
351
|
+
? redactStackTraceForExport(str, p.sensitivePatterns, p.messageSecretPatterns)
|
|
352
|
+
: STACK_TRACE_REDACTED_PLACEHOLDER;
|
|
360
353
|
}
|
|
361
|
-
else if (
|
|
362
|
-
sanitized[key] =
|
|
354
|
+
else if (containsStackTrace(str)) {
|
|
355
|
+
sanitized[key] = redactStackTraceForExport(str, p.sensitivePatterns, p.messageSecretPatterns);
|
|
363
356
|
}
|
|
364
357
|
else {
|
|
365
358
|
sanitized[key] = str;
|
|
@@ -372,7 +365,7 @@ class PolicyAwareLogProcessor {
|
|
|
372
365
|
else if (value &&
|
|
373
366
|
typeof value === "object" &&
|
|
374
367
|
!this.isPassthroughPolicy()) {
|
|
375
|
-
sanitized[key] =
|
|
368
|
+
sanitized[key] = sanitizeLogObjectForExport(value, p.forbiddenFields, 0, p.sensitivePatterns);
|
|
376
369
|
}
|
|
377
370
|
else {
|
|
378
371
|
sanitized[key] = value;
|
|
@@ -393,5 +386,4 @@ class PolicyAwareLogProcessor {
|
|
|
393
386
|
return this.delegate.forceFlush();
|
|
394
387
|
}
|
|
395
388
|
}
|
|
396
|
-
exports.PolicyAwareLogProcessor = PolicyAwareLogProcessor;
|
|
397
389
|
//# sourceMappingURL=log-processor.js.map
|