@microsoft/opentelemetry 1.0.1 → 1.1.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/README.md +70 -68
- package/dist/commonjs/a365/configuration/A365Configuration.d.ts +3 -0
- package/dist/commonjs/a365/configuration/A365Configuration.d.ts.map +1 -1
- package/dist/commonjs/a365/configuration/A365Configuration.js +6 -1
- package/dist/commonjs/a365/configuration/A365Configuration.js.map +1 -1
- package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts +9 -0
- package/dist/commonjs/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
- package/dist/commonjs/a365/constants.d.ts +26 -2
- package/dist/commonjs/a365/constants.d.ts.map +1 -1
- package/dist/commonjs/a365/constants.js +33 -1
- package/dist/commonjs/a365/constants.js.map +1 -1
- package/dist/commonjs/a365/contracts.d.ts +108 -8
- package/dist/commonjs/a365/contracts.d.ts.map +1 -1
- package/dist/commonjs/a365/contracts.js +48 -3
- package/dist/commonjs/a365/contracts.js.map +1 -1
- package/dist/commonjs/a365/exporter/Agent365Exporter.d.ts.map +1 -1
- package/dist/commonjs/a365/exporter/Agent365Exporter.js +55 -3
- package/dist/commonjs/a365/exporter/Agent365Exporter.js.map +1 -1
- package/dist/commonjs/a365/exporter/Agent365ExporterOptions.d.ts +20 -1
- package/dist/commonjs/a365/exporter/Agent365ExporterOptions.d.ts.map +1 -1
- package/dist/commonjs/a365/exporter/Agent365ExporterOptions.js +2 -0
- package/dist/commonjs/a365/exporter/Agent365ExporterOptions.js.map +1 -1
- package/dist/commonjs/a365/exporter/AgentIdentity.d.ts +17 -0
- package/dist/commonjs/a365/exporter/AgentIdentity.d.ts.map +1 -0
- package/dist/commonjs/a365/exporter/AgentIdentity.js +5 -0
- package/dist/commonjs/a365/exporter/AgentIdentity.js.map +1 -0
- package/dist/commonjs/a365/exporter/TokenResolverContext.d.ts +18 -0
- package/dist/commonjs/a365/exporter/TokenResolverContext.d.ts.map +1 -0
- package/dist/commonjs/a365/exporter/TokenResolverContext.js +5 -0
- package/dist/commonjs/a365/exporter/TokenResolverContext.js.map +1 -0
- package/dist/commonjs/a365/exporter/index.d.ts +3 -1
- package/dist/commonjs/a365/exporter/index.d.ts.map +1 -1
- package/dist/commonjs/a365/exporter/index.js.map +1 -1
- package/dist/commonjs/a365/exporter/utils.d.ts +5 -0
- package/dist/commonjs/a365/exporter/utils.d.ts.map +1 -1
- package/dist/commonjs/a365/exporter/utils.js +23 -25
- package/dist/commonjs/a365/exporter/utils.js.map +1 -1
- package/dist/commonjs/a365/hosting/index.d.ts +1 -1
- package/dist/commonjs/a365/hosting/index.d.ts.map +1 -1
- package/dist/commonjs/a365/hosting/index.js +2 -1
- package/dist/commonjs/a365/hosting/index.js.map +1 -1
- package/dist/commonjs/a365/hosting/scopeUtils.js +1 -1
- package/dist/commonjs/a365/hosting/scopeUtils.js.map +1 -1
- package/dist/commonjs/a365/hosting/turnContextUtils.d.ts +6 -1
- package/dist/commonjs/a365/hosting/turnContextUtils.d.ts.map +1 -1
- package/dist/commonjs/a365/hosting/turnContextUtils.js +30 -4
- package/dist/commonjs/a365/hosting/turnContextUtils.js.map +1 -1
- package/dist/commonjs/a365/hosting/types.d.ts +1 -0
- package/dist/commonjs/a365/hosting/types.d.ts.map +1 -1
- package/dist/commonjs/a365/index.d.ts +5 -5
- package/dist/commonjs/a365/index.d.ts.map +1 -1
- package/dist/commonjs/a365/index.js +8 -2
- package/dist/commonjs/a365/index.js.map +1 -1
- package/dist/commonjs/a365/message-utils.d.ts +10 -5
- package/dist/commonjs/a365/message-utils.d.ts.map +1 -1
- package/dist/commonjs/a365/message-utils.js +27 -24
- package/dist/commonjs/a365/message-utils.js.map +1 -1
- package/dist/commonjs/a365/processors/A365SpanProcessor.d.ts +3 -0
- package/dist/commonjs/a365/processors/A365SpanProcessor.d.ts.map +1 -1
- package/dist/commonjs/a365/processors/A365SpanProcessor.js +12 -4
- package/dist/commonjs/a365/processors/A365SpanProcessor.js.map +1 -1
- package/dist/commonjs/a365/scopes/ApplyGuardrailScope.d.ts +45 -0
- package/dist/commonjs/a365/scopes/ApplyGuardrailScope.d.ts.map +1 -0
- package/dist/commonjs/a365/scopes/ApplyGuardrailScope.js +132 -0
- package/dist/commonjs/a365/scopes/ApplyGuardrailScope.js.map +1 -0
- package/dist/commonjs/a365/scopes/OpenTelemetryScope.d.ts +7 -1
- package/dist/commonjs/a365/scopes/OpenTelemetryScope.d.ts.map +1 -1
- package/dist/commonjs/a365/scopes/OpenTelemetryScope.js +8 -0
- package/dist/commonjs/a365/scopes/OpenTelemetryScope.js.map +1 -1
- package/dist/commonjs/a365/scopes/OutputScope.d.ts.map +1 -1
- package/dist/commonjs/a365/scopes/OutputScope.js +2 -4
- package/dist/commonjs/a365/scopes/OutputScope.js.map +1 -1
- package/dist/commonjs/a365/scopes/index.d.ts +1 -0
- package/dist/commonjs/a365/scopes/index.d.ts.map +1 -1
- package/dist/commonjs/a365/scopes/index.js +3 -1
- package/dist/commonjs/a365/scopes/index.js.map +1 -1
- package/dist/commonjs/azureMonitor/index.d.ts +4 -4
- package/dist/commonjs/azureMonitor/index.d.ts.map +1 -1
- package/dist/commonjs/azureMonitor/index.js +3 -3
- package/dist/commonjs/azureMonitor/index.js.map +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/liveMetrics.d.ts +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/commonjs/azureMonitor/metrics/quickpulse/liveMetrics.js +6 -6
- package/dist/commonjs/azureMonitor/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/commonjs/distro/distro.d.ts.map +1 -1
- package/dist/commonjs/distro/distro.js +66 -32
- package/dist/commonjs/distro/distro.js.map +1 -1
- package/dist/commonjs/genai/index.d.ts +1 -0
- package/dist/commonjs/genai/index.d.ts.map +1 -1
- package/dist/commonjs/genai/index.js +9 -0
- package/dist/commonjs/genai/index.js.map +1 -1
- package/dist/commonjs/genai/instrumentations/langchain/tracer.d.ts +3 -3
- package/dist/commonjs/genai/instrumentations/langchain/tracer.d.ts.map +1 -1
- package/dist/commonjs/genai/instrumentations/langchain/tracer.js +31 -9
- package/dist/commonjs/genai/instrumentations/langchain/tracer.js.map +1 -1
- package/dist/commonjs/genai/instrumentations/langchain/utils.d.ts +6 -0
- package/dist/commonjs/genai/instrumentations/langchain/utils.d.ts.map +1 -1
- package/dist/commonjs/genai/instrumentations/langchain/utils.js +159 -21
- package/dist/commonjs/genai/instrumentations/langchain/utils.js.map +1 -1
- package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceProcessor.d.ts +2 -2
- package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceProcessor.d.ts.map +1 -1
- package/dist/commonjs/genai/instrumentations/openai/openAIAgentsTraceProcessor.js +1 -1
- package/dist/commonjs/genai/instrumentations/openai/utils.d.ts +1 -1
- package/dist/commonjs/genai/instrumentations/openai/utils.d.ts.map +1 -1
- package/dist/commonjs/genai/instrumentations/openai/utils.js +9 -4
- package/dist/commonjs/genai/instrumentations/openai/utils.js.map +1 -1
- package/dist/commonjs/genai/mainAgent/constants.d.ts +16 -0
- package/dist/commonjs/genai/mainAgent/constants.d.ts.map +1 -0
- package/dist/commonjs/genai/mainAgent/constants.js +21 -0
- package/dist/commonjs/genai/mainAgent/constants.js.map +1 -0
- package/dist/commonjs/genai/mainAgent/index.d.ts +3 -0
- package/dist/commonjs/genai/mainAgent/index.d.ts.map +1 -0
- package/dist/commonjs/genai/mainAgent/index.js +15 -0
- package/dist/commonjs/genai/mainAgent/index.js.map +1 -0
- package/dist/commonjs/genai/mainAgent/processor.d.ts +39 -0
- package/dist/commonjs/genai/mainAgent/processor.d.ts.map +1 -0
- package/dist/commonjs/genai/mainAgent/processor.js +125 -0
- package/dist/commonjs/genai/mainAgent/processor.js.map +1 -0
- package/dist/commonjs/genai/semconv.d.ts +3 -0
- package/dist/commonjs/genai/semconv.d.ts.map +1 -1
- package/dist/commonjs/genai/semconv.js +4 -1
- package/dist/commonjs/genai/semconv.js.map +1 -1
- package/dist/commonjs/index.d.ts +4 -3
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +16 -2
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/otlp/handler.d.ts.map +1 -1
- package/dist/commonjs/otlp/handler.js +17 -3
- package/dist/commonjs/otlp/handler.js.map +1 -1
- package/dist/commonjs/sdkstats/index.d.ts +4 -0
- package/dist/commonjs/sdkstats/index.d.ts.map +1 -1
- package/dist/commonjs/sdkstats/index.js +12 -1
- package/dist/commonjs/sdkstats/index.js.map +1 -1
- package/dist/commonjs/sdkstats/manager.d.ts +7 -3
- package/dist/commonjs/sdkstats/manager.d.ts.map +1 -1
- package/dist/commonjs/sdkstats/manager.js +98 -25
- package/dist/commonjs/sdkstats/manager.js.map +1 -1
- package/dist/commonjs/sdkstats/metrics.d.ts +46 -2
- package/dist/commonjs/sdkstats/metrics.d.ts.map +1 -1
- package/dist/commonjs/sdkstats/metrics.js +82 -13
- package/dist/commonjs/sdkstats/metrics.js.map +1 -1
- package/dist/commonjs/sdkstats/networkStats.d.ts +57 -0
- package/dist/commonjs/sdkstats/networkStats.d.ts.map +1 -0
- package/dist/commonjs/sdkstats/networkStats.js +126 -0
- package/dist/commonjs/sdkstats/networkStats.js.map +1 -0
- package/dist/commonjs/sdkstats/otlpWrapper.d.ts +56 -0
- package/dist/commonjs/sdkstats/otlpWrapper.d.ts.map +1 -0
- package/dist/commonjs/sdkstats/otlpWrapper.js +121 -0
- package/dist/commonjs/sdkstats/otlpWrapper.js.map +1 -0
- package/dist/commonjs/sdkstats/state.d.ts +6 -6
- package/dist/commonjs/sdkstats/state.d.ts.map +1 -1
- package/dist/commonjs/sdkstats/state.js +2 -2
- package/dist/commonjs/sdkstats/state.js.map +1 -1
- package/dist/commonjs/types.d.ts +16 -16
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +88 -88
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/utils/index.d.ts +1 -1
- package/dist/commonjs/utils/index.d.ts.map +1 -1
- package/dist/commonjs/utils/index.js +2 -2
- package/dist/commonjs/utils/index.js.map +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.d.ts +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js +11 -11
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
- package/dist/commonjs/utils/sdkStats.d.ts +15 -0
- package/dist/commonjs/utils/sdkStats.d.ts.map +1 -0
- package/dist/commonjs/utils/sdkStats.js +127 -0
- package/dist/commonjs/utils/sdkStats.js.map +1 -0
- package/dist/esm/a365/configuration/A365Configuration.d.ts +3 -0
- package/dist/esm/a365/configuration/A365Configuration.d.ts.map +1 -1
- package/dist/esm/a365/configuration/A365Configuration.js +6 -1
- package/dist/esm/a365/configuration/A365Configuration.js.map +1 -1
- package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts +9 -0
- package/dist/esm/a365/configuration/A365ConfigurationOptions.d.ts.map +1 -1
- package/dist/esm/a365/constants.d.ts +26 -2
- package/dist/esm/a365/constants.d.ts.map +1 -1
- package/dist/esm/a365/constants.js +33 -1
- package/dist/esm/a365/constants.js.map +1 -1
- package/dist/esm/a365/contracts.d.ts +108 -8
- package/dist/esm/a365/contracts.d.ts.map +1 -1
- package/dist/esm/a365/contracts.js +47 -2
- package/dist/esm/a365/contracts.js.map +1 -1
- package/dist/esm/a365/exporter/Agent365Exporter.d.ts.map +1 -1
- package/dist/esm/a365/exporter/Agent365Exporter.js +56 -4
- package/dist/esm/a365/exporter/Agent365Exporter.js.map +1 -1
- package/dist/esm/a365/exporter/Agent365ExporterOptions.d.ts +20 -1
- package/dist/esm/a365/exporter/Agent365ExporterOptions.d.ts.map +1 -1
- package/dist/esm/a365/exporter/Agent365ExporterOptions.js +2 -0
- package/dist/esm/a365/exporter/Agent365ExporterOptions.js.map +1 -1
- package/dist/esm/a365/exporter/AgentIdentity.d.ts +17 -0
- package/dist/esm/a365/exporter/AgentIdentity.d.ts.map +1 -0
- package/dist/esm/a365/exporter/AgentIdentity.js +4 -0
- package/dist/esm/a365/exporter/AgentIdentity.js.map +1 -0
- package/dist/esm/a365/exporter/TokenResolverContext.d.ts +18 -0
- package/dist/esm/a365/exporter/TokenResolverContext.d.ts.map +1 -0
- package/dist/esm/a365/exporter/TokenResolverContext.js +4 -0
- package/dist/esm/a365/exporter/TokenResolverContext.js.map +1 -0
- package/dist/esm/a365/exporter/index.d.ts +3 -1
- package/dist/esm/a365/exporter/index.d.ts.map +1 -1
- package/dist/esm/a365/exporter/index.js.map +1 -1
- package/dist/esm/a365/exporter/utils.d.ts +5 -0
- package/dist/esm/a365/exporter/utils.d.ts.map +1 -1
- package/dist/esm/a365/exporter/utils.js +22 -24
- package/dist/esm/a365/exporter/utils.js.map +1 -1
- package/dist/esm/a365/hosting/index.d.ts +1 -1
- package/dist/esm/a365/hosting/index.d.ts.map +1 -1
- package/dist/esm/a365/hosting/index.js +1 -1
- package/dist/esm/a365/hosting/index.js.map +1 -1
- package/dist/esm/a365/hosting/scopeUtils.js +2 -2
- package/dist/esm/a365/hosting/scopeUtils.js.map +1 -1
- package/dist/esm/a365/hosting/turnContextUtils.d.ts +6 -1
- package/dist/esm/a365/hosting/turnContextUtils.d.ts.map +1 -1
- package/dist/esm/a365/hosting/turnContextUtils.js +29 -4
- package/dist/esm/a365/hosting/turnContextUtils.js.map +1 -1
- package/dist/esm/a365/hosting/types.d.ts +1 -0
- package/dist/esm/a365/hosting/types.d.ts.map +1 -1
- package/dist/esm/a365/index.d.ts +5 -5
- package/dist/esm/a365/index.d.ts.map +1 -1
- package/dist/esm/a365/index.js +3 -3
- package/dist/esm/a365/index.js.map +1 -1
- package/dist/esm/a365/message-utils.d.ts +10 -5
- package/dist/esm/a365/message-utils.d.ts.map +1 -1
- package/dist/esm/a365/message-utils.js +28 -25
- package/dist/esm/a365/message-utils.js.map +1 -1
- package/dist/esm/a365/processors/A365SpanProcessor.d.ts +3 -0
- package/dist/esm/a365/processors/A365SpanProcessor.d.ts.map +1 -1
- package/dist/esm/a365/processors/A365SpanProcessor.js +12 -4
- package/dist/esm/a365/processors/A365SpanProcessor.js.map +1 -1
- package/dist/esm/a365/scopes/ApplyGuardrailScope.d.ts +45 -0
- package/dist/esm/a365/scopes/ApplyGuardrailScope.d.ts.map +1 -0
- package/dist/esm/a365/scopes/ApplyGuardrailScope.js +128 -0
- package/dist/esm/a365/scopes/ApplyGuardrailScope.js.map +1 -0
- package/dist/esm/a365/scopes/OpenTelemetryScope.d.ts +7 -1
- package/dist/esm/a365/scopes/OpenTelemetryScope.d.ts.map +1 -1
- package/dist/esm/a365/scopes/OpenTelemetryScope.js +8 -0
- package/dist/esm/a365/scopes/OpenTelemetryScope.js.map +1 -1
- package/dist/esm/a365/scopes/OutputScope.d.ts.map +1 -1
- package/dist/esm/a365/scopes/OutputScope.js +2 -4
- package/dist/esm/a365/scopes/OutputScope.js.map +1 -1
- package/dist/esm/a365/scopes/index.d.ts +1 -0
- package/dist/esm/a365/scopes/index.d.ts.map +1 -1
- package/dist/esm/a365/scopes/index.js +1 -0
- package/dist/esm/a365/scopes/index.js.map +1 -1
- package/dist/esm/azureMonitor/index.d.ts +4 -4
- package/dist/esm/azureMonitor/index.d.ts.map +1 -1
- package/dist/esm/azureMonitor/index.js +2 -2
- package/dist/esm/azureMonitor/index.js.map +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/liveMetrics.d.ts +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/esm/azureMonitor/metrics/quickpulse/liveMetrics.js +6 -6
- package/dist/esm/azureMonitor/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/esm/distro/distro.d.ts.map +1 -1
- package/dist/esm/distro/distro.js +58 -24
- package/dist/esm/distro/distro.js.map +1 -1
- package/dist/esm/genai/index.d.ts +1 -0
- package/dist/esm/genai/index.d.ts.map +1 -1
- package/dist/esm/genai/index.js +1 -0
- package/dist/esm/genai/index.js.map +1 -1
- package/dist/esm/genai/instrumentations/langchain/tracer.d.ts +3 -3
- package/dist/esm/genai/instrumentations/langchain/tracer.d.ts.map +1 -1
- package/dist/esm/genai/instrumentations/langchain/tracer.js +31 -9
- package/dist/esm/genai/instrumentations/langchain/tracer.js.map +1 -1
- package/dist/esm/genai/instrumentations/langchain/utils.d.ts +6 -0
- package/dist/esm/genai/instrumentations/langchain/utils.d.ts.map +1 -1
- package/dist/esm/genai/instrumentations/langchain/utils.js +155 -23
- package/dist/esm/genai/instrumentations/langchain/utils.js.map +1 -1
- package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceProcessor.d.ts +2 -2
- package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceProcessor.d.ts.map +1 -1
- package/dist/esm/genai/instrumentations/openai/openAIAgentsTraceProcessor.js +1 -1
- package/dist/esm/genai/instrumentations/openai/utils.d.ts +1 -1
- package/dist/esm/genai/instrumentations/openai/utils.d.ts.map +1 -1
- package/dist/esm/genai/instrumentations/openai/utils.js +10 -5
- package/dist/esm/genai/instrumentations/openai/utils.js.map +1 -1
- package/dist/esm/genai/mainAgent/constants.d.ts +16 -0
- package/dist/esm/genai/mainAgent/constants.d.ts.map +1 -0
- package/dist/esm/genai/mainAgent/constants.js +18 -0
- package/dist/esm/genai/mainAgent/constants.js.map +1 -0
- package/dist/esm/genai/mainAgent/index.d.ts +3 -0
- package/dist/esm/genai/mainAgent/index.d.ts.map +1 -0
- package/dist/esm/genai/mainAgent/index.js +5 -0
- package/dist/esm/genai/mainAgent/index.js.map +1 -0
- package/dist/esm/genai/mainAgent/processor.d.ts +39 -0
- package/dist/esm/genai/mainAgent/processor.d.ts.map +1 -0
- package/dist/esm/genai/mainAgent/processor.js +120 -0
- package/dist/esm/genai/mainAgent/processor.js.map +1 -0
- package/dist/esm/genai/semconv.d.ts +3 -0
- package/dist/esm/genai/semconv.d.ts.map +1 -1
- package/dist/esm/genai/semconv.js +3 -0
- package/dist/esm/genai/semconv.js.map +1 -1
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/otlp/handler.d.ts.map +1 -1
- package/dist/esm/otlp/handler.js +17 -3
- package/dist/esm/otlp/handler.js.map +1 -1
- package/dist/esm/sdkstats/index.d.ts +4 -0
- package/dist/esm/sdkstats/index.d.ts.map +1 -1
- package/dist/esm/sdkstats/index.js +2 -0
- package/dist/esm/sdkstats/index.js.map +1 -1
- package/dist/esm/sdkstats/manager.d.ts +7 -3
- package/dist/esm/sdkstats/manager.d.ts.map +1 -1
- package/dist/esm/sdkstats/manager.js +98 -25
- package/dist/esm/sdkstats/manager.js.map +1 -1
- package/dist/esm/sdkstats/metrics.d.ts +46 -2
- package/dist/esm/sdkstats/metrics.d.ts.map +1 -1
- package/dist/esm/sdkstats/metrics.js +82 -13
- package/dist/esm/sdkstats/metrics.js.map +1 -1
- package/dist/esm/sdkstats/networkStats.d.ts +57 -0
- package/dist/esm/sdkstats/networkStats.d.ts.map +1 -0
- package/dist/esm/sdkstats/networkStats.js +119 -0
- package/dist/esm/sdkstats/networkStats.js.map +1 -0
- package/dist/esm/sdkstats/otlpWrapper.d.ts +56 -0
- package/dist/esm/sdkstats/otlpWrapper.d.ts.map +1 -0
- package/dist/esm/sdkstats/otlpWrapper.js +115 -0
- package/dist/esm/sdkstats/otlpWrapper.js.map +1 -0
- package/dist/esm/sdkstats/state.d.ts +6 -6
- package/dist/esm/sdkstats/state.d.ts.map +1 -1
- package/dist/esm/sdkstats/state.js +2 -2
- package/dist/esm/sdkstats/state.js.map +1 -1
- package/dist/esm/types.d.ts +16 -16
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +87 -87
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.d.ts +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js +12 -12
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
- package/dist/esm/utils/sdkStats.d.ts +15 -0
- package/dist/esm/utils/sdkStats.d.ts.map +1 -0
- package/dist/esm/utils/sdkStats.js +124 -0
- package/dist/esm/utils/sdkStats.js.map +1 -0
- package/package.json +25 -25
- package/dist/commonjs/utils/statsbeat.d.ts +0 -15
- package/dist/commonjs/utils/statsbeat.d.ts.map +0 -1
- package/dist/commonjs/utils/statsbeat.js +0 -127
- package/dist/commonjs/utils/statsbeat.js.map +0 -1
- package/dist/esm/utils/statsbeat.d.ts +0 -15
- package/dist/esm/utils/statsbeat.d.ts.map +0 -1
- package/dist/esm/utils/statsbeat.js +0 -124
- package/dist/esm/utils/statsbeat.js.map +0 -1
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.SdkStatsManager = void 0;
|
|
6
6
|
/**
|
|
7
7
|
* SDKStats manager — sends SDK self-telemetry to the Application Insights
|
|
8
|
-
*
|
|
8
|
+
* SDKStats ingestion endpoint, independent of the customer's telemetry
|
|
9
9
|
* pipeline.
|
|
10
10
|
*
|
|
11
11
|
* When the full Azure Monitor pipeline is enabled, the exporter package's
|
|
12
|
-
* own
|
|
12
|
+
* own SDKStats machinery handles SDKStats emission and the distro just
|
|
13
13
|
* publishes its bits via the `AZURE_MONITOR_STATSBEAT_FEATURES` env var
|
|
14
14
|
* for the exporter to read. For A365-only, OTLP-only, or Console-only
|
|
15
15
|
* customers this manager spins up a standalone `MeterProvider` →
|
|
@@ -41,6 +41,32 @@ const DEFAULT_LONG_EXPORT_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
|
41
41
|
* @internal
|
|
42
42
|
*/
|
|
43
43
|
const SDKSTATS_LONG_EXPORT_INTERVAL_ENV = "APPLICATIONINSIGHTS_STATS_LONG_EXPORT_INTERVAL";
|
|
44
|
+
/**
|
|
45
|
+
* Default short export interval (15 minutes) for network SDKStats
|
|
46
|
+
* counters. Matches the Application Insights SDKStats short-interval
|
|
47
|
+
* cadence used by the Python distro (`_get_stats_short_export_interval()`
|
|
48
|
+
* in `azure.monitor.opentelemetry.exporter.statsbeat._utils`).
|
|
49
|
+
*
|
|
50
|
+
* @internal
|
|
51
|
+
*/
|
|
52
|
+
const DEFAULT_SHORT_EXPORT_INTERVAL_MS = 15 * 60 * 1000;
|
|
53
|
+
/**
|
|
54
|
+
* Override env var: short (network) export interval in seconds.
|
|
55
|
+
* Matches the Python distro env var name.
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
const SDKSTATS_SHORT_EXPORT_INTERVAL_ENV = "APPLICATIONINSIGHTS_STATS_SHORT_EXPORT_INTERVAL";
|
|
60
|
+
/**
|
|
61
|
+
* Override env var: redirect SDKStats envelopes to a custom App
|
|
62
|
+
* Insights connection string. When unset, SDKStats flow to the
|
|
63
|
+
* Microsoft-owned SDKStats resource (`NON_EU_CONNECTION_STRING` in
|
|
64
|
+
* the AzMon exporter package). Primarily useful for testing.
|
|
65
|
+
* Matches the Python distro env var name.
|
|
66
|
+
*
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
const SDKSTATS_CONNECTION_STRING_ENV = "APPLICATIONINSIGHTS_STATS_CONNECTION_STRING";
|
|
44
70
|
/**
|
|
45
71
|
* Initial-export delay (15 seconds) before the first long-interval flush.
|
|
46
72
|
*
|
|
@@ -59,7 +85,8 @@ const INITIAL_EXPORT_DELAY_MS = 15 * 1000;
|
|
|
59
85
|
*/
|
|
60
86
|
class SdkStatsManager {
|
|
61
87
|
static _instance;
|
|
62
|
-
|
|
88
|
+
_longMeterProvider;
|
|
89
|
+
_shortMeterProvider;
|
|
63
90
|
_metrics;
|
|
64
91
|
_initialized = false;
|
|
65
92
|
_initialExportTimer;
|
|
@@ -73,13 +100,13 @@ class SdkStatsManager {
|
|
|
73
100
|
return this._initialized;
|
|
74
101
|
}
|
|
75
102
|
/**
|
|
76
|
-
* Set up SDKStats export via the Azure Monitor
|
|
103
|
+
* Set up SDKStats export via the Azure Monitor SDKStats endpoint.
|
|
77
104
|
*
|
|
78
105
|
* Returns `true` if the standalone pipeline was initialized (or was
|
|
79
106
|
* already initialized), `false` if SDKStats are disabled via env var
|
|
80
107
|
* or initialization failed.
|
|
81
108
|
*/
|
|
82
|
-
async initialize() {
|
|
109
|
+
async initialize(options = {}) {
|
|
83
110
|
if (!(0, state_js_1.isSdkStatsEnabled)()) {
|
|
84
111
|
return false;
|
|
85
112
|
}
|
|
@@ -90,33 +117,62 @@ class SdkStatsManager {
|
|
|
90
117
|
// The exporter package's `exports` map blocks subpath imports, so
|
|
91
118
|
// we resolve the package's own package.json to find its install
|
|
92
119
|
// location on disk and require the internal modules by absolute
|
|
93
|
-
// path. The
|
|
94
|
-
// — it tags envelopes with the
|
|
95
|
-
// recursive
|
|
120
|
+
// path. The AzureMonitorStatsbeatExporter is the correct vehicle for
|
|
121
|
+
// SDKStats — it tags envelopes with the SDKStats ikey/endpoint and
|
|
122
|
+
// avoids recursive SDKStats-of-SDKStats reporting via its
|
|
96
123
|
// `isStatsbeatExporter` flag.
|
|
97
124
|
const baseUrl = (0, module_js_1.getModuleParentURL)() ?? (0, node_url_1.pathToFileURL)(process.cwd() + "/").href;
|
|
98
125
|
const requireFromHere = (0, node_module_1.createRequire)(baseUrl);
|
|
99
126
|
const exporterPackageJsonPath = requireFromHere.resolve("@azure/monitor-opentelemetry-exporter/package.json");
|
|
100
127
|
const exporterPackageDir = (0, node_path_1.dirname)(exporterPackageJsonPath);
|
|
101
128
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
|
-
const
|
|
129
|
+
const sdkStatsExporterModule = requireFromHere((0, node_path_1.join)(exporterPackageDir, "dist", "esm", "export", "statsbeat", "statsbeatExporter.js"));
|
|
103
130
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
|
-
const
|
|
105
|
-
const AzureMonitorStatsbeatExporter =
|
|
106
|
-
const NON_EU_CONNECTION_STRING =
|
|
107
|
-
|
|
108
|
-
|
|
131
|
+
const sdkStatsTypesModule = requireFromHere((0, node_path_1.join)(exporterPackageDir, "dist", "esm", "export", "statsbeat", "types.js"));
|
|
132
|
+
const AzureMonitorStatsbeatExporter = sdkStatsExporterModule.AzureMonitorStatsbeatExporter;
|
|
133
|
+
const NON_EU_CONNECTION_STRING = sdkStatsTypesModule.NON_EU_CONNECTION_STRING;
|
|
134
|
+
// Allow overriding the SDKStats ingestion target via env var,
|
|
135
|
+
// matching the Python distro's APPLICATIONINSIGHTS_STATS_CONNECTION_STRING
|
|
136
|
+
// hook. Primarily useful for testing — production should leave
|
|
137
|
+
// this unset so SDKStats flows to the Microsoft-owned SDKStats
|
|
138
|
+
// resource (NON_EU_CONNECTION_STRING).
|
|
139
|
+
const connectionString = process.env[SDKSTATS_CONNECTION_STRING_ENV] ?? NON_EU_CONNECTION_STRING;
|
|
140
|
+
const emptyResource = (0, resources_1.resourceFromAttributes)({});
|
|
141
|
+
// Long-interval pipeline (24h) — Feature / Feature.instrumentations.
|
|
142
|
+
// Skipped when `networkOnly` is true (AzMon exporter owns those).
|
|
143
|
+
if (!options.networkOnly) {
|
|
144
|
+
const longExporter = new AzureMonitorStatsbeatExporter({
|
|
145
|
+
connectionString,
|
|
146
|
+
disableOfflineStorage: true,
|
|
147
|
+
});
|
|
148
|
+
const longReader = new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
149
|
+
exporter: longExporter,
|
|
150
|
+
exportIntervalMillis: resolveLongExportInterval(),
|
|
151
|
+
});
|
|
152
|
+
this._longMeterProvider = new sdk_metrics_1.MeterProvider({
|
|
153
|
+
readers: [longReader],
|
|
154
|
+
resource: emptyResource,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// Short-interval pipeline (15 min) — network SDKStats gauges.
|
|
158
|
+
const shortExporter = new AzureMonitorStatsbeatExporter({
|
|
159
|
+
connectionString,
|
|
109
160
|
disableOfflineStorage: true,
|
|
110
161
|
});
|
|
111
|
-
const
|
|
112
|
-
exporter,
|
|
113
|
-
exportIntervalMillis:
|
|
162
|
+
const shortReader = new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
163
|
+
exporter: shortExporter,
|
|
164
|
+
exportIntervalMillis: resolveShortExportInterval(),
|
|
165
|
+
});
|
|
166
|
+
this._shortMeterProvider = new sdk_metrics_1.MeterProvider({
|
|
167
|
+
readers: [shortReader],
|
|
168
|
+
resource: emptyResource,
|
|
114
169
|
});
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
|
|
170
|
+
this._metrics = new metrics_js_1.SdkStatsMetrics({
|
|
171
|
+
longMeterProvider: this._longMeterProvider,
|
|
172
|
+
shortMeterProvider: this._shortMeterProvider,
|
|
173
|
+
networkOnly: options.networkOnly,
|
|
174
|
+
cikey: options.cikey,
|
|
118
175
|
});
|
|
119
|
-
this._metrics = new metrics_js_1.SdkStatsMetrics(this._meterProvider);
|
|
120
176
|
this._initialized = true;
|
|
121
177
|
(0, state_js_1.setSdkStatsShutdown)(false);
|
|
122
178
|
// Spec: long-interval SDKStats should perform an initial export
|
|
@@ -125,7 +181,10 @@ class SdkStatsManager {
|
|
|
125
181
|
// excess startup traffic. `unref()` so the timer never blocks
|
|
126
182
|
// process shutdown.
|
|
127
183
|
this._initialExportTimer = setTimeout(() => {
|
|
128
|
-
|
|
184
|
+
Promise.all([
|
|
185
|
+
this._longMeterProvider?.forceFlush(),
|
|
186
|
+
this._shortMeterProvider?.forceFlush(),
|
|
187
|
+
]).catch((err) => {
|
|
129
188
|
index_js_1.Logger.getInstance().debug("[SDKStats] Initial forceFlush failed.", err);
|
|
130
189
|
});
|
|
131
190
|
}, INITIAL_EXPORT_DELAY_MS);
|
|
@@ -148,7 +207,10 @@ class SdkStatsManager {
|
|
|
148
207
|
this._initialExportTimer = undefined;
|
|
149
208
|
}
|
|
150
209
|
try {
|
|
151
|
-
await
|
|
210
|
+
await Promise.all([
|
|
211
|
+
this._longMeterProvider?.shutdown(),
|
|
212
|
+
this._shortMeterProvider?.shutdown(),
|
|
213
|
+
]);
|
|
152
214
|
}
|
|
153
215
|
catch (error) {
|
|
154
216
|
index_js_1.Logger.getInstance().debug("[SDKStats] Error shutting down standalone pipeline.", error);
|
|
@@ -160,7 +222,8 @@ class SdkStatsManager {
|
|
|
160
222
|
return true;
|
|
161
223
|
}
|
|
162
224
|
_cleanup() {
|
|
163
|
-
this.
|
|
225
|
+
this._longMeterProvider = undefined;
|
|
226
|
+
this._shortMeterProvider = undefined;
|
|
164
227
|
this._metrics = undefined;
|
|
165
228
|
this._initialized = false;
|
|
166
229
|
if (this._initialExportTimer) {
|
|
@@ -177,7 +240,7 @@ class SdkStatsManager {
|
|
|
177
240
|
}
|
|
178
241
|
}
|
|
179
242
|
exports.SdkStatsManager = SdkStatsManager;
|
|
180
|
-
function
|
|
243
|
+
function resolveLongExportInterval() {
|
|
181
244
|
const raw = process.env[SDKSTATS_LONG_EXPORT_INTERVAL_ENV];
|
|
182
245
|
if (!raw)
|
|
183
246
|
return DEFAULT_LONG_EXPORT_INTERVAL_MS;
|
|
@@ -187,4 +250,14 @@ function resolveExportInterval() {
|
|
|
187
250
|
}
|
|
188
251
|
return Math.floor(seconds * 1000);
|
|
189
252
|
}
|
|
253
|
+
function resolveShortExportInterval() {
|
|
254
|
+
const raw = process.env[SDKSTATS_SHORT_EXPORT_INTERVAL_ENV];
|
|
255
|
+
if (!raw)
|
|
256
|
+
return DEFAULT_SHORT_EXPORT_INTERVAL_MS;
|
|
257
|
+
const seconds = Number(raw);
|
|
258
|
+
if (!Number.isFinite(seconds) || seconds <= 0) {
|
|
259
|
+
return DEFAULT_SHORT_EXPORT_INTERVAL_MS;
|
|
260
|
+
}
|
|
261
|
+
return Math.floor(seconds * 1000);
|
|
262
|
+
}
|
|
190
263
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/sdkstats/manager.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;;;;;;;;;;;;GAeG;AAEH,4DAA0F;AAC1F,wDAAkE;AAClE,6CAA4C;AAC5C,uCAAyC;AACzC,yCAA0C;AAE1C,yDAAoD;AACpD,mDAAyD;AACzD,yCAAoE;AACpE,6CAA+C;AAE/C;;;;;GAKG;AACH,MAAM,+BAA+B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5D;;;;GAIG;AACH,MAAM,iCAAiC,GAAG,gDAAgD,CAAC;AAE3F;;;;;;;;GAQG;AACH,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1C;;;;;GAKG;AACH,MAAa,eAAe;IAClB,MAAM,CAAC,SAAS,CAA8B;IAE9C,
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/sdkstats/manager.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;;;;;;;;;;;;;;GAeG;AAEH,4DAA0F;AAC1F,wDAAkE;AAClE,6CAA4C;AAC5C,uCAAyC;AACzC,yCAA0C;AAE1C,yDAAoD;AACpD,mDAAyD;AACzD,yCAAoE;AACpE,6CAA+C;AAE/C;;;;;GAKG;AACH,MAAM,+BAA+B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE5D;;;;GAIG;AACH,MAAM,iCAAiC,GAAG,gDAAgD,CAAC;AAE3F;;;;;;;GAOG;AACH,MAAM,gCAAgC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExD;;;;;GAKG;AACH,MAAM,kCAAkC,GAAG,iDAAiD,CAAC;AAE7F;;;;;;;;GAQG;AACH,MAAM,8BAA8B,GAAG,6CAA6C,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1C;;;;;GAKG;AACH,MAAa,eAAe;IAClB,MAAM,CAAC,SAAS,CAA8B;IAE9C,kBAAkB,CAA4B;IAC9C,mBAAmB,CAA4B;IAC/C,QAAQ,CAA8B;IACtC,YAAY,GAAG,KAAK,CAAC;IACrB,mBAAmB,CAA6B;IAExD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YAC/B,eAAe,CAAC,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACpD,CAAC;QACD,OAAO,eAAe,CAAC,SAAS,CAAC;IACnC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,UAAqD,EAAE;QACtE,IAAI,CAAC,IAAA,4BAAiB,GAAE,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,kEAAkE;YAClE,gEAAgE;YAChE,gEAAgE;YAChE,qEAAqE;YACrE,mEAAmE;YACnE,0DAA0D;YAC1D,8BAA8B;YAC9B,MAAM,OAAO,GAAG,IAAA,8BAAkB,GAAE,IAAI,IAAA,wBAAa,EAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;YAChF,MAAM,eAAe,GAAG,IAAA,2BAAa,EAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,uBAAuB,GAAG,eAAe,CAAC,OAAO,CACrD,oDAAoD,CACrD,CAAC;YACF,MAAM,kBAAkB,GAAG,IAAA,mBAAO,EAAC,uBAAuB,CAAC,CAAC;YAC5D,8DAA8D;YAC9D,MAAM,sBAAsB,GAAQ,eAAe,CACjD,IAAA,gBAAI,EAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,CAAC,CACvF,CAAC;YACF,8DAA8D;YAC9D,MAAM,mBAAmB,GAAQ,eAAe,CAC9C,IAAA,gBAAI,EAAC,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAC3E,CAAC;YACF,MAAM,6BAA6B,GAAG,sBAAsB,CAAC,6BAA6B,CAAC;YAC3F,MAAM,wBAAwB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC;YAE9E,8DAA8D;YAC9D,2EAA2E;YAC3E,+DAA+D;YAC/D,+DAA+D;YAC/D,uCAAuC;YACvC,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,IAAI,wBAAwB,CAAC;YAE1E,MAAM,aAAa,GAAG,IAAA,kCAAsB,EAAC,EAAE,CAAC,CAAC;YAEjD,qEAAqE;YACrE,kEAAkE;YAClE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,IAAI,6BAA6B,CAAC;oBACrD,gBAAgB;oBAChB,qBAAqB,EAAE,IAAI;iBAC5B,CAAC,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,2CAA6B,CAAC;oBACnD,QAAQ,EAAE,YAAY;oBACtB,oBAAoB,EAAE,yBAAyB,EAAE;iBAClD,CAAC,CAAC;gBACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,2BAAa,CAAC;oBAC1C,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,8DAA8D;YAC9D,MAAM,aAAa,GAAG,IAAI,6BAA6B,CAAC;gBACtD,gBAAgB;gBAChB,qBAAqB,EAAE,IAAI;aAC5B,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,2CAA6B,CAAC;gBACpD,QAAQ,EAAE,aAAa;gBACvB,oBAAoB,EAAE,0BAA0B,EAAE;aACnD,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,2BAAa,CAAC;gBAC3C,OAAO,EAAE,CAAC,WAAW,CAAC;gBACtB,QAAQ,EAAE,aAAa;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,4BAAe,CAAC;gBAClC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;gBAC1C,kBAAkB,EAAE,IAAI,CAAC,mBAAmB;gBAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAA,8BAAmB,EAAC,KAAK,CAAC,CAAC;YAE3B,gEAAgE;YAChE,oEAAoE;YACpE,8DAA8D;YAC9D,8DAA8D;YAC9D,oBAAoB;YACpB,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,OAAO,CAAC,GAAG,CAAC;oBACV,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE;oBACrC,IAAI,CAAC,mBAAmB,EAAE,UAAU,EAAE;iBACvC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACf,iBAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;gBAC3E,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,uBAAuB,CAAC,CAAC;YAC5B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,CAAC;YAEnC,iBAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CACxB,8FAA8F,EAC9F,KAAK,CACN,CAAC;YACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE;gBACnC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;QAC3F,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAA,8BAAmB,EAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa;QAClB,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,CAAC;CACF;AAjLD,0CAiLC;AAED,SAAS,yBAAyB;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG;QAAE,OAAO,+BAA+B,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,+BAA+B,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,0BAA0B;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG;QAAE,OAAO,gCAAgC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -7,14 +7,58 @@ import type { MeterProvider } from "@opentelemetry/sdk-metrics";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare const FEATURE_TYPE_FEATURE = 0;
|
|
9
9
|
export declare const FEATURE_TYPE_INSTRUMENTATION = 1;
|
|
10
|
+
/**
|
|
11
|
+
* Options for {@link SdkStatsMetrics}.
|
|
12
|
+
*/
|
|
13
|
+
export interface SdkStatsMetricsOptions {
|
|
14
|
+
/** Override the distro version reported on every observation. */
|
|
15
|
+
distroVersion?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Customer instrumentation key emitted as the `cikey` customDimension
|
|
18
|
+
* on every SDKStats observation, per the Application Insights SDKStats
|
|
19
|
+
* spec. Reported as `"N/A"` when undefined or empty (e.g. for OTLP-only
|
|
20
|
+
* customers without an Application Insights connection string).
|
|
21
|
+
*/
|
|
22
|
+
cikey?: string;
|
|
23
|
+
/**
|
|
24
|
+
* When `true`, skip the Feature / Feature.instrumentations gauges. Used
|
|
25
|
+
* on the Azure-Monitor-enabled path because the AzMon exporter's own
|
|
26
|
+
* long-interval SDKStats already emits those gauges (with our distro
|
|
27
|
+
* bits bridged in via `AZURE_MONITOR_STATSBEAT_FEATURES`); registering
|
|
28
|
+
* them here would double-count.
|
|
29
|
+
*
|
|
30
|
+
* The network SDKStats gauge (`Request_Success_Count`) is always
|
|
31
|
+
* registered regardless of this flag — coexistence with AzMon's own
|
|
32
|
+
* network SDKStats is safe because the (endpoint, host) attributes
|
|
33
|
+
* partition the time series.
|
|
34
|
+
*/
|
|
35
|
+
networkOnly?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* MeterProvider for long-interval gauges (Feature /
|
|
38
|
+
* Feature.instrumentations). May be undefined when `networkOnly` is
|
|
39
|
+
* true. When provided, gauges are registered on a meter from this
|
|
40
|
+
* provider so they export at the long (24h) cadence.
|
|
41
|
+
*/
|
|
42
|
+
longMeterProvider?: MeterProvider;
|
|
43
|
+
/**
|
|
44
|
+
* MeterProvider for short-interval gauges (network SDKStats like
|
|
45
|
+
* `Request_Success_Count`). Gauges are registered on a meter from
|
|
46
|
+
* this provider so they export at the short (15 min) cadence.
|
|
47
|
+
*/
|
|
48
|
+
shortMeterProvider: MeterProvider;
|
|
49
|
+
}
|
|
10
50
|
/**
|
|
11
51
|
* Registers observable gauges that emit feature/instrumentation data
|
|
12
|
-
* derived from the global SDKStats state
|
|
52
|
+
* derived from the global SDKStats state, plus per-export network
|
|
53
|
+
* SDKStats counters drained from {@link ./networkStats.js}.
|
|
13
54
|
*/
|
|
14
55
|
export declare class SdkStatsMetrics {
|
|
15
56
|
private readonly commonAttributes;
|
|
16
|
-
constructor(
|
|
57
|
+
constructor(options: SdkStatsMetricsOptions);
|
|
58
|
+
/** @deprecated Use the options-object overload instead. */
|
|
59
|
+
constructor(meterProvider: MeterProvider, options?: Omit<SdkStatsMetricsOptions, "shortMeterProvider" | "longMeterProvider">);
|
|
17
60
|
private observeFeatures;
|
|
18
61
|
private observeInstrumentations;
|
|
62
|
+
private makeNetworkCallback;
|
|
19
63
|
}
|
|
20
64
|
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/sdkstats/metrics.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAOhE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAuB9C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,aAAa,CAAC;IAClC;;;;OAIG;IACH,kBAAkB,EAAE,aAAa,CAAC;CACnC;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;gBAE9C,OAAO,EAAE,sBAAsB;IAC3C,2DAA2D;gBAEzD,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,oBAAoB,GAAG,mBAAmB,CAAC;IA4EpF,OAAO,CAAC,eAAe,CAcrB;IAEF,OAAO,CAAC,uBAAuB,CAU7B;IAEF,OAAO,CAAC,mBAAmB;CAY5B"}
|
|
@@ -19,6 +19,7 @@ exports.SdkStatsMetrics = exports.FEATURE_TYPE_INSTRUMENTATION = exports.FEATURE
|
|
|
19
19
|
const node_os_1 = __importDefault(require("node:os"));
|
|
20
20
|
const types_js_1 = require("../types.js");
|
|
21
21
|
const state_js_1 = require("./state.js");
|
|
22
|
+
const networkStats_js_1 = require("./networkStats.js");
|
|
22
23
|
/**
|
|
23
24
|
* Feature SDKStats `type` dimension values, per the Application Insights
|
|
24
25
|
* SDKStats specification.
|
|
@@ -29,29 +30,85 @@ exports.FEATURE_TYPE_FEATURE = 0;
|
|
|
29
30
|
exports.FEATURE_TYPE_INSTRUMENTATION = 1;
|
|
30
31
|
const FEATURE_METRIC_NAME = "Feature";
|
|
31
32
|
const INSTRUMENTATION_METRIC_NAME = "Feature.instrumentations";
|
|
32
|
-
const
|
|
33
|
+
const SDKSTATS_LANGUAGE = "node";
|
|
34
|
+
const NETWORK_GAUGE_SPECS = [
|
|
35
|
+
{
|
|
36
|
+
metric: networkStats_js_1.REQUEST_SUCCESS_NAME,
|
|
37
|
+
unit: "count",
|
|
38
|
+
description: "Number of successful HTTP exports per endpoint",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
33
41
|
/**
|
|
34
42
|
* Registers observable gauges that emit feature/instrumentation data
|
|
35
|
-
* derived from the global SDKStats state
|
|
43
|
+
* derived from the global SDKStats state, plus per-export network
|
|
44
|
+
* SDKStats counters drained from {@link ./networkStats.js}.
|
|
36
45
|
*/
|
|
37
46
|
class SdkStatsMetrics {
|
|
38
47
|
commonAttributes;
|
|
39
|
-
constructor(
|
|
40
|
-
|
|
48
|
+
constructor(providerOrOptions, legacyOptions) {
|
|
49
|
+
let longMeterProvider;
|
|
50
|
+
let shortMeterProvider;
|
|
51
|
+
let distroVersion;
|
|
52
|
+
let networkOnly;
|
|
53
|
+
let cikey;
|
|
54
|
+
if ("shortMeterProvider" in providerOrOptions) {
|
|
55
|
+
// New options-object overload
|
|
56
|
+
longMeterProvider = providerOrOptions.longMeterProvider;
|
|
57
|
+
shortMeterProvider = providerOrOptions.shortMeterProvider;
|
|
58
|
+
distroVersion = providerOrOptions.distroVersion;
|
|
59
|
+
networkOnly = providerOrOptions.networkOnly ?? false;
|
|
60
|
+
cikey = providerOrOptions.cikey;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Legacy single-provider overload (used by tests)
|
|
64
|
+
longMeterProvider = providerOrOptions;
|
|
65
|
+
shortMeterProvider = providerOrOptions;
|
|
66
|
+
distroVersion = legacyOptions?.distroVersion;
|
|
67
|
+
networkOnly = legacyOptions?.networkOnly ?? false;
|
|
68
|
+
cikey = legacyOptions?.cikey;
|
|
69
|
+
}
|
|
70
|
+
// Per spec/sdkstats.md the required customDimensions on every
|
|
71
|
+
// SDKStats observation are: rp, attach, runtimeVersion, os,
|
|
72
|
+
// language, version, cikey (plus endpoint/host on network gauges and
|
|
73
|
+
// statusCode/exceptionType where applicable). `cikey` falls back to
|
|
74
|
+
// "N/A" when unset.
|
|
41
75
|
this.commonAttributes = {
|
|
76
|
+
rp: "unknown",
|
|
77
|
+
attach: "Manual",
|
|
42
78
|
runtimeVersion: process.version,
|
|
43
79
|
os: node_os_1.default.type(),
|
|
44
|
-
language:
|
|
80
|
+
language: SDKSTATS_LANGUAGE,
|
|
45
81
|
version: distroVersion || types_js_1.MICROSOFT_OPENTELEMETRY_VERSION,
|
|
82
|
+
cikey: cikey || "N/A",
|
|
46
83
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
84
|
+
// Feature / instrumentation bitmask gauges are skipped when running
|
|
85
|
+
// alongside the Azure Monitor exporter's own SDKStats — that pipeline
|
|
86
|
+
// already emits them (with our distro bits bridged in via
|
|
87
|
+
// `_bridge_sdkstats_to_azure_monitor`) and would collide with these.
|
|
88
|
+
// These gauges are registered on the long-interval MeterProvider.
|
|
89
|
+
if (!networkOnly && longMeterProvider) {
|
|
90
|
+
const longMeter = longMeterProvider.getMeter("microsoft.opentelemetry.sdkstats");
|
|
91
|
+
const featureGauge = longMeter.createObservableGauge(FEATURE_METRIC_NAME, {
|
|
92
|
+
description: "SDKStats metric tracking enabled features",
|
|
93
|
+
});
|
|
94
|
+
featureGauge.addCallback(this.observeFeatures);
|
|
95
|
+
const instrumentationGauge = longMeter.createObservableGauge(INSTRUMENTATION_METRIC_NAME, {
|
|
96
|
+
description: "SDKStats metric tracking enabled instrumentations",
|
|
97
|
+
});
|
|
98
|
+
instrumentationGauge.addCallback(this.observeInstrumentations);
|
|
99
|
+
}
|
|
100
|
+
// Network SDKStats gauges — always registered on the short-interval
|
|
101
|
+
// MeterProvider. Each callback drains the counts accumulated by
|
|
102
|
+
// exporters between observations and emits one Observation per
|
|
103
|
+
// (endpoint, host) tuple.
|
|
104
|
+
const shortMeter = shortMeterProvider.getMeter("microsoft.opentelemetry.sdkstats.network");
|
|
105
|
+
for (const spec of NETWORK_GAUGE_SPECS) {
|
|
106
|
+
const gauge = shortMeter.createObservableGauge(spec.metric, {
|
|
107
|
+
unit: spec.unit,
|
|
108
|
+
description: spec.description,
|
|
109
|
+
});
|
|
110
|
+
gauge.addCallback(this.makeNetworkCallback(spec));
|
|
111
|
+
}
|
|
55
112
|
}
|
|
56
113
|
observeFeatures = (result) => {
|
|
57
114
|
const featureBits = (0, state_js_1.getSdkStatsFeatureFlags)();
|
|
@@ -79,6 +136,18 @@ class SdkStatsMetrics {
|
|
|
79
136
|
type: exports.FEATURE_TYPE_INSTRUMENTATION,
|
|
80
137
|
});
|
|
81
138
|
};
|
|
139
|
+
makeNetworkCallback(spec) {
|
|
140
|
+
return (result) => {
|
|
141
|
+
for (const [key, value] of (0, networkStats_js_1.drain)(spec.metric)) {
|
|
142
|
+
const attrs = {
|
|
143
|
+
...this.commonAttributes,
|
|
144
|
+
endpoint: key[0],
|
|
145
|
+
host: key[1],
|
|
146
|
+
};
|
|
147
|
+
result.observe(value, attrs);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
}
|
|
82
151
|
}
|
|
83
152
|
exports.SdkStatsMetrics = SdkStatsMetrics;
|
|
84
153
|
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/sdkstats/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network SDKStats accumulator for SDK self-telemetry.
|
|
3
|
+
*
|
|
4
|
+
* Per-export success counts for telemetry exporters. Exporters call
|
|
5
|
+
* {@link recordSuccess} after each successful transmit; the
|
|
6
|
+
* {@link SdkStatsMetrics} observable-gauge callbacks drain the
|
|
7
|
+
* accumulated counts on each export interval.
|
|
8
|
+
*
|
|
9
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/_utils.py` from the Python
|
|
10
|
+
* distro (microsoft/opentelemetry-distro-python#144).
|
|
11
|
+
*/
|
|
12
|
+
export declare const REQUEST_SUCCESS_NAME = "Request_Success_Count";
|
|
13
|
+
/**
|
|
14
|
+
* Names of registered network SDKStats metrics, in registration order.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare const NETWORK_METRIC_NAMES: readonly ["Request_Success_Count"];
|
|
19
|
+
export type NetworkMetricName = (typeof NETWORK_METRIC_NAMES)[number];
|
|
20
|
+
/**
|
|
21
|
+
* Composite key for an aggregated network SDKStats counter.
|
|
22
|
+
*
|
|
23
|
+
* Per the Application Insights SDKStats spec the per-key dimensions are
|
|
24
|
+
* `endpoint` (category, e.g. "otlp", "a365") and `host` (stamp-specific
|
|
25
|
+
* region or hostname).
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export type NetworkKey = readonly [string, string];
|
|
30
|
+
export declare function recordSuccess(endpoint: string, host: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Compute the stamp-specific short host for the SDKStats `host` dimension.
|
|
33
|
+
*
|
|
34
|
+
* Mirrors `getShortHost` in the AzMon exporter's `NetworkStatsbeatMetrics` class
|
|
35
|
+
* but additionally strips any trailing port (`:4318`) so localhost-style
|
|
36
|
+
* URLs report a clean `localhost` instead of `localhost:4318`. Examples:
|
|
37
|
+
* `https://westus2-1.in.applicationinsights.azure.com` → `westus2`
|
|
38
|
+
* `http://localhost:4318/v1/traces` → `localhost`
|
|
39
|
+
* `https://collector.example.com:8080` → `collector`
|
|
40
|
+
* `https://my-otlp-collector.example.com` → `my-otlp-collector`
|
|
41
|
+
* For non-URL inputs, returns the hostname or the raw input on failure.
|
|
42
|
+
*
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export declare function shortHost(input: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Atomically return and reset the counts for `metric`.
|
|
48
|
+
*
|
|
49
|
+
* Used by the observable-gauge callbacks so each observation reports only
|
|
50
|
+
* the delta accumulated during the export interval.
|
|
51
|
+
*/
|
|
52
|
+
export declare function drain(metric: NetworkMetricName): Map<NetworkKey, number>;
|
|
53
|
+
/**
|
|
54
|
+
* @internal Test-only: clear all network SDKStats counters.
|
|
55
|
+
*/
|
|
56
|
+
export declare function _resetAllForTest(): void;
|
|
57
|
+
//# sourceMappingURL=networkStats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networkStats.d.ts","sourceRoot":"","sources":["../../../src/sdkstats/networkStats.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AASH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,oCAAkC,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA4BnD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwB/C;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAQxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.NETWORK_METRIC_NAMES = exports.REQUEST_SUCCESS_NAME = void 0;
|
|
6
|
+
exports.recordSuccess = recordSuccess;
|
|
7
|
+
exports.shortHost = shortHost;
|
|
8
|
+
exports.drain = drain;
|
|
9
|
+
exports._resetAllForTest = _resetAllForTest;
|
|
10
|
+
/**
|
|
11
|
+
* Network SDKStats accumulator for SDK self-telemetry.
|
|
12
|
+
*
|
|
13
|
+
* Per-export success counts for telemetry exporters. Exporters call
|
|
14
|
+
* {@link recordSuccess} after each successful transmit; the
|
|
15
|
+
* {@link SdkStatsMetrics} observable-gauge callbacks drain the
|
|
16
|
+
* accumulated counts on each export interval.
|
|
17
|
+
*
|
|
18
|
+
* Mirrors `src/microsoft/opentelemetry/_sdkstats/_utils.py` from the Python
|
|
19
|
+
* distro (microsoft/opentelemetry-distro-python#144).
|
|
20
|
+
*/
|
|
21
|
+
// Metric names must match the AzMon SDKStats backend's recognized
|
|
22
|
+
// schema (see `StatsbeatCounter` enum in
|
|
23
|
+
// `@azure/monitor-opentelemetry-exporter/dist/esm/export/statsbeat/types.js`).
|
|
24
|
+
// Sending envelopes under any other name returns HTTP 200 but the
|
|
25
|
+
// backend doesn't index them, so they're invisible in the SDKStats
|
|
26
|
+
// dashboards. The constants below intentionally match the wire-format
|
|
27
|
+
// names — do NOT rename them to lowercase.
|
|
28
|
+
exports.REQUEST_SUCCESS_NAME = "Request_Success_Count";
|
|
29
|
+
/**
|
|
30
|
+
* Names of registered network SDKStats metrics, in registration order.
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
exports.NETWORK_METRIC_NAMES = [exports.REQUEST_SUCCESS_NAME];
|
|
35
|
+
// Single-threaded JS execution → no lock needed (Python uses one because of
|
|
36
|
+
// the GIL + threads; Node.js doesn't share JS objects across worker threads).
|
|
37
|
+
const REQUESTS_MAP = {
|
|
38
|
+
[exports.REQUEST_SUCCESS_NAME]: new Map(),
|
|
39
|
+
};
|
|
40
|
+
// `Map` keys are compared by identity for arrays/objects, so we serialize
|
|
41
|
+
// the key tuple to a string. The `\u0000` separator can't appear in a URL
|
|
42
|
+
// hostname or HTTP status string, so this is unambiguous.
|
|
43
|
+
const KEY_SEPARATOR = "\u0000";
|
|
44
|
+
function encodeKey(key) {
|
|
45
|
+
return key.join(KEY_SEPARATOR);
|
|
46
|
+
}
|
|
47
|
+
function decodeKey(encoded) {
|
|
48
|
+
const parts = encoded.split(KEY_SEPARATOR);
|
|
49
|
+
return [parts[0], parts[1]];
|
|
50
|
+
}
|
|
51
|
+
function bump(metric, key, value = 1) {
|
|
52
|
+
const bucket = REQUESTS_MAP[metric];
|
|
53
|
+
const encoded = encodeKey(key);
|
|
54
|
+
bucket.set(encoded, (bucket.get(encoded) ?? 0) + value);
|
|
55
|
+
}
|
|
56
|
+
function recordSuccess(endpoint, host) {
|
|
57
|
+
bump(exports.REQUEST_SUCCESS_NAME, [endpoint, host]);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Compute the stamp-specific short host for the SDKStats `host` dimension.
|
|
61
|
+
*
|
|
62
|
+
* Mirrors `getShortHost` in the AzMon exporter's `NetworkStatsbeatMetrics` class
|
|
63
|
+
* but additionally strips any trailing port (`:4318`) so localhost-style
|
|
64
|
+
* URLs report a clean `localhost` instead of `localhost:4318`. Examples:
|
|
65
|
+
* `https://westus2-1.in.applicationinsights.azure.com` → `westus2`
|
|
66
|
+
* `http://localhost:4318/v1/traces` → `localhost`
|
|
67
|
+
* `https://collector.example.com:8080` → `collector`
|
|
68
|
+
* `https://my-otlp-collector.example.com` → `my-otlp-collector`
|
|
69
|
+
* For non-URL inputs, returns the hostname or the raw input on failure.
|
|
70
|
+
*
|
|
71
|
+
* @internal
|
|
72
|
+
*/
|
|
73
|
+
function shortHost(input) {
|
|
74
|
+
if (!input)
|
|
75
|
+
return "unknown";
|
|
76
|
+
let host = input;
|
|
77
|
+
try {
|
|
78
|
+
const hostRegex = /^https?:\/\/(?:www\.)?([^/.]+)/;
|
|
79
|
+
const res = hostRegex.exec(input);
|
|
80
|
+
if (res && res.length > 1) {
|
|
81
|
+
host = res[1];
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
try {
|
|
85
|
+
host = new URL(input).hostname || input;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
host = input;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
host = host.replace(".in.applicationinsights.azure.com", "");
|
|
92
|
+
// Strip Azure stamp suffix (e.g. westus2-1 → westus2)
|
|
93
|
+
host = host.replace(/-\d+$/, "");
|
|
94
|
+
const colon = host.indexOf(":");
|
|
95
|
+
if (colon > 0)
|
|
96
|
+
host = host.slice(0, colon);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
/* fall through */
|
|
100
|
+
}
|
|
101
|
+
return host;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Atomically return and reset the counts for `metric`.
|
|
105
|
+
*
|
|
106
|
+
* Used by the observable-gauge callbacks so each observation reports only
|
|
107
|
+
* the delta accumulated during the export interval.
|
|
108
|
+
*/
|
|
109
|
+
function drain(metric) {
|
|
110
|
+
const bucket = REQUESTS_MAP[metric];
|
|
111
|
+
const snapshot = new Map();
|
|
112
|
+
for (const [encoded, value] of bucket) {
|
|
113
|
+
snapshot.set(decodeKey(encoded), value);
|
|
114
|
+
}
|
|
115
|
+
bucket.clear();
|
|
116
|
+
return snapshot;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* @internal Test-only: clear all network SDKStats counters.
|
|
120
|
+
*/
|
|
121
|
+
function _resetAllForTest() {
|
|
122
|
+
for (const name of exports.NETWORK_METRIC_NAMES) {
|
|
123
|
+
REQUESTS_MAP[name].clear();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=networkStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networkStats.js","sourceRoot":"","sources":["../../../src/sdkstats/networkStats.ts"],"names":[],"mappings":"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"}
|