@microsoft/opentelemetry 0.1.0-beta.1 → 1.0.1
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 +27 -11
- package/dist/commonjs/a365/configuration/A365Configuration.d.ts +32 -0
- package/dist/commonjs/a365/configuration/A365Configuration.d.ts.map +1 -1
- package/dist/commonjs/a365/configuration/A365Configuration.js +73 -4
- package/dist/commonjs/a365/configuration/A365Configuration.js.map +1 -1
- package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts +49 -0
- package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
- package/dist/commonjs/a365/constants.d.ts +1 -1
- package/dist/commonjs/a365/constants.d.ts.map +1 -1
- package/dist/commonjs/a365/hosting/types.d.ts +1 -1
- package/dist/commonjs/a365/hosting/types.d.ts.map +1 -1
- package/dist/commonjs/azureMonitor/index.d.ts +9 -1
- package/dist/commonjs/azureMonitor/index.d.ts.map +1 -1
- package/dist/commonjs/azureMonitor/index.js +13 -18
- package/dist/commonjs/azureMonitor/index.js.map +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/liveMetrics.js +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/utils.d.ts.map +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/utils.js +4 -6
- package/dist/commonjs/azureMonitor/metrics/quickpulse/utils.js.map +1 -1
- package/dist/commonjs/distro/distro.d.ts +3 -1
- package/dist/commonjs/distro/distro.d.ts.map +1 -1
- package/dist/commonjs/distro/distro.js +128 -45
- package/dist/commonjs/distro/distro.js.map +1 -1
- package/dist/commonjs/genai/instrumentations/langchain/langchainTraceInstrumentor.d.ts +3 -1
- package/dist/commonjs/genai/instrumentations/langchain/langchainTraceInstrumentor.d.ts.map +1 -1
- package/dist/commonjs/genai/instrumentations/langchain/langchainTraceInstrumentor.js +60 -9
- package/dist/commonjs/genai/instrumentations/langchain/langchainTraceInstrumentor.js.map +1 -1
- package/dist/commonjs/sdkstats/index.d.ts +18 -0
- package/dist/commonjs/sdkstats/index.d.ts.map +1 -0
- package/dist/commonjs/sdkstats/index.js +37 -0
- package/dist/commonjs/sdkstats/index.js.map +1 -0
- package/dist/commonjs/sdkstats/manager.d.ts +31 -0
- package/dist/commonjs/sdkstats/manager.d.ts.map +1 -0
- package/dist/commonjs/sdkstats/manager.js +190 -0
- package/dist/commonjs/sdkstats/manager.js.map +1 -0
- package/dist/commonjs/sdkstats/metrics.d.ts +20 -0
- package/dist/commonjs/sdkstats/metrics.d.ts.map +1 -0
- package/dist/commonjs/sdkstats/metrics.js +84 -0
- package/dist/commonjs/sdkstats/metrics.js.map +1 -0
- package/dist/commonjs/sdkstats/state.d.ts +58 -0
- package/dist/commonjs/sdkstats/state.d.ts.map +1 -0
- package/dist/commonjs/sdkstats/state.js +94 -0
- package/dist/commonjs/sdkstats/state.js.map +1 -0
- package/dist/commonjs/types.d.ts +6 -2
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +5 -1
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/utils/common.js +2 -2
- package/dist/commonjs/utils/common.js.map +1 -1
- package/dist/commonjs/utils/index.d.ts +2 -0
- package/dist/commonjs/utils/index.d.ts.map +1 -1
- package/dist/commonjs/utils/index.js +5 -1
- package/dist/commonjs/utils/index.js.map +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -0
- package/dist/commonjs/{azureMonitor/utils → utils}/opentelemetryInstrumentationPatcher.js +13 -11
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js.map +1 -0
- package/dist/commonjs/{azureMonitor/utils → utils}/statsbeat.d.ts +1 -1
- package/dist/commonjs/utils/statsbeat.d.ts.map +1 -0
- package/dist/commonjs/{azureMonitor/utils → utils}/statsbeat.js +8 -8
- package/dist/commonjs/utils/statsbeat.js.map +1 -0
- package/dist/esm/a365/configuration/A365Configuration.d.ts +32 -0
- package/dist/esm/a365/configuration/A365Configuration.d.ts.map +1 -1
- package/dist/esm/a365/configuration/A365Configuration.js +73 -4
- package/dist/esm/a365/configuration/A365Configuration.js.map +1 -1
- package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts +49 -0
- package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
- package/dist/esm/a365/constants.d.ts +1 -1
- package/dist/esm/a365/constants.d.ts.map +1 -1
- package/dist/esm/a365/hosting/types.d.ts +1 -1
- package/dist/esm/a365/hosting/types.d.ts.map +1 -1
- package/dist/esm/azureMonitor/index.d.ts +9 -1
- package/dist/esm/azureMonitor/index.d.ts.map +1 -1
- package/dist/esm/azureMonitor/index.js +12 -18
- package/dist/esm/azureMonitor/index.js.map +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/liveMetrics.js +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/utils.d.ts.map +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/utils.js +5 -7
- package/dist/esm/azureMonitor/metrics/quickpulse/utils.js.map +1 -1
- package/dist/esm/distro/distro.d.ts +3 -1
- package/dist/esm/distro/distro.d.ts.map +1 -1
- package/dist/esm/distro/distro.js +129 -46
- package/dist/esm/distro/distro.js.map +1 -1
- package/dist/esm/genai/instrumentations/langchain/langchainTraceInstrumentor.d.ts +3 -1
- package/dist/esm/genai/instrumentations/langchain/langchainTraceInstrumentor.d.ts.map +1 -1
- package/dist/esm/genai/instrumentations/langchain/langchainTraceInstrumentor.js +27 -9
- package/dist/esm/genai/instrumentations/langchain/langchainTraceInstrumentor.js.map +1 -1
- package/dist/esm/sdkstats/index.d.ts +18 -0
- package/dist/esm/sdkstats/index.d.ts.map +1 -0
- package/dist/esm/sdkstats/index.js +20 -0
- package/dist/esm/sdkstats/index.js.map +1 -0
- package/dist/esm/sdkstats/manager.d.ts +31 -0
- package/dist/esm/sdkstats/manager.d.ts.map +1 -0
- package/dist/esm/sdkstats/manager.js +186 -0
- package/dist/esm/sdkstats/manager.js.map +1 -0
- package/dist/esm/sdkstats/metrics.d.ts +20 -0
- package/dist/esm/sdkstats/metrics.d.ts.map +1 -0
- package/dist/esm/sdkstats/metrics.js +77 -0
- package/dist/esm/sdkstats/metrics.js.map +1 -0
- package/dist/esm/sdkstats/state.d.ts +58 -0
- package/dist/esm/sdkstats/state.d.ts.map +1 -0
- package/dist/esm/sdkstats/state.js +83 -0
- package/dist/esm/sdkstats/state.js.map +1 -0
- package/dist/esm/types.d.ts +6 -2
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +5 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/common.js +2 -2
- package/dist/esm/utils/common.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -0
- package/dist/esm/{azureMonitor/utils → utils}/opentelemetryInstrumentationPatcher.js +13 -11
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js.map +1 -0
- package/dist/esm/{azureMonitor/utils → utils}/statsbeat.d.ts +1 -1
- package/dist/esm/utils/statsbeat.d.ts.map +1 -0
- package/dist/esm/{azureMonitor/utils → utils}/statsbeat.js +8 -8
- package/dist/esm/utils/statsbeat.js.map +1 -0
- package/package.json +2 -2
- package/dist/commonjs/azureMonitor/utils/opentelemetryInstrumentationPatcher.d.ts.map +0 -1
- package/dist/commonjs/azureMonitor/utils/opentelemetryInstrumentationPatcher.js.map +0 -1
- package/dist/commonjs/azureMonitor/utils/statsbeat.d.ts.map +0 -1
- package/dist/commonjs/azureMonitor/utils/statsbeat.js.map +0 -1
- package/dist/esm/azureMonitor/utils/opentelemetryInstrumentationPatcher.d.ts.map +0 -1
- package/dist/esm/azureMonitor/utils/opentelemetryInstrumentationPatcher.js.map +0 -1
- package/dist/esm/azureMonitor/utils/statsbeat.d.ts.map +0 -1
- package/dist/esm/azureMonitor/utils/statsbeat.js.map +0 -1
- /package/dist/commonjs/{azureMonitor/utils → utils}/opentelemetryInstrumentationPatcher.d.ts +0 -0
- /package/dist/esm/{azureMonitor/utils → utils}/opentelemetryInstrumentationPatcher.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchainTraceInstrumentor.js","sourceRoot":"","sources":["../../../../../src/genai/instrumentations/langchain/langchainTraceInstrumentor.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;AAClC,kGAAkG;AAClG,4FAA4F
|
|
1
|
+
{"version":3,"file":"langchainTraceInstrumentor.js","sourceRoot":"","sources":["../../../../../src/genai/instrumentations/langchain/langchainTraceInstrumentor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK self-telemetry (SDKStats) for the Microsoft OpenTelemetry Distro.
|
|
3
|
+
*
|
|
4
|
+
* Backend-agnostic SDK health and usage telemetry that works regardless
|
|
5
|
+
* of which export backends are enabled (Azure Monitor, OTLP, A365,
|
|
6
|
+
* Console). Tracks:
|
|
7
|
+
*
|
|
8
|
+
* - **Features** — which distro features are active (A365, OTLP, console,
|
|
9
|
+
* live metrics, browser SDK loader, ...)
|
|
10
|
+
* - **Instrumentations** — which library instrumentations are enabled
|
|
11
|
+
*
|
|
12
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/__init__.py` from the
|
|
13
|
+
* Python distro.
|
|
14
|
+
*/
|
|
15
|
+
export { SdkStatsDistroFeature, SDKSTATS_DISABLED_ENV, APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL, isSdkStatsEnabled, setSdkStatsFeature, getSdkStatsFeatureFlags, setSdkStatsInstrumentation, getSdkStatsInstrumentationFlags, setSdkStatsShutdown, getSdkStatsShutdown, } from "./state.js";
|
|
16
|
+
export { SdkStatsMetrics, FEATURE_TYPE_FEATURE, FEATURE_TYPE_INSTRUMENTATION } from "./metrics.js";
|
|
17
|
+
export { SdkStatsManager } from "./manager.js";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdkstats/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,0CAA0C,EAC1C,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.SdkStatsManager = exports.FEATURE_TYPE_INSTRUMENTATION = exports.FEATURE_TYPE_FEATURE = exports.SdkStatsMetrics = exports.getSdkStatsShutdown = exports.setSdkStatsShutdown = exports.getSdkStatsInstrumentationFlags = exports.setSdkStatsInstrumentation = exports.getSdkStatsFeatureFlags = exports.setSdkStatsFeature = exports.isSdkStatsEnabled = exports.APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL = exports.SDKSTATS_DISABLED_ENV = exports.SdkStatsDistroFeature = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* SDK self-telemetry (SDKStats) for the Microsoft OpenTelemetry Distro.
|
|
8
|
+
*
|
|
9
|
+
* Backend-agnostic SDK health and usage telemetry that works regardless
|
|
10
|
+
* of which export backends are enabled (Azure Monitor, OTLP, A365,
|
|
11
|
+
* Console). Tracks:
|
|
12
|
+
*
|
|
13
|
+
* - **Features** — which distro features are active (A365, OTLP, console,
|
|
14
|
+
* live metrics, browser SDK loader, ...)
|
|
15
|
+
* - **Instrumentations** — which library instrumentations are enabled
|
|
16
|
+
*
|
|
17
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/__init__.py` from the
|
|
18
|
+
* Python distro.
|
|
19
|
+
*/
|
|
20
|
+
var state_js_1 = require("./state.js");
|
|
21
|
+
Object.defineProperty(exports, "SdkStatsDistroFeature", { enumerable: true, get: function () { return state_js_1.SdkStatsDistroFeature; } });
|
|
22
|
+
Object.defineProperty(exports, "SDKSTATS_DISABLED_ENV", { enumerable: true, get: function () { return state_js_1.SDKSTATS_DISABLED_ENV; } });
|
|
23
|
+
Object.defineProperty(exports, "APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL", { enumerable: true, get: function () { return state_js_1.APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL; } });
|
|
24
|
+
Object.defineProperty(exports, "isSdkStatsEnabled", { enumerable: true, get: function () { return state_js_1.isSdkStatsEnabled; } });
|
|
25
|
+
Object.defineProperty(exports, "setSdkStatsFeature", { enumerable: true, get: function () { return state_js_1.setSdkStatsFeature; } });
|
|
26
|
+
Object.defineProperty(exports, "getSdkStatsFeatureFlags", { enumerable: true, get: function () { return state_js_1.getSdkStatsFeatureFlags; } });
|
|
27
|
+
Object.defineProperty(exports, "setSdkStatsInstrumentation", { enumerable: true, get: function () { return state_js_1.setSdkStatsInstrumentation; } });
|
|
28
|
+
Object.defineProperty(exports, "getSdkStatsInstrumentationFlags", { enumerable: true, get: function () { return state_js_1.getSdkStatsInstrumentationFlags; } });
|
|
29
|
+
Object.defineProperty(exports, "setSdkStatsShutdown", { enumerable: true, get: function () { return state_js_1.setSdkStatsShutdown; } });
|
|
30
|
+
Object.defineProperty(exports, "getSdkStatsShutdown", { enumerable: true, get: function () { return state_js_1.getSdkStatsShutdown; } });
|
|
31
|
+
var metrics_js_1 = require("./metrics.js");
|
|
32
|
+
Object.defineProperty(exports, "SdkStatsMetrics", { enumerable: true, get: function () { return metrics_js_1.SdkStatsMetrics; } });
|
|
33
|
+
Object.defineProperty(exports, "FEATURE_TYPE_FEATURE", { enumerable: true, get: function () { return metrics_js_1.FEATURE_TYPE_FEATURE; } });
|
|
34
|
+
Object.defineProperty(exports, "FEATURE_TYPE_INSTRUMENTATION", { enumerable: true, get: function () { return metrics_js_1.FEATURE_TYPE_INSTRUMENTATION; } });
|
|
35
|
+
var manager_js_1 = require("./manager.js");
|
|
36
|
+
Object.defineProperty(exports, "SdkStatsManager", { enumerable: true, get: function () { return manager_js_1.SdkStatsManager; } });
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdkstats/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;;;;;;;;;;GAaG;AAEH,uCAWoB;AAVlB,iHAAA,qBAAqB,OAAA;AACrB,iHAAA,qBAAqB,OAAA;AACrB,sIAAA,0CAA0C,OAAA;AAC1C,6GAAA,iBAAiB,OAAA;AACjB,8GAAA,kBAAkB,OAAA;AAClB,mHAAA,uBAAuB,OAAA;AACvB,sHAAA,0BAA0B,OAAA;AAC1B,2HAAA,+BAA+B,OAAA;AAC/B,+GAAA,mBAAmB,OAAA;AACnB,+GAAA,mBAAmB,OAAA;AAGrB,2CAAmG;AAA1F,6GAAA,eAAe,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AAAE,0HAAA,4BAA4B,OAAA;AAE5E,2CAA+C;AAAtC,6GAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Singleton manager for the standalone SDKStats pipeline.
|
|
3
|
+
*
|
|
4
|
+
* The manager is safe to call `initialize()` on multiple times — only the
|
|
5
|
+
* first invocation takes effect.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SdkStatsManager {
|
|
8
|
+
private static _instance;
|
|
9
|
+
private _meterProvider;
|
|
10
|
+
private _metrics;
|
|
11
|
+
private _initialized;
|
|
12
|
+
private _initialExportTimer;
|
|
13
|
+
static getInstance(): SdkStatsManager;
|
|
14
|
+
get isInitialized(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Set up SDKStats export via the Azure Monitor statsbeat endpoint.
|
|
17
|
+
*
|
|
18
|
+
* Returns `true` if the standalone pipeline was initialized (or was
|
|
19
|
+
* already initialized), `false` if SDKStats are disabled via env var
|
|
20
|
+
* or initialization failed.
|
|
21
|
+
*/
|
|
22
|
+
initialize(): Promise<boolean>;
|
|
23
|
+
shutdown(): Promise<boolean>;
|
|
24
|
+
private _cleanup;
|
|
25
|
+
/**
|
|
26
|
+
* @internal Test-only: discard the singleton so a fresh instance is
|
|
27
|
+
* created on the next `getInstance()` call.
|
|
28
|
+
*/
|
|
29
|
+
static _resetForTest(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/sdkstats/manager.ts"],"names":[],"mappings":"AAyDA;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,CAA8B;IAEtD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAA6B;IAExD,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IA2E9B,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAmBlC,OAAO,CAAC,QAAQ;IAUhB;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;CAG7B"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.SdkStatsManager = void 0;
|
|
6
|
+
/**
|
|
7
|
+
* SDKStats manager — sends SDK self-telemetry to the Application Insights
|
|
8
|
+
* statsbeat ingestion endpoint, independent of the customer's telemetry
|
|
9
|
+
* pipeline.
|
|
10
|
+
*
|
|
11
|
+
* When the full Azure Monitor pipeline is enabled, the exporter package's
|
|
12
|
+
* own statsbeat machinery handles SDKStats emission and the distro just
|
|
13
|
+
* publishes its bits via the `AZURE_MONITOR_STATSBEAT_FEATURES` env var
|
|
14
|
+
* for the exporter to read. For A365-only, OTLP-only, or Console-only
|
|
15
|
+
* customers this manager spins up a standalone `MeterProvider` →
|
|
16
|
+
* `AzureMonitorStatsbeatExporter` pipeline so feature/instrumentation
|
|
17
|
+
* SDKStats are still collected.
|
|
18
|
+
*
|
|
19
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/_manager.py` from the
|
|
20
|
+
* Python distro.
|
|
21
|
+
*/
|
|
22
|
+
const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
|
|
23
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
24
|
+
const node_module_1 = require("node:module");
|
|
25
|
+
const node_url_1 = require("node:url");
|
|
26
|
+
const node_path_1 = require("node:path");
|
|
27
|
+
const index_js_1 = require("../shared/logging/index.js");
|
|
28
|
+
const module_js_1 = require("../shared/module.js");
|
|
29
|
+
const state_js_1 = require("./state.js");
|
|
30
|
+
const metrics_js_1 = require("./metrics.js");
|
|
31
|
+
/**
|
|
32
|
+
* Default long export interval (24 hours) for Feature/Instrumentation
|
|
33
|
+
* SDKStats per the Application Insights SDKStats specification.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
const DEFAULT_LONG_EXPORT_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
38
|
+
/**
|
|
39
|
+
* Override env var: long export interval in seconds, per the spec.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
const SDKSTATS_LONG_EXPORT_INTERVAL_ENV = "APPLICATIONINSIGHTS_STATS_LONG_EXPORT_INTERVAL";
|
|
44
|
+
/**
|
|
45
|
+
* Initial-export delay (15 seconds) before the first long-interval flush.
|
|
46
|
+
*
|
|
47
|
+
* The spec recommends this delay specifically for the Node.js SDK to
|
|
48
|
+
* avoid short-running CLI-style applications generating excess SDKStats
|
|
49
|
+
* traffic on every startup.
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
const INITIAL_EXPORT_DELAY_MS = 15 * 1000;
|
|
54
|
+
/**
|
|
55
|
+
* Singleton manager for the standalone SDKStats pipeline.
|
|
56
|
+
*
|
|
57
|
+
* The manager is safe to call `initialize()` on multiple times — only the
|
|
58
|
+
* first invocation takes effect.
|
|
59
|
+
*/
|
|
60
|
+
class SdkStatsManager {
|
|
61
|
+
static _instance;
|
|
62
|
+
_meterProvider;
|
|
63
|
+
_metrics;
|
|
64
|
+
_initialized = false;
|
|
65
|
+
_initialExportTimer;
|
|
66
|
+
static getInstance() {
|
|
67
|
+
if (!SdkStatsManager._instance) {
|
|
68
|
+
SdkStatsManager._instance = new SdkStatsManager();
|
|
69
|
+
}
|
|
70
|
+
return SdkStatsManager._instance;
|
|
71
|
+
}
|
|
72
|
+
get isInitialized() {
|
|
73
|
+
return this._initialized;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set up SDKStats export via the Azure Monitor statsbeat endpoint.
|
|
77
|
+
*
|
|
78
|
+
* Returns `true` if the standalone pipeline was initialized (or was
|
|
79
|
+
* already initialized), `false` if SDKStats are disabled via env var
|
|
80
|
+
* or initialization failed.
|
|
81
|
+
*/
|
|
82
|
+
async initialize() {
|
|
83
|
+
if (!(0, state_js_1.isSdkStatsEnabled)()) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
if (this._initialized) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
// The exporter package's `exports` map blocks subpath imports, so
|
|
91
|
+
// we resolve the package's own package.json to find its install
|
|
92
|
+
// location on disk and require the internal modules by absolute
|
|
93
|
+
// path. The statsbeat exporter is the correct vehicle for SDKStats
|
|
94
|
+
// — it tags envelopes with the statsbeat ikey/endpoint and avoids
|
|
95
|
+
// recursive statsbeat-of-statsbeat reporting via its
|
|
96
|
+
// `isStatsbeatExporter` flag.
|
|
97
|
+
const baseUrl = (0, module_js_1.getModuleParentURL)() ?? (0, node_url_1.pathToFileURL)(process.cwd() + "/").href;
|
|
98
|
+
const requireFromHere = (0, node_module_1.createRequire)(baseUrl);
|
|
99
|
+
const exporterPackageJsonPath = requireFromHere.resolve("@azure/monitor-opentelemetry-exporter/package.json");
|
|
100
|
+
const exporterPackageDir = (0, node_path_1.dirname)(exporterPackageJsonPath);
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
|
+
const statsbeatExporterModule = requireFromHere((0, node_path_1.join)(exporterPackageDir, "dist", "esm", "export", "statsbeat", "statsbeatExporter.js"));
|
|
103
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
|
+
const statsbeatTypesModule = requireFromHere((0, node_path_1.join)(exporterPackageDir, "dist", "esm", "export", "statsbeat", "types.js"));
|
|
105
|
+
const AzureMonitorStatsbeatExporter = statsbeatExporterModule.AzureMonitorStatsbeatExporter;
|
|
106
|
+
const NON_EU_CONNECTION_STRING = statsbeatTypesModule.NON_EU_CONNECTION_STRING;
|
|
107
|
+
const exporter = new AzureMonitorStatsbeatExporter({
|
|
108
|
+
connectionString: NON_EU_CONNECTION_STRING,
|
|
109
|
+
disableOfflineStorage: true,
|
|
110
|
+
});
|
|
111
|
+
const reader = new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
112
|
+
exporter,
|
|
113
|
+
exportIntervalMillis: resolveExportInterval(),
|
|
114
|
+
});
|
|
115
|
+
this._meterProvider = new sdk_metrics_1.MeterProvider({
|
|
116
|
+
readers: [reader],
|
|
117
|
+
resource: (0, resources_1.resourceFromAttributes)({}),
|
|
118
|
+
});
|
|
119
|
+
this._metrics = new metrics_js_1.SdkStatsMetrics(this._meterProvider);
|
|
120
|
+
this._initialized = true;
|
|
121
|
+
(0, state_js_1.setSdkStatsShutdown)(false);
|
|
122
|
+
// Spec: long-interval SDKStats should perform an initial export
|
|
123
|
+
// shortly after startup (rather than waiting a full 24h cycle), but
|
|
124
|
+
// delay ~15s so short-running Node.js CLI apps don't generate
|
|
125
|
+
// excess startup traffic. `unref()` so the timer never blocks
|
|
126
|
+
// process shutdown.
|
|
127
|
+
this._initialExportTimer = setTimeout(() => {
|
|
128
|
+
this._meterProvider?.forceFlush().catch((err) => {
|
|
129
|
+
index_js_1.Logger.getInstance().debug("[SDKStats] Initial forceFlush failed.", err);
|
|
130
|
+
});
|
|
131
|
+
}, INITIAL_EXPORT_DELAY_MS);
|
|
132
|
+
this._initialExportTimer.unref?.();
|
|
133
|
+
index_js_1.Logger.getInstance().debug("[SDKStats] Standalone SDKStats pipeline initialized.");
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
index_js_1.Logger.getInstance().debug("[SDKStats] Failed to initialize standalone SDKStats pipeline; SDKStats will not be exported.", error);
|
|
138
|
+
this._cleanup();
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async shutdown() {
|
|
143
|
+
if (!this._initialized) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
if (this._initialExportTimer) {
|
|
147
|
+
clearTimeout(this._initialExportTimer);
|
|
148
|
+
this._initialExportTimer = undefined;
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
await this._meterProvider?.shutdown();
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
index_js_1.Logger.getInstance().debug("[SDKStats] Error shutting down standalone pipeline.", error);
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
this._cleanup();
|
|
158
|
+
(0, state_js_1.setSdkStatsShutdown)(true);
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
_cleanup() {
|
|
163
|
+
this._meterProvider = undefined;
|
|
164
|
+
this._metrics = undefined;
|
|
165
|
+
this._initialized = false;
|
|
166
|
+
if (this._initialExportTimer) {
|
|
167
|
+
clearTimeout(this._initialExportTimer);
|
|
168
|
+
this._initialExportTimer = undefined;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @internal Test-only: discard the singleton so a fresh instance is
|
|
173
|
+
* created on the next `getInstance()` call.
|
|
174
|
+
*/
|
|
175
|
+
static _resetForTest() {
|
|
176
|
+
SdkStatsManager._instance = undefined;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.SdkStatsManager = SdkStatsManager;
|
|
180
|
+
function resolveExportInterval() {
|
|
181
|
+
const raw = process.env[SDKSTATS_LONG_EXPORT_INTERVAL_ENV];
|
|
182
|
+
if (!raw)
|
|
183
|
+
return DEFAULT_LONG_EXPORT_INTERVAL_MS;
|
|
184
|
+
const seconds = Number(raw);
|
|
185
|
+
if (!Number.isFinite(seconds) || seconds <= 0) {
|
|
186
|
+
return DEFAULT_LONG_EXPORT_INTERVAL_MS;
|
|
187
|
+
}
|
|
188
|
+
return Math.floor(seconds * 1000);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/sdkstats/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { MeterProvider } from "@opentelemetry/sdk-metrics";
|
|
2
|
+
/**
|
|
3
|
+
* Feature SDKStats `type` dimension values, per the Application Insights
|
|
4
|
+
* SDKStats specification.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const FEATURE_TYPE_FEATURE = 0;
|
|
9
|
+
export declare const FEATURE_TYPE_INSTRUMENTATION = 1;
|
|
10
|
+
/**
|
|
11
|
+
* Registers observable gauges that emit feature/instrumentation data
|
|
12
|
+
* derived from the global SDKStats state.
|
|
13
|
+
*/
|
|
14
|
+
export declare class SdkStatsMetrics {
|
|
15
|
+
private readonly commonAttributes;
|
|
16
|
+
constructor(meterProvider: MeterProvider, distroVersion?: string);
|
|
17
|
+
private observeFeatures;
|
|
18
|
+
private observeInstrumentations;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/sdkstats/metrics.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMhE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAM9C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;gBAE9C,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,MAAM;IAqBhE,OAAO,CAAC,eAAe,CAcrB;IAEF,OAAO,CAAC,uBAAuB,CAU7B;CACH"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SdkStatsMetrics = exports.FEATURE_TYPE_INSTRUMENTATION = exports.FEATURE_TYPE_FEATURE = void 0;
|
|
9
|
+
/**
|
|
10
|
+
* Observable metric callbacks for SDK self-telemetry.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors the Azure Monitor Exporter's feature/instrumentation gauge
|
|
13
|
+
* pattern, but is backend-agnostic — the metrics are collected into a
|
|
14
|
+
* caller-supplied `MeterProvider`.
|
|
15
|
+
*
|
|
16
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/_metrics.py` from the
|
|
17
|
+
* Python distro.
|
|
18
|
+
*/
|
|
19
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
20
|
+
const types_js_1 = require("../types.js");
|
|
21
|
+
const state_js_1 = require("./state.js");
|
|
22
|
+
/**
|
|
23
|
+
* Feature SDKStats `type` dimension values, per the Application Insights
|
|
24
|
+
* SDKStats specification.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
exports.FEATURE_TYPE_FEATURE = 0;
|
|
29
|
+
exports.FEATURE_TYPE_INSTRUMENTATION = 1;
|
|
30
|
+
const FEATURE_METRIC_NAME = "Feature";
|
|
31
|
+
const INSTRUMENTATION_METRIC_NAME = "Feature.instrumentations";
|
|
32
|
+
const STATSBEAT_LANGUAGE = "node";
|
|
33
|
+
/**
|
|
34
|
+
* Registers observable gauges that emit feature/instrumentation data
|
|
35
|
+
* derived from the global SDKStats state.
|
|
36
|
+
*/
|
|
37
|
+
class SdkStatsMetrics {
|
|
38
|
+
commonAttributes;
|
|
39
|
+
constructor(meterProvider, distroVersion) {
|
|
40
|
+
const meter = meterProvider.getMeter("microsoft.opentelemetry.sdkstats");
|
|
41
|
+
this.commonAttributes = {
|
|
42
|
+
runtimeVersion: process.version,
|
|
43
|
+
os: node_os_1.default.type(),
|
|
44
|
+
language: STATSBEAT_LANGUAGE,
|
|
45
|
+
version: distroVersion || types_js_1.MICROSOFT_OPENTELEMETRY_VERSION,
|
|
46
|
+
};
|
|
47
|
+
const featureGauge = meter.createObservableGauge(FEATURE_METRIC_NAME, {
|
|
48
|
+
description: "SDKStats metric tracking enabled features",
|
|
49
|
+
});
|
|
50
|
+
featureGauge.addCallback(this.observeFeatures);
|
|
51
|
+
const instrumentationGauge = meter.createObservableGauge(INSTRUMENTATION_METRIC_NAME, {
|
|
52
|
+
description: "SDKStats metric tracking enabled instrumentations",
|
|
53
|
+
});
|
|
54
|
+
instrumentationGauge.addCallback(this.observeInstrumentations);
|
|
55
|
+
}
|
|
56
|
+
observeFeatures = (result) => {
|
|
57
|
+
const featureBits = (0, state_js_1.getSdkStatsFeatureFlags)();
|
|
58
|
+
if (featureBits === 0) {
|
|
59
|
+
// Spec: don't send Feature SDKStats when the feature list is empty.
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
result.observe(1, {
|
|
63
|
+
...this.commonAttributes,
|
|
64
|
+
// Numeric bitmasks are sent as strings because customDimensions are
|
|
65
|
+
// `Map<string, string>` server-side (per the spec's "send as long
|
|
66
|
+
// string" guidance).
|
|
67
|
+
feature: String(featureBits),
|
|
68
|
+
type: exports.FEATURE_TYPE_FEATURE,
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
observeInstrumentations = (result) => {
|
|
72
|
+
const instrBits = (0, state_js_1.getSdkStatsInstrumentationFlags)();
|
|
73
|
+
if (instrBits === 0) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
result.observe(1, {
|
|
77
|
+
...this.commonAttributes,
|
|
78
|
+
feature: String(instrBits),
|
|
79
|
+
type: exports.FEATURE_TYPE_INSTRUMENTATION,
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
exports.SdkStatsMetrics = SdkStatsMetrics;
|
|
84
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/sdkstats/metrics.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC;;;;;;;;;GASG;AAEH,sDAAyB;AAIzB,0CAA8D;AAC9D,yCAAsF;AAEtF;;;;;GAKG;AACU,QAAA,oBAAoB,GAAG,CAAC,CAAC;AACzB,QAAA,4BAA4B,GAAG,CAAC,CAAC;AAE9C,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AAC/D,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC;;;GAGG;AACH,MAAa,eAAe;IACT,gBAAgB,CAAyB;IAE1D,YAAY,aAA4B,EAAE,aAAsB;QAC9D,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAEzE,IAAI,CAAC,gBAAgB,GAAG;YACtB,cAAc,EAAE,OAAO,CAAC,OAAO;YAC/B,EAAE,EAAE,iBAAE,CAAC,IAAI,EAAE;YACb,QAAQ,EAAE,kBAAkB;YAC5B,OAAO,EAAE,aAAa,IAAI,0CAA+B;SAC1D,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,qBAAqB,CAAC,mBAAmB,EAAE;YACpE,WAAW,EAAE,2CAA2C;SACzD,CAAC,CAAC;QACH,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/C,MAAM,oBAAoB,GAAG,KAAK,CAAC,qBAAqB,CAAC,2BAA2B,EAAE;YACpF,WAAW,EAAE,mDAAmD;SACjE,CAAC,CAAC;QACH,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACjE,CAAC;IAEO,eAAe,GAAG,CAAC,MAAwB,EAAQ,EAAE;QAC3D,MAAM,WAAW,GAAG,IAAA,kCAAuB,GAAE,CAAC;QAC9C,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,oEAAoE;YACpE,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;YAChB,GAAG,IAAI,CAAC,gBAAgB;YACxB,oEAAoE;YACpE,kEAAkE;YAClE,qBAAqB;YACrB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC;YAC5B,IAAI,EAAE,4BAAoB;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,uBAAuB,GAAG,CAAC,MAAwB,EAAQ,EAAE;QACnE,MAAM,SAAS,GAAG,IAAA,0CAA+B,GAAE,CAAC;QACpD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;YAChB,GAAG,IAAI,CAAC,gBAAgB;YACxB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;YAC1B,IAAI,EAAE,oCAA4B;SACnC,CAAC,CAAC;IACL,CAAC,CAAC;CACH;AAnDD,0CAmDC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global, process-wide state for SDK self-telemetry (SDKStats).
|
|
3
|
+
*
|
|
4
|
+
* Feature and instrumentation flags are stored as bitmasks so they can be
|
|
5
|
+
* combined and reported efficiently. The bitmask values are intentionally
|
|
6
|
+
* compatible with the Azure Monitor Exporter statsbeat encoding so that
|
|
7
|
+
* Azure Monitor consumers see no behavioural change when the distro
|
|
8
|
+
* bridges its bits into the exporter's existing pipeline.
|
|
9
|
+
*
|
|
10
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/_state.py` from the
|
|
11
|
+
* Python distro (microsoft/opentelemetry-distro-python#89).
|
|
12
|
+
*/
|
|
13
|
+
import { StatsbeatFeature, StatsbeatInstrumentation } from "../types.js";
|
|
14
|
+
/**
|
|
15
|
+
* Distro-specific feature flags, in addition to the
|
|
16
|
+
* {@link StatsbeatFeature} flags shared with the Azure Monitor exporter.
|
|
17
|
+
*
|
|
18
|
+
* These bit values intentionally start above the values used by
|
|
19
|
+
* {@link StatsbeatFeature} so that distro bits and exporter bits can be
|
|
20
|
+
* OR-combined into a single 64-bit mask without collision.
|
|
21
|
+
*/
|
|
22
|
+
export declare enum SdkStatsDistroFeature {
|
|
23
|
+
NONE = 0,
|
|
24
|
+
A365_EXPORT = 512,
|
|
25
|
+
OTLP_EXPORT = 1024,
|
|
26
|
+
CONSOLE_EXPORT = 2048
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Environment variable that disables SDKStats globally.
|
|
30
|
+
*
|
|
31
|
+
* When set to a truthy value (`true`, `1`, `yes`, `on`), the standalone
|
|
32
|
+
* SDKStats pipeline is not started and no SDKStats data is emitted.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare const SDKSTATS_DISABLED_ENV = "MICROSOFT_OTEL_SDKSTATS_DISABLED";
|
|
37
|
+
/**
|
|
38
|
+
* Legacy Azure Monitor kill-switch, also honoured for parity with the
|
|
39
|
+
* exporter package.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
export declare const APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL = "APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL";
|
|
44
|
+
/**
|
|
45
|
+
* Return `true` unless SDKStats has been disabled via env var.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isSdkStatsEnabled(): boolean;
|
|
48
|
+
export declare function setSdkStatsFeature(flag: StatsbeatFeature | SdkStatsDistroFeature): void;
|
|
49
|
+
export declare function getSdkStatsFeatureFlags(): number;
|
|
50
|
+
export declare function setSdkStatsInstrumentation(flag: StatsbeatInstrumentation): void;
|
|
51
|
+
export declare function getSdkStatsInstrumentationFlags(): number;
|
|
52
|
+
export declare function setSdkStatsShutdown(shutdown?: boolean): void;
|
|
53
|
+
export declare function getSdkStatsShutdown(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* @internal Test-only: reset all SDKStats state to defaults.
|
|
56
|
+
*/
|
|
57
|
+
export declare function _resetSdkStatsStateForTest(): void;
|
|
58
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/sdkstats/state.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEzE;;;;;;;GAOG;AACH,oBAAY,qBAAqB;IAC/B,IAAI,IAAI;IACR,WAAW,MAAM;IACjB,WAAW,OAAO;IAClB,cAAc,OAAO;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,qCAAqC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,+CACT,CAAC;AAI/C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAS3C;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,qBAAqB,GAAG,IAAI,CAEvF;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAE/E;AAED,wBAAgB,+BAA+B,IAAI,MAAM,CAExD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,UAAO,GAAG,IAAI,CAEzD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAIjD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL = exports.SDKSTATS_DISABLED_ENV = exports.SdkStatsDistroFeature = void 0;
|
|
6
|
+
exports.isSdkStatsEnabled = isSdkStatsEnabled;
|
|
7
|
+
exports.setSdkStatsFeature = setSdkStatsFeature;
|
|
8
|
+
exports.getSdkStatsFeatureFlags = getSdkStatsFeatureFlags;
|
|
9
|
+
exports.setSdkStatsInstrumentation = setSdkStatsInstrumentation;
|
|
10
|
+
exports.getSdkStatsInstrumentationFlags = getSdkStatsInstrumentationFlags;
|
|
11
|
+
exports.setSdkStatsShutdown = setSdkStatsShutdown;
|
|
12
|
+
exports.getSdkStatsShutdown = getSdkStatsShutdown;
|
|
13
|
+
exports._resetSdkStatsStateForTest = _resetSdkStatsStateForTest;
|
|
14
|
+
/**
|
|
15
|
+
* Distro-specific feature flags, in addition to the
|
|
16
|
+
* {@link StatsbeatFeature} flags shared with the Azure Monitor exporter.
|
|
17
|
+
*
|
|
18
|
+
* These bit values intentionally start above the values used by
|
|
19
|
+
* {@link StatsbeatFeature} so that distro bits and exporter bits can be
|
|
20
|
+
* OR-combined into a single 64-bit mask without collision.
|
|
21
|
+
*/
|
|
22
|
+
var SdkStatsDistroFeature;
|
|
23
|
+
(function (SdkStatsDistroFeature) {
|
|
24
|
+
SdkStatsDistroFeature[SdkStatsDistroFeature["NONE"] = 0] = "NONE";
|
|
25
|
+
SdkStatsDistroFeature[SdkStatsDistroFeature["A365_EXPORT"] = 512] = "A365_EXPORT";
|
|
26
|
+
SdkStatsDistroFeature[SdkStatsDistroFeature["OTLP_EXPORT"] = 1024] = "OTLP_EXPORT";
|
|
27
|
+
SdkStatsDistroFeature[SdkStatsDistroFeature["CONSOLE_EXPORT"] = 2048] = "CONSOLE_EXPORT";
|
|
28
|
+
})(SdkStatsDistroFeature || (exports.SdkStatsDistroFeature = SdkStatsDistroFeature = {}));
|
|
29
|
+
/**
|
|
30
|
+
* Environment variable that disables SDKStats globally.
|
|
31
|
+
*
|
|
32
|
+
* When set to a truthy value (`true`, `1`, `yes`, `on`), the standalone
|
|
33
|
+
* SDKStats pipeline is not started and no SDKStats data is emitted.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
exports.SDKSTATS_DISABLED_ENV = "MICROSOFT_OTEL_SDKSTATS_DISABLED";
|
|
38
|
+
/**
|
|
39
|
+
* Legacy Azure Monitor kill-switch, also honoured for parity with the
|
|
40
|
+
* exporter package.
|
|
41
|
+
*
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
exports.APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL = "APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL";
|
|
45
|
+
const TRUTHY_VALUES = new Set(["true", "1", "yes", "on"]);
|
|
46
|
+
/**
|
|
47
|
+
* Return `true` unless SDKStats has been disabled via env var.
|
|
48
|
+
*/
|
|
49
|
+
function isSdkStatsEnabled() {
|
|
50
|
+
for (const envVar of [exports.SDKSTATS_DISABLED_ENV, exports.APPLICATIONINSIGHTS_STATSBEAT_DISABLED_ALL]) {
|
|
51
|
+
const raw = process.env[envVar];
|
|
52
|
+
if (!raw)
|
|
53
|
+
continue;
|
|
54
|
+
if (TRUTHY_VALUES.has(raw.trim().toLowerCase())) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Mutable global state — kept module-local to ensure a single source of truth
|
|
62
|
+
// across the distro process. Node.js executes JS in a single thread (modulo
|
|
63
|
+
// worker_threads), so no explicit locking is needed.
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
let _featureBits = 0;
|
|
66
|
+
let _instrumentationBits = 0;
|
|
67
|
+
let _shutdown = false;
|
|
68
|
+
function setSdkStatsFeature(flag) {
|
|
69
|
+
_featureBits |= flag;
|
|
70
|
+
}
|
|
71
|
+
function getSdkStatsFeatureFlags() {
|
|
72
|
+
return _featureBits;
|
|
73
|
+
}
|
|
74
|
+
function setSdkStatsInstrumentation(flag) {
|
|
75
|
+
_instrumentationBits |= flag;
|
|
76
|
+
}
|
|
77
|
+
function getSdkStatsInstrumentationFlags() {
|
|
78
|
+
return _instrumentationBits;
|
|
79
|
+
}
|
|
80
|
+
function setSdkStatsShutdown(shutdown = true) {
|
|
81
|
+
_shutdown = shutdown;
|
|
82
|
+
}
|
|
83
|
+
function getSdkStatsShutdown() {
|
|
84
|
+
return _shutdown;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* @internal Test-only: reset all SDKStats state to defaults.
|
|
88
|
+
*/
|
|
89
|
+
function _resetSdkStatsStateForTest() {
|
|
90
|
+
_featureBits = 0;
|
|
91
|
+
_instrumentationBits = 0;
|
|
92
|
+
_shutdown = false;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/sdkstats/state.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAwDlC,8CASC;AAYD,gDAEC;AAED,0DAEC;AAED,gEAEC;AAED,0EAEC;AAED,kDAEC;AAED,kDAEC;AAKD,gEAIC;AA3FD;;;;;;;GAOG;AACH,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,iEAAQ,CAAA;IACR,iFAAiB,CAAA;IACjB,kFAAkB,CAAA;IAClB,wFAAqB,CAAA;AACvB,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC;AAED;;;;;;;GAOG;AACU,QAAA,qBAAqB,GAAG,kCAAkC,CAAC;AAExE;;;;;GAKG;AACU,QAAA,0CAA0C,GACrD,4CAA4C,CAAC;AAE/C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAE1D;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,KAAK,MAAM,MAAM,IAAI,CAAC,6BAAqB,EAAE,kDAA0C,CAAC,EAAE,CAAC;QACzF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,qDAAqD;AACrD,8EAA8E;AAE9E,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAgB,kBAAkB,CAAC,IAA8C;IAC/E,YAAY,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,SAAgB,uBAAuB;IACrC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,0BAA0B,CAAC,IAA8B;IACvE,oBAAoB,IAAI,IAAI,CAAC;AAC/B,CAAC;AAED,SAAgB,+BAA+B;IAC7C,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAQ,GAAG,IAAI;IACjD,SAAS,GAAG,QAAQ,CAAC;AACvB,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B;IACxC,YAAY,GAAG,CAAC,CAAC;IACjB,oBAAoB,GAAG,CAAC,CAAC;IACzB,SAAS,GAAG,KAAK,CAAC;AACpB,CAAC"}
|
package/dist/commonjs/types.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { A365Options } from "./a365/index.js";
|
|
|
8
8
|
/**
|
|
9
9
|
* Microsoft OpenTelemetry distribution version.
|
|
10
10
|
*/
|
|
11
|
-
export declare const MICROSOFT_OPENTELEMETRY_VERSION = "
|
|
11
|
+
export declare const MICROSOFT_OPENTELEMETRY_VERSION = "1.0.1";
|
|
12
12
|
/**
|
|
13
13
|
* Microsoft OpenTelemetry Options
|
|
14
14
|
*
|
|
@@ -128,6 +128,8 @@ export interface StatsbeatFeatures {
|
|
|
128
128
|
customerSdkStats?: boolean;
|
|
129
129
|
multiIkey?: boolean;
|
|
130
130
|
aksResourceDetectorPopulation?: boolean;
|
|
131
|
+
a365?: boolean;
|
|
132
|
+
otlp?: boolean;
|
|
131
133
|
}
|
|
132
134
|
/**
|
|
133
135
|
* Statsbeat Features Mapping
|
|
@@ -238,7 +240,9 @@ export declare enum StatsbeatFeature {
|
|
|
238
240
|
SHIM = 32,
|
|
239
241
|
CUSTOMER_SDKSTATS = 64,
|
|
240
242
|
MULTI_IKEY = 128,
|
|
241
|
-
AKS_RESOURCE_DETECTOR_POPULATION = 256
|
|
243
|
+
AKS_RESOURCE_DETECTOR_POPULATION = 256,
|
|
244
|
+
A365 = 512,
|
|
245
|
+
OTLP = 1024
|
|
242
246
|
}
|
|
243
247
|
export declare enum StatsbeatInstrumentation {
|
|
244
248
|
/** Azure Monitor Supported Instrumentations */
|