@azure/monitor-opentelemetry 1.18.2 → 1.20.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 +12 -1
- package/dist/commonjs/browserSdkLoader/browserSdkLoaderHelper.d.ts.map +1 -1
- package/dist/commonjs/browserSdkLoader/browserSdkLoaderHelper.js +1 -2
- package/dist/commonjs/browserSdkLoader/browserSdkLoaderHelper.js.map +1 -1
- package/dist/commonjs/index.d.ts +2 -2
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +19 -15
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/logs/batchLogRecordProcessor.js +1 -1
- package/dist/commonjs/logs/batchLogRecordProcessor.js.map +1 -1
- package/dist/commonjs/logs/handler.d.ts +3 -0
- package/dist/commonjs/logs/handler.d.ts.map +1 -1
- package/dist/commonjs/logs/handler.js +23 -2
- package/dist/commonjs/logs/handler.js.map +1 -1
- package/dist/commonjs/metrics/performanceCounters.d.ts +3 -0
- package/dist/commonjs/metrics/performanceCounters.d.ts.map +1 -1
- package/dist/commonjs/metrics/performanceCounters.js +26 -26
- package/dist/commonjs/metrics/performanceCounters.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts +16 -0
- package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
- package/dist/commonjs/metrics/quickpulse/credentialUtils.js +48 -0
- package/dist/commonjs/metrics/quickpulse/credentialUtils.js.map +1 -0
- package/dist/commonjs/metrics/quickpulse/export/sender.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/export/sender.js +8 -7
- package/dist/commonjs/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/liveMetrics.js +4 -2
- package/dist/commonjs/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/commonjs/package.json +6 -1
- package/dist/commonjs/shared/config.d.ts +7 -0
- package/dist/commonjs/shared/config.d.ts.map +1 -1
- package/dist/commonjs/shared/config.js +28 -6
- package/dist/commonjs/shared/config.js.map +1 -1
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts +1 -0
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.js +13 -12
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.js.map +1 -1
- package/dist/commonjs/traces/handler.d.ts.map +1 -1
- package/dist/commonjs/traces/handler.js +1 -7
- package/dist/commonjs/traces/handler.js.map +1 -1
- package/dist/commonjs/traces/sampler.js +1 -1
- package/dist/commonjs/traces/sampler.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/types.d.ts +20 -1
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +47 -3
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/utils/common.d.ts +34 -0
- package/dist/commonjs/utils/common.d.ts.map +1 -1
- package/dist/commonjs/utils/common.js +63 -0
- package/dist/commonjs/utils/common.js.map +1 -1
- package/dist/commonjs/utils/logUtils.d.ts +5 -0
- package/dist/commonjs/utils/logUtils.d.ts.map +1 -1
- package/dist/commonjs/utils/logUtils.js +8 -0
- package/dist/commonjs/utils/logUtils.js.map +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js +3 -2
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
- package/dist/commonjs/utils/statsbeat.d.ts.map +1 -1
- package/dist/commonjs/utils/statsbeat.js +38 -31
- package/dist/commonjs/utils/statsbeat.js.map +1 -1
- package/dist/esm/browserSdkLoader/browserSdkLoaderHelper.d.ts.map +1 -1
- package/dist/esm/browserSdkLoader/browserSdkLoaderHelper.js +1 -2
- package/dist/esm/browserSdkLoader/browserSdkLoaderHelper.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/logs/batchLogRecordProcessor.js +1 -1
- package/dist/esm/logs/batchLogRecordProcessor.js.map +1 -1
- package/dist/esm/logs/handler.d.ts +3 -0
- package/dist/esm/logs/handler.d.ts.map +1 -1
- package/dist/esm/logs/handler.js +24 -3
- package/dist/esm/logs/handler.js.map +1 -1
- package/dist/esm/metrics/performanceCounters.d.ts +3 -0
- package/dist/esm/metrics/performanceCounters.d.ts.map +1 -1
- package/dist/esm/metrics/performanceCounters.js +26 -26
- package/dist/esm/metrics/performanceCounters.js.map +1 -1
- package/dist/esm/metrics/quickpulse/credentialUtils.d.ts +16 -0
- package/dist/esm/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
- package/dist/esm/metrics/quickpulse/credentialUtils.js +45 -0
- package/dist/esm/metrics/quickpulse/credentialUtils.js.map +1 -0
- package/dist/esm/metrics/quickpulse/export/sender.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/export/sender.js +8 -7
- package/dist/esm/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist/esm/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/liveMetrics.js +4 -2
- package/dist/esm/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/esm/package.json +6 -1
- package/dist/esm/shared/config.d.ts +7 -0
- package/dist/esm/shared/config.d.ts.map +1 -1
- package/dist/esm/shared/config.js +29 -7
- package/dist/esm/shared/config.js.map +1 -1
- package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts +1 -0
- package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
- package/dist/esm/shared/logging/diagFileConsoleLogger.js +13 -12
- package/dist/esm/shared/logging/diagFileConsoleLogger.js.map +1 -1
- package/dist/esm/traces/handler.d.ts.map +1 -1
- package/dist/esm/traces/handler.js +1 -7
- package/dist/esm/traces/handler.js.map +1 -1
- package/dist/esm/traces/sampler.js +1 -1
- package/dist/esm/traces/sampler.js.map +1 -1
- package/dist/esm/types.d.ts +20 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +46 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/common.d.ts +34 -0
- package/dist/esm/utils/common.d.ts.map +1 -1
- package/dist/esm/utils/common.js +59 -0
- package/dist/esm/utils/common.js.map +1 -1
- package/dist/esm/utils/logUtils.d.ts +5 -0
- package/dist/esm/utils/logUtils.d.ts.map +1 -1
- package/dist/esm/utils/logUtils.js +7 -0
- package/dist/esm/utils/logUtils.js.map +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js +3 -2
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
- package/dist/esm/utils/statsbeat.d.ts.map +1 -1
- package/dist/esm/utils/statsbeat.js +39 -32
- package/dist/esm/utils/statsbeat.js.map +1 -1
- package/package.json +31 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveMetrics.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/liveMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport os from \"node:os\";\nimport type {\n MeterProviderOptions,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type { InternalConfig } from \"../../shared/config.js\";\nimport type { Meter, ObservableGauge, ObservableResult } from \"@opentelemetry/api\";\nimport { SpanKind, SpanStatusCode, ValueType, context } from \"@opentelemetry/api\";\nimport type { ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { RandomIdGenerator } from \"@opentelemetry/sdk-trace-base\";\nimport type {\n DocumentIngress,\n Exception,\n MonitoringDataPoint,\n IsSubscribedOptionalParams,\n RemoteDependency,\n Request,\n Trace,\n KeyValuePairStringString,\n DerivedMetricInfo,\n FilterConjunctionGroupInfo,\n} from \"../../generated/index.js\";\nimport type { QuickpulseResponse } from \"./export/sender.js\";\nimport {\n getLogDocument,\n getSdkVersion,\n getSpanData,\n getLogData,\n getSpanDocument,\n getTransmissionTime,\n isRequestData,\n getSpanExceptionColumns,\n isExceptionData,\n isDependencyData,\n} from \"./utils.js\";\nimport { QuickpulseMetricExporter } from \"./export/exporter.js\";\nimport { QuickpulseSender } from \"./export/sender.js\";\nimport { ConnectionStringParser } from \"../../utils/connectionStringParser.js\";\nimport { DEFAULT_LIVEMETRICS_ENDPOINT } from \"../../types.js\";\nimport type {\n QuickpulseExporterOptions,\n RequestData,\n DependencyData,\n TraceData,\n ExceptionData,\n TelemetryData,\n} from \"./types.js\";\nimport { QuickPulseOpenTelemetryMetricNames } from \"./types.js\";\nimport { hrTimeToMilliseconds, suppressTracing } from \"@opentelemetry/core\";\nimport { getInstance } from \"../../utils/statsbeat.js\";\nimport type { CollectionConfigurationError } from \"../../generated/index.js\";\nimport { Filter } from \"./filtering/filter.js\";\nimport { Validator } from \"./filtering/validator.js\";\nimport { CollectionConfigurationErrorTracker } from \"./filtering/collectionConfigurationErrorTracker.js\";\nimport { Projection } from \"./filtering/projection.js\";\nimport {\n TelemetryTypeError,\n UnexpectedFilterCreateError,\n DuplicateMetricIdError,\n MetricFailureToCreateError,\n} from \"./filtering/quickpulseErrors.js\";\nimport { SEMATTRS_EXCEPTION_TYPE } from \"@opentelemetry/semantic-conventions\";\nimport { getPhysicalMemory, getProcessorTimeNormalized } from \"../utils.js\";\nimport { getCloudRole, getCloudRoleInstance } from \"../utils.js\";\nimport { Logger } from \"../../shared/logging/logger.js\";\n\nconst POST_INTERVAL = 1000;\nconst MAX_POST_WAIT_TIME = 20000;\nconst PING_INTERVAL = 5000;\nconst MAX_PING_WAIT_TIME = 60000;\nconst FALLBACK_INTERVAL = 60000;\n\n/**\n * Azure Monitor Live Metrics\n * @internal\n */\nexport class LiveMetrics {\n private config: InternalConfig;\n private meterProvider: MeterProvider | undefined;\n private metricReader: PeriodicExportingMetricReader | undefined;\n private meter: Meter | undefined;\n private requestDurationGauge: ObservableGauge | undefined;\n private dependencyDurationGauge: ObservableGauge | undefined;\n private requestRateGauge: ObservableGauge | undefined;\n private requestFailedRateGauge: ObservableGauge | undefined;\n private dependencyRateGauge: ObservableGauge | undefined;\n private dependencyFailedRateGauge: ObservableGauge | undefined;\n private processPhysicalBytesGauge: ObservableGauge | undefined;\n private percentProcessorTimeNormalizedGauge: ObservableGauge | undefined;\n private exceptionsRateGauge: ObservableGauge | undefined;\n\n private documents: DocumentIngress[] = [];\n private pingInterval: number;\n private postInterval: number;\n private quickpulseExporter: QuickpulseMetricExporter;\n private pingSender: QuickpulseSender;\n private isCollectingData: boolean;\n private isDeactivating: boolean = false;\n private deactivatingPromise: Promise<void> | undefined;\n private lastSuccessTime: number = Date.now();\n private handle: NodeJS.Timer;\n // Monitoring data point with common properties\n private baseMonitoringDataPoint: MonitoringDataPoint;\n private totalRequestCount = 0;\n private totalFailedRequestCount = 0;\n private totalDependencyCount = 0;\n private totalFailedDependencyCount = 0;\n private totalExceptionCount = 0;\n private requestDuration = 0;\n private dependencyDuration = 0;\n private lastRequestDuration: { count: number; duration: number; time: number } = {\n count: 0,\n duration: 0,\n time: 0,\n };\n private lastRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastDependencyDuration: { count: number; duration: number; time: number } = {\n count: 0,\n duration: 0,\n time: 0,\n };\n private lastDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastExceptionRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastCpuUsage: NodeJS.CpuUsage;\n private lastHrTime: bigint;\n private statsbeatOptionsUpdated = false;\n private etag: string = \"\";\n private errorTracker: CollectionConfigurationErrorTracker =\n new CollectionConfigurationErrorTracker();\n // For tracking of duplicate metric ids in the same configuration.\n private seenMetricIds: Set<string> = new Set();\n private validDerivedMetrics: Map<string, DerivedMetricInfo[]> = new Map();\n private derivedMetricProjection: Projection = new Projection();\n private validator: Validator = new Validator();\n private filter: Filter = new Filter();\n // type: Map<telemetryType, Map<id, FilterConjunctionGroupInfo[]>>\n private validDocumentFilterConjuctionGroupInfos: Map<\n string,\n Map<string, FilterConjunctionGroupInfo[]>\n > = new Map();\n /**\n * Initializes a new instance of the StandardMetrics class.\n * @param config - Distro configuration.\n * @param options - Standard Metrics options.\n */\n constructor(config: InternalConfig) {\n this.config = config;\n const idGenerator = new RandomIdGenerator();\n const streamId = idGenerator.generateTraceId();\n const machineName = os.hostname();\n const instance = getCloudRoleInstance(this.config.resource);\n const roleName = getCloudRole(this.config.resource);\n const version = getSdkVersion();\n this.baseMonitoringDataPoint = {\n version: version,\n invariantVersion: 5, // 5 means we support live metrics filtering of metrics and documents\n instance: instance,\n roleName: roleName,\n machineName: machineName,\n streamId: streamId,\n performanceCollectionSupported: true,\n isWebApp: process.env[\"WEBSITE_SITE_NAME\"] ? true : false,\n };\n const parsedConnectionString = ConnectionStringParser.parse(\n this.config.azureMonitorExporterOptions.connectionString ||\n process.env[\"APPLICATIONINSIGHTS_CONNECTION_STRING\"],\n );\n this.pingSender = new QuickpulseSender({\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || \"\",\n credential: this.config.azureMonitorExporterOptions.credential,\n credentialScopes:\n parsedConnectionString.aadaudience ||\n this.config.azureMonitorExporterOptions.credentialScopes,\n });\n const exporterOptions: QuickpulseExporterOptions = {\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || \"\",\n credential: this.config.azureMonitorExporterOptions.credential,\n credentialScopes:\n parsedConnectionString.aadaudience ||\n this.config.azureMonitorExporterOptions.credentialScopes,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n postCallback: this.quickPulseDone.bind(this),\n getDocumentsFn: this.getDocuments.bind(this),\n getErrorsFn: this.getErrors.bind(this),\n getDerivedMetricValuesFn: this.getDerivedMetricValues.bind(this),\n baseMonitoringDataPoint: this.baseMonitoringDataPoint,\n };\n this.quickpulseExporter = new QuickpulseMetricExporter(exporterOptions);\n this.isCollectingData = false;\n this.pingInterval = PING_INTERVAL; // Default\n this.postInterval = POST_INTERVAL;\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.handle = setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref(); // Don't block apps from terminating\n this.lastCpuUsage = process.cpuUsage();\n this.lastHrTime = process.hrtime.bigint();\n }\n\n public async shutdown(): Promise<void> {\n // Force collecting=false before tearing down so the shutdown's final\n // force-flush export, if it fails, cannot trigger the deactivate/\n // reactivate fallback in quickPulseDone(). Delegate to deactivateMetrics()\n // which manages the in-flight deactivation promise so callers (including\n // a concurrent failure-fallback in quickPulseDone) all observe the same\n // completion and shutdown waits for any in-flight deactivation to finish.\n this.isCollectingData = false;\n await this.deactivateMetrics();\n }\n\n private async goQuickpulse(): Promise<void> {\n if (!this.isCollectingData) {\n // If not collecting, Ping\n try {\n const params: IsSubscribedOptionalParams = {\n transmissionTime: getTransmissionTime(),\n monitoringDataPoint: this.baseMonitoringDataPoint,\n configurationEtag: this.etag,\n };\n await context.with(suppressTracing(context.active()), async () => {\n const response = await this.pingSender.isSubscribed(params);\n this.quickPulseDone(response);\n });\n } catch (error) {\n this.quickPulseDone(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.handle = setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n if (this.isCollectingData) {\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n\n private async quickPulseDone(response: QuickpulseResponse | undefined): Promise<void> {\n if (!response) {\n if (!this.isCollectingData) {\n if (Date.now() - this.lastSuccessTime >= MAX_PING_WAIT_TIME) {\n this.pingInterval = FALLBACK_INTERVAL;\n }\n } else {\n if (Date.now() - this.lastSuccessTime >= MAX_POST_WAIT_TIME) {\n // Re-entrancy guard: MeterProvider.shutdown() triggers a final\n // force-flush export which, on failure, re-invokes this callback\n // synchronously from inside the shutdown's export call. If a\n // deactivation is already in flight, bail out — awaiting the\n // in-flight promise here would deadlock the exporter's callback.\n if (this.isDeactivating) {\n return;\n }\n this.postInterval = FALLBACK_INTERVAL;\n try {\n await this.deactivateMetrics();\n } catch (error) {\n // The exporter invokes postCallback without awaiting it, so a\n // rejection here would surface as an unhandled rejection. Swallow\n // and log so the failure path stays contained.\n Logger.getInstance().warn(\n \"Failed to deactivate Live Metrics during failure fallback\",\n error,\n );\n }\n // Reset the success-time baseline so the FALLBACK_INTERVAL backoff\n // can take effect before we consider deactivating again.\n this.lastSuccessTime = Date.now();\n // Re-check after the await: shutdown() may have run concurrently and\n // flipped isCollectingData to false. Don't restart collection in\n // that case — doing so would re-create the meterProvider after\n // shutdown has begun.\n if (this.isCollectingData) {\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n }\n } else {\n this.postInterval = POST_INTERVAL;\n // Update using response if needed\n this.lastSuccessTime = Date.now();\n this.isCollectingData =\n response.xMsQpsSubscribed && response.xMsQpsSubscribed === \"true\" ? true : false;\n if (response.xMsQpsConfigurationEtag && this.etag !== response.xMsQpsConfigurationEtag) {\n this.updateConfiguration(response);\n }\n\n // If collecting was stoped\n if (!this.isCollectingData && this.meterProvider) {\n this.etag = \"\";\n await this.deactivateMetrics();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.handle = setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n\n const endpointRedirect = response.xMsQpsServiceEndpointRedirectV2;\n if (endpointRedirect) {\n this.pingSender.handlePermanentRedirect(endpointRedirect);\n this.quickpulseExporter.getSender().handlePermanentRedirect(endpointRedirect);\n }\n const pollingInterval = response.xMsQpsServicePollingIntervalHint;\n if (pollingInterval) {\n this.pingInterval = Number(pollingInterval);\n } else {\n this.pingInterval = PING_INTERVAL;\n }\n }\n }\n\n // Activate live metrics collection\n public activateMetrics(options?: { collectionInterval: number }): void {\n if (this.meterProvider) {\n return;\n }\n // Turn on live metrics active collection for statsbeat\n if (!this.statsbeatOptionsUpdated) {\n getInstance().setStatsbeatFeatures({}, { liveMetrics: true });\n this.statsbeatOptionsUpdated = true;\n }\n this.totalDependencyCount = 0;\n this.totalExceptionCount = 0;\n this.totalFailedDependencyCount = 0;\n this.totalFailedRequestCount = 0;\n this.totalRequestCount = 0;\n this.requestDuration = 0;\n this.dependencyDuration = 0;\n this.lastRequestDuration = { count: 0, duration: 0, time: 0 };\n this.lastRequestRate = { count: 0, time: 0 };\n this.lastFailedRequestRate = { count: 0, time: 0 };\n this.lastDependencyDuration = { count: 0, duration: 0, time: 0 };\n this.lastDependencyRate = { count: 0, time: 0 };\n this.lastFailedDependencyRate = { count: 0, time: 0 };\n this.lastExceptionRate = { count: 0, time: 0 };\n\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.quickpulseExporter,\n exportIntervalMillis: options?.collectionInterval,\n };\n this.metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n const meterProviderConfig: MeterProviderOptions = {\n resource: this.config.resource,\n readers: [this.metricReader],\n };\n this.meterProvider = new MeterProvider(meterProviderConfig);\n this.meter = this.meterProvider.getMeter(\"AzureMonitorLiveMetricsMeter\");\n this.requestDurationGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.requestRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.requestFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyDurationGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.processPhysicalBytesGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.PHYSICAL_BYTES,\n {\n valueType: ValueType.INT,\n },\n );\n\n this.percentProcessorTimeNormalizedGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME_NORMALIZED,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.exceptionsRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.requestDurationGauge.addCallback(this.getRequestDuration.bind(this));\n this.requestRateGauge.addCallback(this.getRequestRate.bind(this));\n this.requestFailedRateGauge.addCallback(this.getRequestFailedRate.bind(this));\n this.dependencyDurationGauge.addCallback(this.getDependencyDuration.bind(this));\n this.dependencyRateGauge.addCallback(this.getDependencyRate.bind(this));\n this.dependencyFailedRateGauge.addCallback(this.getDependencyFailedRate.bind(this));\n this.exceptionsRateGauge.addCallback(this.getExceptionRate.bind(this));\n this.processPhysicalBytesGauge.addCallback(this.getPhysicalMemory.bind(this));\n this.percentProcessorTimeNormalizedGauge.addCallback(\n this.getProcessorTimeNormalized.bind(this),\n );\n }\n\n /**\n * Deactivate metric collection\n */\n public async deactivateMetrics(): Promise<void> {\n // Coalesce concurrent deactivations: callers (shutdown(), the\n // failure-fallback in quickPulseDone(), and the \"unsubscribed\" branch in\n // goQuickpulse()) can all race. Return the in-flight promise so every\n // caller awaits the same completion and the underlying meterProvider\n // shutdown only runs once.\n if (this.deactivatingPromise) {\n return this.deactivatingPromise;\n }\n this.isDeactivating = true;\n this.deactivatingPromise = (async () => {\n try {\n this.documents = [];\n this.validDocumentFilterConjuctionGroupInfos.clear();\n this.errorTracker.clearRunTimeErrors();\n this.errorTracker.clearValidationTimeErrors();\n this.validDerivedMetrics.clear();\n this.derivedMetricProjection.clearProjectionMaps();\n this.seenMetricIds.clear();\n // Capture and clear the reference before awaiting shutdown so any\n // re-entrant calls triggered by the shutdown's final force-flush\n // export observe meterProvider as undefined and exit early.\n const provider = this.meterProvider;\n this.meterProvider = undefined;\n await provider?.shutdown();\n } finally {\n this.isDeactivating = false;\n this.deactivatingPromise = undefined;\n }\n })();\n return this.deactivatingPromise;\n }\n\n /**\n * Force flush Meter Provider.\n */\n public async flush(): Promise<void> {\n await this.meterProvider?.forceFlush();\n }\n\n /**\n *Get OpenTelemetry MeterProvider\n */\n public getMeterProvider(): MeterProvider | undefined {\n return this.meterProvider;\n }\n\n public getDocuments(): DocumentIngress[] {\n const result: DocumentIngress[] = this.documents;\n this.documents = [];\n return result;\n }\n\n public getErrors(): CollectionConfigurationError[] {\n const result = this.errorTracker.getErrors();\n this.errorTracker.clearRunTimeErrors();\n return result;\n }\n\n public getDerivedMetricValues(): Map<string, number> {\n return this.derivedMetricProjection.getMetricValues();\n }\n\n private addDocument(document: DocumentIngress): void {\n if (document) {\n // Limit risk of memory leak by limiting doc length to something manageable\n if (this.documents.length > 20) {\n this.documents.shift(); // Remove oldest document\n }\n this.documents.push(document);\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n if (this.isCollectingData) {\n const columns: RequestData | DependencyData = getSpanData(span);\n let documentConfiguration: Map<string, FilterConjunctionGroupInfo[]>;\n let derivedMetricInfos: DerivedMetricInfo[];\n if (isRequestData(columns)) {\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Request\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n derivedMetricInfos = this.validDerivedMetrics.get(\"Request\") || [];\n } else {\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Dependency\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n derivedMetricInfos = this.validDerivedMetrics.get(\"Dependency\") || [];\n }\n this.applyDocumentFilters(documentConfiguration, columns);\n this.checkMetricFilterAndCreateProjection(derivedMetricInfos, columns);\n\n const durationMs = hrTimeToMilliseconds(span.duration);\n const success = span.status.code !== SpanStatusCode.ERROR;\n\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n this.totalRequestCount++;\n this.requestDuration += durationMs;\n if (!success) {\n this.totalFailedRequestCount++;\n }\n } else {\n this.totalDependencyCount++;\n this.dependencyDuration += durationMs;\n if (!success) {\n this.totalFailedDependencyCount++;\n }\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n const exceptionColumns: ExceptionData = getSpanExceptionColumns(\n event.attributes,\n span.attributes,\n );\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Exception\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n this.applyDocumentFilters(\n documentConfiguration,\n exceptionColumns,\n event.attributes[SEMATTRS_EXCEPTION_TYPE] as string,\n );\n derivedMetricInfos = this.validDerivedMetrics.get(\"Exception\") || [];\n this.checkMetricFilterAndCreateProjection(derivedMetricInfos, exceptionColumns);\n this.totalExceptionCount++;\n }\n });\n }\n }\n }\n\n /**\n * Record LogRecord metrics, add attribute so data is not aggregated again in ingestion\n * @internal\n */\n public recordLog(logRecord: SdkLogRecord): void {\n if (this.isCollectingData) {\n const columns: TraceData | ExceptionData = getLogData(logRecord);\n let derivedMetricInfos: DerivedMetricInfo[];\n let documentConfiguration: Map<string, FilterConjunctionGroupInfo[]>;\n if (isExceptionData(columns)) {\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Exception\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n this.applyDocumentFilters(\n documentConfiguration,\n columns,\n logRecord.attributes[SEMATTRS_EXCEPTION_TYPE] as string,\n );\n derivedMetricInfos = this.validDerivedMetrics.get(\"Exception\") || [];\n this.totalExceptionCount++;\n } else {\n // trace\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Trace\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n this.applyDocumentFilters(documentConfiguration, columns);\n derivedMetricInfos = this.validDerivedMetrics.get(\"Trace\") || [];\n }\n this.checkMetricFilterAndCreateProjection(derivedMetricInfos, columns);\n }\n }\n\n private getRequestDuration(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const requestInterval = this.totalRequestCount - this.lastRequestDuration.count || 0;\n const durationInterval = this.requestDuration - this.lastRequestDuration.duration || 0;\n const elapsedMs = currentTime - this.lastRequestDuration.time;\n if (elapsedMs > 0) {\n const averageExecutionTime = durationInterval / requestInterval || 0; // default to 0 in case no requests in this interval\n observableResult.observe(averageExecutionTime);\n }\n this.lastRequestDuration = {\n count: this.totalRequestCount,\n duration: this.requestDuration,\n time: currentTime,\n };\n }\n\n private getRequestRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalRequests = this.totalRequestCount - this.lastRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastRequestRate = {\n count: this.totalRequestCount,\n time: currentTime,\n };\n }\n\n private getRequestFailedRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalRequests = this.totalFailedRequestCount - this.lastFailedRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedRequestRate = {\n count: this.totalFailedRequestCount,\n time: currentTime,\n };\n }\n\n private getDependencyDuration(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const dependencyInterval = this.totalDependencyCount - this.lastDependencyDuration.count || 0;\n const durationInterval = this.dependencyDuration - this.lastDependencyDuration.duration || 0;\n const elapsedMs = currentTime - this.lastDependencyDuration.time;\n if (elapsedMs > 0) {\n const averageExecutionTime = durationInterval / dependencyInterval || 0; // default to 0 in case no dependencies in this interval\n observableResult.observe(averageExecutionTime);\n }\n this.lastDependencyDuration = {\n count: this.totalDependencyCount,\n duration: this.dependencyDuration,\n time: currentTime,\n };\n }\n\n private getDependencyRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalData = this.totalDependencyCount - this.lastDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastDependencyRate = {\n count: this.totalDependencyCount,\n time: currentTime,\n };\n }\n\n private getDependencyFailedRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalData = this.totalFailedDependencyCount - this.lastFailedDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedDependencyRate = {\n count: this.totalFailedDependencyCount,\n time: currentTime,\n };\n }\n\n private getExceptionRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalData = this.totalExceptionCount - this.lastExceptionRate.count || 0;\n const elapsedMs = currentTime - this.lastExceptionRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastExceptionRate = {\n count: this.totalExceptionCount,\n time: currentTime,\n };\n }\n\n private getPhysicalMemory(observableResult: ObservableResult): void {\n const rss = getPhysicalMemory();\n observableResult.observe(rss);\n }\n\n private getProcessorTimeNormalized(observableResult: ObservableResult): void {\n if (process && process.hrtime) {\n const cpuUsagePercent = getProcessorTimeNormalized(this.lastHrTime, this.lastCpuUsage);\n observableResult.observe(cpuUsagePercent);\n this.lastHrTime = process.hrtime.bigint();\n this.lastCpuUsage = process.cpuUsage();\n } else {\n Logger.getInstance().debug(\"Getting Normalized Processor Time Failed. No process available.\");\n }\n }\n\n private updateConfiguration(response: QuickpulseResponse): void {\n this.etag = response.xMsQpsConfigurationEtag || \"\";\n this.quickpulseExporter.setEtag(this.etag);\n this.errorTracker.clearValidationTimeErrors();\n this.validDocumentFilterConjuctionGroupInfos.clear();\n this.validDerivedMetrics.clear();\n this.derivedMetricProjection.clearProjectionMaps();\n this.seenMetricIds.clear();\n\n this.parseDocumentFilterConfiguration(response);\n this.parseMetricFilterConfiguration(response);\n }\n\n private parseDocumentFilterConfiguration(response: QuickpulseResponse): void {\n if (!response?.documentStreams || typeof response.documentStreams.forEach !== \"function\") {\n return;\n }\n response.documentStreams.forEach((documentStreamInfo) => {\n documentStreamInfo.documentFilterGroups.forEach((documentFilterGroupInfo) => {\n try {\n this.validator.validateTelemetryType(documentFilterGroupInfo.telemetryType);\n this.validator.validateDocumentFilters(documentFilterGroupInfo);\n this.filter.renameExceptionFieldNamesForFiltering(documentFilterGroupInfo.filters);\n\n if (\n !this.validDocumentFilterConjuctionGroupInfos.has(documentFilterGroupInfo.telemetryType)\n ) {\n this.validDocumentFilterConjuctionGroupInfos.set(\n documentFilterGroupInfo.telemetryType,\n new Map<string, FilterConjunctionGroupInfo[]>(),\n );\n }\n\n const innerMap = this.validDocumentFilterConjuctionGroupInfos.get(\n documentFilterGroupInfo.telemetryType,\n );\n if (!innerMap?.has(documentStreamInfo.id)) {\n innerMap?.set(documentStreamInfo.id, [documentFilterGroupInfo.filters]);\n } else {\n innerMap.get(documentStreamInfo.id)?.push(documentFilterGroupInfo.filters);\n }\n } catch (error) {\n const configError: CollectionConfigurationError = {\n collectionConfigurationErrorType: \"Unknown\",\n message: \"\",\n fullException: \"\",\n data: [],\n };\n if (error instanceof TelemetryTypeError) {\n configError.collectionConfigurationErrorType =\n \"CollectionConfigurationFailureToCreateUnexpected\";\n } else if (error instanceof UnexpectedFilterCreateError) {\n configError.collectionConfigurationErrorType =\n \"DocumentStreamFailureToCreateFilterUnexpected\";\n }\n\n if (error instanceof Error) {\n configError.message = error.message;\n configError.fullException = error.stack || \"\";\n }\n const data: KeyValuePairStringString[] = [];\n data.push({ key: \"DocumentStreamInfoId\", value: documentStreamInfo.id });\n data.push({ key: \"ETag\", value: this.etag });\n configError.data = data;\n this.errorTracker.addValidationError(configError);\n }\n });\n });\n }\n\n private applyDocumentFilters(\n documentConfiguration: Map<string, FilterConjunctionGroupInfo[]>,\n data: TelemetryData,\n exceptionType?: string,\n ): void {\n const streamIds: Set<string> = new Set<string>();\n documentConfiguration.forEach((filterConjunctionGroupInfoList, streamId) => {\n filterConjunctionGroupInfoList.forEach((filterConjunctionGroupInfo) => {\n // by going though each filterConjuctionGroupInfo, we are implicitly -OR-ing\n // different filterConjunctionGroupInfo within documentStreamInfo. If there are multiple\n // documentStreamInfos, this logic will -OR- the filtering results of each documentStreamInfo.\n if (this.filter.checkFilterConjunctionGroup(filterConjunctionGroupInfo, data)) {\n streamIds.add(streamId);\n }\n });\n });\n\n // Emit a document when a telemetry data matches a particular filtering configuration,\n // or when filtering configuration is empty.\n if (streamIds.size > 0 || documentConfiguration.size === 0) {\n let document: Request | RemoteDependency | Trace | Exception;\n if (isRequestData(data) || isDependencyData(data)) {\n document = getSpanDocument(data);\n } else if (isExceptionData(data) && exceptionType) {\n document = getLogDocument(data, exceptionType);\n } else {\n document = getLogDocument(data);\n }\n document.documentStreamIds = [...streamIds];\n this.addDocument(document);\n }\n }\n\n private parseMetricFilterConfiguration(response: QuickpulseResponse): void {\n if (!response?.documentStreams || typeof response.documentStreams.forEach !== \"function\") {\n return;\n }\n response.metrics.forEach((derivedMetricInfo) => {\n try {\n if (!this.seenMetricIds.has(derivedMetricInfo.id)) {\n this.seenMetricIds.add(derivedMetricInfo.id);\n this.validator.validateTelemetryType(derivedMetricInfo.telemetryType);\n this.validator.checkCustomMetricProjection(derivedMetricInfo);\n this.validator.validateMetricFilters(derivedMetricInfo);\n derivedMetricInfo.filterGroups.forEach((filterConjunctionGroupInfo) => {\n this.filter.renameExceptionFieldNamesForFiltering(filterConjunctionGroupInfo);\n });\n\n if (this.validDerivedMetrics.has(derivedMetricInfo.telemetryType)) {\n this.validDerivedMetrics.get(derivedMetricInfo.telemetryType)?.push(derivedMetricInfo);\n } else {\n this.validDerivedMetrics.set(derivedMetricInfo.telemetryType, [derivedMetricInfo]);\n }\n } else {\n throw new DuplicateMetricIdError(`Duplicate Metric Id: ${derivedMetricInfo.id}`);\n }\n this.derivedMetricProjection.initDerivedMetricProjection(derivedMetricInfo);\n } catch (error) {\n const configError: CollectionConfigurationError = {\n collectionConfigurationErrorType: \"Unknown\",\n message: \"\",\n fullException: \"\",\n data: [],\n };\n if (error instanceof TelemetryTypeError) {\n configError.collectionConfigurationErrorType = \"MetricTelemetryTypeUnsupported\";\n } else if (error instanceof UnexpectedFilterCreateError) {\n configError.collectionConfigurationErrorType = \"MetricFailureToCreateFilterUnexpected\";\n } else if (error instanceof DuplicateMetricIdError) {\n configError.collectionConfigurationErrorType = \"MetricDuplicateIds\";\n }\n\n if (error instanceof Error) {\n configError.message = error.message;\n configError.fullException = error.stack || \"\";\n }\n const data: KeyValuePairStringString[] = [];\n data.push({ key: \"MetricId\", value: derivedMetricInfo.id });\n data.push({ key: \"ETag\", value: this.etag });\n configError.data = data;\n this.errorTracker.addValidationError(configError);\n }\n });\n }\n\n private checkMetricFilterAndCreateProjection(\n derivedMetricInfoList: DerivedMetricInfo[],\n data: TelemetryData,\n ): void {\n derivedMetricInfoList.forEach((derivedMetricInfo: DerivedMetricInfo) => {\n if (this.filter.checkMetricFilters(derivedMetricInfo, data)) {\n try {\n this.derivedMetricProjection.calculateProjection(derivedMetricInfo, data);\n } catch (error) {\n const configError: CollectionConfigurationError = {\n collectionConfigurationErrorType: \"Unknown\",\n message: \"\",\n fullException: \"\",\n data: [],\n };\n if (error instanceof MetricFailureToCreateError) {\n configError.collectionConfigurationErrorType = \"MetricFailureToCreate\";\n\n if (error instanceof Error) {\n configError.message = error.message;\n configError.fullException = error.stack || \"\";\n }\n const errorData: KeyValuePairStringString[] = [];\n errorData.push({ key: \"MetricId\", value: derivedMetricInfo.id });\n errorData.push({ key: \"ETag\", value: this.etag });\n configError.data = errorData;\n this.errorTracker.addRunTimeError(configError);\n }\n }\n }\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"liveMetrics.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/liveMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport os from \"node:os\";\nimport type {\n MeterProviderOptions,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type { InternalConfig } from \"../../shared/config.js\";\nimport type { Meter, ObservableGauge, ObservableResult } from \"@opentelemetry/api\";\nimport { SpanKind, SpanStatusCode, ValueType, context } from \"@opentelemetry/api\";\nimport type { ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { RandomIdGenerator } from \"@opentelemetry/sdk-trace-base\";\nimport type {\n DocumentIngress,\n Exception,\n MonitoringDataPoint,\n IsSubscribedOptionalParams,\n RemoteDependency,\n Request,\n Trace,\n KeyValuePairStringString,\n DerivedMetricInfo,\n FilterConjunctionGroupInfo,\n} from \"../../generated/index.js\";\nimport type { QuickpulseResponse } from \"./export/sender.js\";\nimport {\n getLogDocument,\n getSdkVersion,\n getSpanData,\n getLogData,\n getSpanDocument,\n getTransmissionTime,\n isRequestData,\n getSpanExceptionColumns,\n isExceptionData,\n isDependencyData,\n} from \"./utils.js\";\nimport { QuickpulseMetricExporter } from \"./export/exporter.js\";\nimport { QuickpulseSender } from \"./export/sender.js\";\nimport { ConnectionStringParser } from \"../../utils/connectionStringParser.js\";\nimport { DEFAULT_LIVEMETRICS_ENDPOINT } from \"../../types.js\";\nimport { getAuthenticationCredentialFromEnv } from \"./credentialUtils.js\";\nimport type {\n QuickpulseExporterOptions,\n RequestData,\n DependencyData,\n TraceData,\n ExceptionData,\n TelemetryData,\n} from \"./types.js\";\nimport { QuickPulseOpenTelemetryMetricNames } from \"./types.js\";\nimport { hrTimeToMilliseconds, suppressTracing } from \"@opentelemetry/core\";\nimport { getInstance } from \"../../utils/statsbeat.js\";\nimport type { CollectionConfigurationError } from \"../../generated/index.js\";\nimport { Filter } from \"./filtering/filter.js\";\nimport { Validator } from \"./filtering/validator.js\";\nimport { CollectionConfigurationErrorTracker } from \"./filtering/collectionConfigurationErrorTracker.js\";\nimport { Projection } from \"./filtering/projection.js\";\nimport {\n TelemetryTypeError,\n UnexpectedFilterCreateError,\n DuplicateMetricIdError,\n MetricFailureToCreateError,\n} from \"./filtering/quickpulseErrors.js\";\nimport { SEMATTRS_EXCEPTION_TYPE } from \"@opentelemetry/semantic-conventions\";\nimport { getPhysicalMemory, getProcessorTimeNormalized } from \"../utils.js\";\nimport { getCloudRole, getCloudRoleInstance } from \"../utils.js\";\nimport { Logger } from \"../../shared/logging/logger.js\";\n\nconst POST_INTERVAL = 1000;\nconst MAX_POST_WAIT_TIME = 20000;\nconst PING_INTERVAL = 5000;\nconst MAX_PING_WAIT_TIME = 60000;\nconst FALLBACK_INTERVAL = 60000;\n\n/**\n * Azure Monitor Live Metrics\n * @internal\n */\nexport class LiveMetrics {\n private config: InternalConfig;\n private meterProvider: MeterProvider | undefined;\n private metricReader: PeriodicExportingMetricReader | undefined;\n private meter: Meter | undefined;\n private requestDurationGauge: ObservableGauge | undefined;\n private dependencyDurationGauge: ObservableGauge | undefined;\n private requestRateGauge: ObservableGauge | undefined;\n private requestFailedRateGauge: ObservableGauge | undefined;\n private dependencyRateGauge: ObservableGauge | undefined;\n private dependencyFailedRateGauge: ObservableGauge | undefined;\n private processPhysicalBytesGauge: ObservableGauge | undefined;\n private percentProcessorTimeNormalizedGauge: ObservableGauge | undefined;\n private exceptionsRateGauge: ObservableGauge | undefined;\n\n private documents: DocumentIngress[] = [];\n private pingInterval: number;\n private postInterval: number;\n private quickpulseExporter: QuickpulseMetricExporter;\n private pingSender: QuickpulseSender;\n private isCollectingData: boolean;\n private isDeactivating: boolean = false;\n private deactivatingPromise: Promise<void> | undefined;\n private lastSuccessTime: number = Date.now();\n private handle: NodeJS.Timer;\n // Monitoring data point with common properties\n private baseMonitoringDataPoint: MonitoringDataPoint;\n private totalRequestCount = 0;\n private totalFailedRequestCount = 0;\n private totalDependencyCount = 0;\n private totalFailedDependencyCount = 0;\n private totalExceptionCount = 0;\n private requestDuration = 0;\n private dependencyDuration = 0;\n private lastRequestDuration: { count: number; duration: number; time: number } = {\n count: 0,\n duration: 0,\n time: 0,\n };\n private lastRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastDependencyDuration: { count: number; duration: number; time: number } = {\n count: 0,\n duration: 0,\n time: 0,\n };\n private lastDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastExceptionRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastCpuUsage: NodeJS.CpuUsage;\n private lastHrTime: bigint;\n private statsbeatOptionsUpdated = false;\n private etag: string = \"\";\n private errorTracker: CollectionConfigurationErrorTracker =\n new CollectionConfigurationErrorTracker();\n // For tracking of duplicate metric ids in the same configuration.\n private seenMetricIds: Set<string> = new Set();\n private validDerivedMetrics: Map<string, DerivedMetricInfo[]> = new Map();\n private derivedMetricProjection: Projection = new Projection();\n private validator: Validator = new Validator();\n private filter: Filter = new Filter();\n // type: Map<telemetryType, Map<id, FilterConjunctionGroupInfo[]>>\n private validDocumentFilterConjuctionGroupInfos: Map<\n string,\n Map<string, FilterConjunctionGroupInfo[]>\n > = new Map();\n /**\n * Initializes a new instance of the StandardMetrics class.\n * @param config - Distro configuration.\n * @param options - Standard Metrics options.\n */\n constructor(config: InternalConfig) {\n this.config = config;\n const idGenerator = new RandomIdGenerator();\n const streamId = idGenerator.generateTraceId();\n const machineName = os.hostname();\n const instance = getCloudRoleInstance(this.config.resource);\n const roleName = getCloudRole(this.config.resource);\n const version = getSdkVersion();\n this.baseMonitoringDataPoint = {\n version: version,\n invariantVersion: 5, // 5 means we support live metrics filtering of metrics and documents\n instance: instance,\n roleName: roleName,\n machineName: machineName,\n streamId: streamId,\n performanceCollectionSupported: true,\n isWebApp: process.env[\"WEBSITE_SITE_NAME\"] ? true : false,\n };\n const parsedConnectionString = ConnectionStringParser.parse(\n this.config.azureMonitorExporterOptions.connectionString ||\n process.env[\"APPLICATIONINSIGHTS_CONNECTION_STRING\"],\n );\n const credential =\n this.config.azureMonitorExporterOptions.credential ?? getAuthenticationCredentialFromEnv();\n this.pingSender = new QuickpulseSender({\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || \"\",\n credential: credential,\n credentialScopes:\n parsedConnectionString.aadaudience ||\n this.config.azureMonitorExporterOptions.credentialScopes,\n });\n const exporterOptions: QuickpulseExporterOptions = {\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || \"\",\n credential: credential,\n credentialScopes:\n parsedConnectionString.aadaudience ||\n this.config.azureMonitorExporterOptions.credentialScopes,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n postCallback: this.quickPulseDone.bind(this),\n getDocumentsFn: this.getDocuments.bind(this),\n getErrorsFn: this.getErrors.bind(this),\n getDerivedMetricValuesFn: this.getDerivedMetricValues.bind(this),\n baseMonitoringDataPoint: this.baseMonitoringDataPoint,\n };\n this.quickpulseExporter = new QuickpulseMetricExporter(exporterOptions);\n this.isCollectingData = false;\n this.pingInterval = PING_INTERVAL; // Default\n this.postInterval = POST_INTERVAL;\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.handle = setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref(); // Don't block apps from terminating\n this.lastCpuUsage = process.cpuUsage();\n this.lastHrTime = process.hrtime.bigint();\n }\n\n public async shutdown(): Promise<void> {\n // Force collecting=false before tearing down so the shutdown's final\n // force-flush export, if it fails, cannot trigger the deactivate/\n // reactivate fallback in quickPulseDone(). Delegate to deactivateMetrics()\n // which manages the in-flight deactivation promise so callers (including\n // a concurrent failure-fallback in quickPulseDone) all observe the same\n // completion and shutdown waits for any in-flight deactivation to finish.\n this.isCollectingData = false;\n await this.deactivateMetrics();\n }\n\n private async goQuickpulse(): Promise<void> {\n if (!this.isCollectingData) {\n // If not collecting, Ping\n try {\n const params: IsSubscribedOptionalParams = {\n transmissionTime: getTransmissionTime(),\n monitoringDataPoint: this.baseMonitoringDataPoint,\n configurationEtag: this.etag,\n };\n await context.with(suppressTracing(context.active()), async () => {\n const response = await this.pingSender.isSubscribed(params);\n this.quickPulseDone(response);\n });\n } catch (error) {\n this.quickPulseDone(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.handle = setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n if (this.isCollectingData) {\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n\n private async quickPulseDone(response: QuickpulseResponse | undefined): Promise<void> {\n if (!response) {\n if (!this.isCollectingData) {\n if (Date.now() - this.lastSuccessTime >= MAX_PING_WAIT_TIME) {\n this.pingInterval = FALLBACK_INTERVAL;\n }\n } else {\n if (Date.now() - this.lastSuccessTime >= MAX_POST_WAIT_TIME) {\n // Re-entrancy guard: MeterProvider.shutdown() triggers a final\n // force-flush export which, on failure, re-invokes this callback\n // synchronously from inside the shutdown's export call. If a\n // deactivation is already in flight, bail out — awaiting the\n // in-flight promise here would deadlock the exporter's callback.\n if (this.isDeactivating) {\n return;\n }\n this.postInterval = FALLBACK_INTERVAL;\n try {\n await this.deactivateMetrics();\n } catch (error) {\n // The exporter invokes postCallback without awaiting it, so a\n // rejection here would surface as an unhandled rejection. Swallow\n // and log so the failure path stays contained.\n Logger.getInstance().warn(\n \"Failed to deactivate Live Metrics during failure fallback\",\n error,\n );\n }\n // Reset the success-time baseline so the FALLBACK_INTERVAL backoff\n // can take effect before we consider deactivating again.\n this.lastSuccessTime = Date.now();\n // Re-check after the await: shutdown() may have run concurrently and\n // flipped isCollectingData to false. Don't restart collection in\n // that case — doing so would re-create the meterProvider after\n // shutdown has begun.\n if (this.isCollectingData) {\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n }\n } else {\n this.postInterval = POST_INTERVAL;\n // Update using response if needed\n this.lastSuccessTime = Date.now();\n this.isCollectingData =\n response.xMsQpsSubscribed && response.xMsQpsSubscribed === \"true\" ? true : false;\n if (response.xMsQpsConfigurationEtag && this.etag !== response.xMsQpsConfigurationEtag) {\n this.updateConfiguration(response);\n }\n\n // If collecting was stoped\n if (!this.isCollectingData && this.meterProvider) {\n this.etag = \"\";\n await this.deactivateMetrics();\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.handle = setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n\n const endpointRedirect = response.xMsQpsServiceEndpointRedirectV2;\n if (endpointRedirect) {\n this.pingSender.handlePermanentRedirect(endpointRedirect);\n this.quickpulseExporter.getSender().handlePermanentRedirect(endpointRedirect);\n }\n const pollingInterval = response.xMsQpsServicePollingIntervalHint;\n if (pollingInterval) {\n this.pingInterval = Number(pollingInterval);\n } else {\n this.pingInterval = PING_INTERVAL;\n }\n }\n }\n\n // Activate live metrics collection\n public activateMetrics(options?: { collectionInterval: number }): void {\n if (this.meterProvider) {\n return;\n }\n // Turn on live metrics active collection for statsbeat\n if (!this.statsbeatOptionsUpdated) {\n getInstance().setStatsbeatFeatures({}, { liveMetrics: true });\n this.statsbeatOptionsUpdated = true;\n }\n this.totalDependencyCount = 0;\n this.totalExceptionCount = 0;\n this.totalFailedDependencyCount = 0;\n this.totalFailedRequestCount = 0;\n this.totalRequestCount = 0;\n this.requestDuration = 0;\n this.dependencyDuration = 0;\n this.lastRequestDuration = { count: 0, duration: 0, time: 0 };\n this.lastRequestRate = { count: 0, time: 0 };\n this.lastFailedRequestRate = { count: 0, time: 0 };\n this.lastDependencyDuration = { count: 0, duration: 0, time: 0 };\n this.lastDependencyRate = { count: 0, time: 0 };\n this.lastFailedDependencyRate = { count: 0, time: 0 };\n this.lastExceptionRate = { count: 0, time: 0 };\n\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.quickpulseExporter,\n exportIntervalMillis: options?.collectionInterval,\n };\n this.metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n const meterProviderConfig: MeterProviderOptions = {\n resource: this.config.resource,\n readers: [this.metricReader],\n };\n this.meterProvider = new MeterProvider(meterProviderConfig);\n this.meter = this.meterProvider.getMeter(\"AzureMonitorLiveMetricsMeter\");\n this.requestDurationGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.requestRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.requestFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyDurationGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.processPhysicalBytesGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.PHYSICAL_BYTES,\n {\n valueType: ValueType.INT,\n },\n );\n\n this.percentProcessorTimeNormalizedGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME_NORMALIZED,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.exceptionsRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.requestDurationGauge.addCallback(this.getRequestDuration.bind(this));\n this.requestRateGauge.addCallback(this.getRequestRate.bind(this));\n this.requestFailedRateGauge.addCallback(this.getRequestFailedRate.bind(this));\n this.dependencyDurationGauge.addCallback(this.getDependencyDuration.bind(this));\n this.dependencyRateGauge.addCallback(this.getDependencyRate.bind(this));\n this.dependencyFailedRateGauge.addCallback(this.getDependencyFailedRate.bind(this));\n this.exceptionsRateGauge.addCallback(this.getExceptionRate.bind(this));\n this.processPhysicalBytesGauge.addCallback(this.getPhysicalMemory.bind(this));\n this.percentProcessorTimeNormalizedGauge.addCallback(\n this.getProcessorTimeNormalized.bind(this),\n );\n }\n\n /**\n * Deactivate metric collection\n */\n public async deactivateMetrics(): Promise<void> {\n // Coalesce concurrent deactivations: callers (shutdown(), the\n // failure-fallback in quickPulseDone(), and the \"unsubscribed\" branch in\n // goQuickpulse()) can all race. Return the in-flight promise so every\n // caller awaits the same completion and the underlying meterProvider\n // shutdown only runs once.\n if (this.deactivatingPromise) {\n return this.deactivatingPromise;\n }\n this.isDeactivating = true;\n this.deactivatingPromise = (async () => {\n try {\n this.documents = [];\n this.validDocumentFilterConjuctionGroupInfos.clear();\n this.errorTracker.clearRunTimeErrors();\n this.errorTracker.clearValidationTimeErrors();\n this.validDerivedMetrics.clear();\n this.derivedMetricProjection.clearProjectionMaps();\n this.seenMetricIds.clear();\n // Capture and clear the reference before awaiting shutdown so any\n // re-entrant calls triggered by the shutdown's final force-flush\n // export observe meterProvider as undefined and exit early.\n const provider = this.meterProvider;\n this.meterProvider = undefined;\n await provider?.shutdown();\n } finally {\n this.isDeactivating = false;\n this.deactivatingPromise = undefined;\n }\n })();\n return this.deactivatingPromise;\n }\n\n /**\n * Force flush Meter Provider.\n */\n public async flush(): Promise<void> {\n await this.meterProvider?.forceFlush();\n }\n\n /**\n *Get OpenTelemetry MeterProvider\n */\n public getMeterProvider(): MeterProvider | undefined {\n return this.meterProvider;\n }\n\n public getDocuments(): DocumentIngress[] {\n const result: DocumentIngress[] = this.documents;\n this.documents = [];\n return result;\n }\n\n public getErrors(): CollectionConfigurationError[] {\n const result = this.errorTracker.getErrors();\n this.errorTracker.clearRunTimeErrors();\n return result;\n }\n\n public getDerivedMetricValues(): Map<string, number> {\n return this.derivedMetricProjection.getMetricValues();\n }\n\n private addDocument(document: DocumentIngress): void {\n if (document) {\n // Limit risk of memory leak by limiting doc length to something manageable\n if (this.documents.length > 20) {\n this.documents.shift(); // Remove oldest document\n }\n this.documents.push(document);\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n if (this.isCollectingData) {\n const columns: RequestData | DependencyData = getSpanData(span);\n let documentConfiguration: Map<string, FilterConjunctionGroupInfo[]>;\n let derivedMetricInfos: DerivedMetricInfo[];\n if (isRequestData(columns)) {\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Request\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n derivedMetricInfos = this.validDerivedMetrics.get(\"Request\") || [];\n } else {\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Dependency\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n derivedMetricInfos = this.validDerivedMetrics.get(\"Dependency\") || [];\n }\n this.applyDocumentFilters(documentConfiguration, columns);\n this.checkMetricFilterAndCreateProjection(derivedMetricInfos, columns);\n\n const durationMs = hrTimeToMilliseconds(span.duration);\n const success = span.status.code !== SpanStatusCode.ERROR;\n\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n this.totalRequestCount++;\n this.requestDuration += durationMs;\n if (!success) {\n this.totalFailedRequestCount++;\n }\n } else {\n this.totalDependencyCount++;\n this.dependencyDuration += durationMs;\n if (!success) {\n this.totalFailedDependencyCount++;\n }\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n const exceptionColumns: ExceptionData = getSpanExceptionColumns(\n event.attributes,\n span.attributes,\n );\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Exception\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n this.applyDocumentFilters(\n documentConfiguration,\n exceptionColumns,\n event.attributes[SEMATTRS_EXCEPTION_TYPE] as string,\n );\n derivedMetricInfos = this.validDerivedMetrics.get(\"Exception\") || [];\n this.checkMetricFilterAndCreateProjection(derivedMetricInfos, exceptionColumns);\n this.totalExceptionCount++;\n }\n });\n }\n }\n }\n\n /**\n * Record LogRecord metrics, add attribute so data is not aggregated again in ingestion\n * @internal\n */\n public recordLog(logRecord: SdkLogRecord): void {\n if (this.isCollectingData) {\n const columns: TraceData | ExceptionData = getLogData(logRecord);\n let derivedMetricInfos: DerivedMetricInfo[];\n let documentConfiguration: Map<string, FilterConjunctionGroupInfo[]>;\n if (isExceptionData(columns)) {\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Exception\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n this.applyDocumentFilters(\n documentConfiguration,\n columns,\n logRecord.attributes[SEMATTRS_EXCEPTION_TYPE] as string,\n );\n derivedMetricInfos = this.validDerivedMetrics.get(\"Exception\") || [];\n this.totalExceptionCount++;\n } else {\n // trace\n documentConfiguration =\n this.validDocumentFilterConjuctionGroupInfos.get(\"Trace\") ||\n new Map<string, FilterConjunctionGroupInfo[]>();\n this.applyDocumentFilters(documentConfiguration, columns);\n derivedMetricInfos = this.validDerivedMetrics.get(\"Trace\") || [];\n }\n this.checkMetricFilterAndCreateProjection(derivedMetricInfos, columns);\n }\n }\n\n private getRequestDuration(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const requestInterval = this.totalRequestCount - this.lastRequestDuration.count || 0;\n const durationInterval = this.requestDuration - this.lastRequestDuration.duration || 0;\n const elapsedMs = currentTime - this.lastRequestDuration.time;\n if (elapsedMs > 0) {\n const averageExecutionTime = durationInterval / requestInterval || 0; // default to 0 in case no requests in this interval\n observableResult.observe(averageExecutionTime);\n }\n this.lastRequestDuration = {\n count: this.totalRequestCount,\n duration: this.requestDuration,\n time: currentTime,\n };\n }\n\n private getRequestRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalRequests = this.totalRequestCount - this.lastRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastRequestRate = {\n count: this.totalRequestCount,\n time: currentTime,\n };\n }\n\n private getRequestFailedRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalRequests = this.totalFailedRequestCount - this.lastFailedRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedRequestRate = {\n count: this.totalFailedRequestCount,\n time: currentTime,\n };\n }\n\n private getDependencyDuration(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const dependencyInterval = this.totalDependencyCount - this.lastDependencyDuration.count || 0;\n const durationInterval = this.dependencyDuration - this.lastDependencyDuration.duration || 0;\n const elapsedMs = currentTime - this.lastDependencyDuration.time;\n if (elapsedMs > 0) {\n const averageExecutionTime = durationInterval / dependencyInterval || 0; // default to 0 in case no dependencies in this interval\n observableResult.observe(averageExecutionTime);\n }\n this.lastDependencyDuration = {\n count: this.totalDependencyCount,\n duration: this.dependencyDuration,\n time: currentTime,\n };\n }\n\n private getDependencyRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalData = this.totalDependencyCount - this.lastDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastDependencyRate = {\n count: this.totalDependencyCount,\n time: currentTime,\n };\n }\n\n private getDependencyFailedRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalData = this.totalFailedDependencyCount - this.lastFailedDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedDependencyRate = {\n count: this.totalFailedDependencyCount,\n time: currentTime,\n };\n }\n\n private getExceptionRate(observableResult: ObservableResult): void {\n const currentTime = +new Date();\n const intervalData = this.totalExceptionCount - this.lastExceptionRate.count || 0;\n const elapsedMs = currentTime - this.lastExceptionRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastExceptionRate = {\n count: this.totalExceptionCount,\n time: currentTime,\n };\n }\n\n private getPhysicalMemory(observableResult: ObservableResult): void {\n const rss = getPhysicalMemory();\n observableResult.observe(rss);\n }\n\n private getProcessorTimeNormalized(observableResult: ObservableResult): void {\n if (process && process.hrtime) {\n const cpuUsagePercent = getProcessorTimeNormalized(this.lastHrTime, this.lastCpuUsage);\n observableResult.observe(cpuUsagePercent);\n this.lastHrTime = process.hrtime.bigint();\n this.lastCpuUsage = process.cpuUsage();\n } else {\n Logger.getInstance().debug(\"Getting Normalized Processor Time Failed. No process available.\");\n }\n }\n\n private updateConfiguration(response: QuickpulseResponse): void {\n this.etag = response.xMsQpsConfigurationEtag || \"\";\n this.quickpulseExporter.setEtag(this.etag);\n this.errorTracker.clearValidationTimeErrors();\n this.validDocumentFilterConjuctionGroupInfos.clear();\n this.validDerivedMetrics.clear();\n this.derivedMetricProjection.clearProjectionMaps();\n this.seenMetricIds.clear();\n\n this.parseDocumentFilterConfiguration(response);\n this.parseMetricFilterConfiguration(response);\n }\n\n private parseDocumentFilterConfiguration(response: QuickpulseResponse): void {\n if (!response?.documentStreams || typeof response.documentStreams.forEach !== \"function\") {\n return;\n }\n response.documentStreams.forEach((documentStreamInfo) => {\n documentStreamInfo.documentFilterGroups.forEach((documentFilterGroupInfo) => {\n try {\n this.validator.validateTelemetryType(documentFilterGroupInfo.telemetryType);\n this.validator.validateDocumentFilters(documentFilterGroupInfo);\n this.filter.renameExceptionFieldNamesForFiltering(documentFilterGroupInfo.filters);\n\n if (\n !this.validDocumentFilterConjuctionGroupInfos.has(documentFilterGroupInfo.telemetryType)\n ) {\n this.validDocumentFilterConjuctionGroupInfos.set(\n documentFilterGroupInfo.telemetryType,\n new Map<string, FilterConjunctionGroupInfo[]>(),\n );\n }\n\n const innerMap = this.validDocumentFilterConjuctionGroupInfos.get(\n documentFilterGroupInfo.telemetryType,\n );\n if (!innerMap?.has(documentStreamInfo.id)) {\n innerMap?.set(documentStreamInfo.id, [documentFilterGroupInfo.filters]);\n } else {\n innerMap.get(documentStreamInfo.id)?.push(documentFilterGroupInfo.filters);\n }\n } catch (error) {\n const configError: CollectionConfigurationError = {\n collectionConfigurationErrorType: \"Unknown\",\n message: \"\",\n fullException: \"\",\n data: [],\n };\n if (error instanceof TelemetryTypeError) {\n configError.collectionConfigurationErrorType =\n \"CollectionConfigurationFailureToCreateUnexpected\";\n } else if (error instanceof UnexpectedFilterCreateError) {\n configError.collectionConfigurationErrorType =\n \"DocumentStreamFailureToCreateFilterUnexpected\";\n }\n\n if (error instanceof Error) {\n configError.message = error.message;\n configError.fullException = error.stack || \"\";\n }\n const data: KeyValuePairStringString[] = [];\n data.push({ key: \"DocumentStreamInfoId\", value: documentStreamInfo.id });\n data.push({ key: \"ETag\", value: this.etag });\n configError.data = data;\n this.errorTracker.addValidationError(configError);\n }\n });\n });\n }\n\n private applyDocumentFilters(\n documentConfiguration: Map<string, FilterConjunctionGroupInfo[]>,\n data: TelemetryData,\n exceptionType?: string,\n ): void {\n const streamIds: Set<string> = new Set<string>();\n documentConfiguration.forEach((filterConjunctionGroupInfoList, streamId) => {\n filterConjunctionGroupInfoList.forEach((filterConjunctionGroupInfo) => {\n // by going though each filterConjuctionGroupInfo, we are implicitly -OR-ing\n // different filterConjunctionGroupInfo within documentStreamInfo. If there are multiple\n // documentStreamInfos, this logic will -OR- the filtering results of each documentStreamInfo.\n if (this.filter.checkFilterConjunctionGroup(filterConjunctionGroupInfo, data)) {\n streamIds.add(streamId);\n }\n });\n });\n\n // Emit a document when a telemetry data matches a particular filtering configuration,\n // or when filtering configuration is empty.\n if (streamIds.size > 0 || documentConfiguration.size === 0) {\n let document: Request | RemoteDependency | Trace | Exception;\n if (isRequestData(data) || isDependencyData(data)) {\n document = getSpanDocument(data);\n } else if (isExceptionData(data) && exceptionType) {\n document = getLogDocument(data, exceptionType);\n } else {\n document = getLogDocument(data);\n }\n document.documentStreamIds = [...streamIds];\n this.addDocument(document);\n }\n }\n\n private parseMetricFilterConfiguration(response: QuickpulseResponse): void {\n if (!response?.documentStreams || typeof response.documentStreams.forEach !== \"function\") {\n return;\n }\n response.metrics.forEach((derivedMetricInfo) => {\n try {\n if (!this.seenMetricIds.has(derivedMetricInfo.id)) {\n this.seenMetricIds.add(derivedMetricInfo.id);\n this.validator.validateTelemetryType(derivedMetricInfo.telemetryType);\n this.validator.checkCustomMetricProjection(derivedMetricInfo);\n this.validator.validateMetricFilters(derivedMetricInfo);\n derivedMetricInfo.filterGroups.forEach((filterConjunctionGroupInfo) => {\n this.filter.renameExceptionFieldNamesForFiltering(filterConjunctionGroupInfo);\n });\n\n if (this.validDerivedMetrics.has(derivedMetricInfo.telemetryType)) {\n this.validDerivedMetrics.get(derivedMetricInfo.telemetryType)?.push(derivedMetricInfo);\n } else {\n this.validDerivedMetrics.set(derivedMetricInfo.telemetryType, [derivedMetricInfo]);\n }\n } else {\n throw new DuplicateMetricIdError(`Duplicate Metric Id: ${derivedMetricInfo.id}`);\n }\n this.derivedMetricProjection.initDerivedMetricProjection(derivedMetricInfo);\n } catch (error) {\n const configError: CollectionConfigurationError = {\n collectionConfigurationErrorType: \"Unknown\",\n message: \"\",\n fullException: \"\",\n data: [],\n };\n if (error instanceof TelemetryTypeError) {\n configError.collectionConfigurationErrorType = \"MetricTelemetryTypeUnsupported\";\n } else if (error instanceof UnexpectedFilterCreateError) {\n configError.collectionConfigurationErrorType = \"MetricFailureToCreateFilterUnexpected\";\n } else if (error instanceof DuplicateMetricIdError) {\n configError.collectionConfigurationErrorType = \"MetricDuplicateIds\";\n }\n\n if (error instanceof Error) {\n configError.message = error.message;\n configError.fullException = error.stack || \"\";\n }\n const data: KeyValuePairStringString[] = [];\n data.push({ key: \"MetricId\", value: derivedMetricInfo.id });\n data.push({ key: \"ETag\", value: this.etag });\n configError.data = data;\n this.errorTracker.addValidationError(configError);\n }\n });\n }\n\n private checkMetricFilterAndCreateProjection(\n derivedMetricInfoList: DerivedMetricInfo[],\n data: TelemetryData,\n ): void {\n derivedMetricInfoList.forEach((derivedMetricInfo: DerivedMetricInfo) => {\n if (this.filter.checkMetricFilters(derivedMetricInfo, data)) {\n try {\n this.derivedMetricProjection.calculateProjection(derivedMetricInfo, data);\n } catch (error) {\n const configError: CollectionConfigurationError = {\n collectionConfigurationErrorType: \"Unknown\",\n message: \"\",\n fullException: \"\",\n data: [],\n };\n if (error instanceof MetricFailureToCreateError) {\n configError.collectionConfigurationErrorType = \"MetricFailureToCreate\";\n\n if (error instanceof Error) {\n configError.message = error.message;\n configError.fullException = error.stack || \"\";\n }\n const errorData: KeyValuePairStringString[] = [];\n errorData.push({ key: \"MetricId\", value: derivedMetricInfo.id });\n errorData.push({ key: \"ETag\", value: this.etag });\n configError.data = errorData;\n this.errorTracker.addRunTimeError(configError);\n }\n }\n }\n });\n }\n}\n"]}
|
|
@@ -29,11 +29,18 @@ export declare class InternalConfig implements AzureMonitorOpenTelemetryOptions
|
|
|
29
29
|
/** Custom OpenTelemetry sampler (env-only) */
|
|
30
30
|
sampler?: Sampler;
|
|
31
31
|
private _resource;
|
|
32
|
+
private _aksResourceDetectorPopulated;
|
|
32
33
|
set resource(resource: Resource);
|
|
33
34
|
/**
|
|
34
35
|
*Get OpenTelemetry Resource
|
|
35
36
|
*/
|
|
36
37
|
get resource(): Resource;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the AKS resource detector was able to populate the AKS cluster attributes, which
|
|
40
|
+
* requires the customer to have configured access to the `aks-cluster-metadata` ConfigMap.
|
|
41
|
+
* @internal
|
|
42
|
+
*/
|
|
43
|
+
get aksResourceDetectorPopulated(): boolean;
|
|
37
44
|
browserSdkLoaderOptions: BrowserSdkLoaderOptions;
|
|
38
45
|
/**
|
|
39
46
|
* Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOlF,OAAO,KAAK,EACV,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOlF,OAAO,KAAK,EACV,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAczF;;GAEG;AACH,qBAAa,cAAe,YAAW,gCAAgC;IACrE,mFAAmF;IAC5E,aAAa,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAChC,2CAA2C;IACpC,2BAA2B,EAAE,2BAA2B,CAAC;IAChE;;OAEG;IACI,sBAAsB,EAAE,sBAAsB,CAAC;IACtD,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wDAAwD;IACxD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6CAA6C;IACtC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,8CAA8C;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,6BAA6B,CAAkB;IAEvD,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAED;;;;OAIG;IACH,IAAW,4BAA4B,IAAI,OAAO,CAEjD;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAoEtD,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAgC3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwB3B,6BAA6B,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAmBvF"}
|
|
@@ -7,7 +7,9 @@ const resources_1 = require("@opentelemetry/resources");
|
|
|
7
7
|
const envConfig_js_1 = require("./envConfig.js");
|
|
8
8
|
const jsonConfig_js_1 = require("./jsonConfig.js");
|
|
9
9
|
const index_js_1 = require("./logging/index.js");
|
|
10
|
+
const common_js_1 = require("../utils/common.js");
|
|
10
11
|
const resource_detector_azure_1 = require("@opentelemetry/resource-detector-azure");
|
|
12
|
+
const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
|
|
11
13
|
/**
|
|
12
14
|
* Azure Monitor OpenTelemetry Client Configuration
|
|
13
15
|
*/
|
|
@@ -35,6 +37,7 @@ class InternalConfig {
|
|
|
35
37
|
/** Custom OpenTelemetry sampler (env-only) */
|
|
36
38
|
sampler;
|
|
37
39
|
_resource = (0, resources_1.emptyResource)();
|
|
40
|
+
_aksResourceDetectorPopulated = false;
|
|
38
41
|
set resource(resource) {
|
|
39
42
|
this._resource = this._resource.merge(resource);
|
|
40
43
|
}
|
|
@@ -44,6 +47,14 @@ class InternalConfig {
|
|
|
44
47
|
get resource() {
|
|
45
48
|
return this._resource;
|
|
46
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Whether the AKS resource detector was able to populate the AKS cluster attributes, which
|
|
52
|
+
* requires the customer to have configured access to the `aks-cluster-metadata` ConfigMap.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
55
|
+
get aksResourceDetectorPopulated() {
|
|
56
|
+
return this._aksResourceDetectorPopulated;
|
|
57
|
+
}
|
|
47
58
|
browserSdkLoaderOptions;
|
|
48
59
|
/**
|
|
49
60
|
* Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.
|
|
@@ -66,6 +77,7 @@ class InternalConfig {
|
|
|
66
77
|
postgreSql: { enabled: true },
|
|
67
78
|
redis: { enabled: true },
|
|
68
79
|
redis4: { enabled: true },
|
|
80
|
+
console: { enabled: false },
|
|
69
81
|
};
|
|
70
82
|
this._setDefaultResource();
|
|
71
83
|
this.browserSdkLoaderOptions = {
|
|
@@ -149,14 +161,24 @@ class InternalConfig {
|
|
|
149
161
|
};
|
|
150
162
|
const envResource = (0, resources_1.detectResources)(detectResourceConfig);
|
|
151
163
|
resource = resource.merge(envResource);
|
|
152
|
-
// Load resource attributes from Azure
|
|
164
|
+
// Load resource attributes from Azure. AKS is detected on its own so that we can tell
|
|
165
|
+
// whether the AKS detector itself populated the cluster attributes - other detectors and the
|
|
166
|
+
// customer can populate the same attributes without AKS being involved.
|
|
167
|
+
const aksResource = (0, resources_1.detectResources)({
|
|
168
|
+
detectors: [resource_detector_azure_1.azureAksDetector],
|
|
169
|
+
});
|
|
170
|
+
this._aksResourceDetectorPopulated = (0, common_js_1.isAksResourceDetectorPopulated)(aksResource.attributes);
|
|
153
171
|
const azureResource = (0, resources_1.detectResources)({
|
|
154
|
-
detectors: [resource_detector_azure_1.
|
|
172
|
+
detectors: [resource_detector_azure_1.azureAppServiceDetector, resource_detector_azure_1.azureContainerAppsDetector, resource_detector_azure_1.azureFunctionsDetector],
|
|
155
173
|
});
|
|
156
|
-
this._resource = resource.merge(azureResource);
|
|
157
|
-
//
|
|
158
|
-
//
|
|
159
|
-
|
|
174
|
+
this._resource = resource.merge(aksResource).merge(azureResource);
|
|
175
|
+
// The IMDS probe fails on App Service, Functions, and Container Apps, and on AKS
|
|
176
|
+
// it describes the node VM rather than the cluster.
|
|
177
|
+
const platformDetected = aksResource.attributes[semantic_conventions_1.SEMRESATTRS_CLOUD_PLATFORM] ??
|
|
178
|
+
azureResource.attributes[semantic_conventions_1.SEMRESATTRS_CLOUD_PLATFORM];
|
|
179
|
+
if (!platformDetected) {
|
|
180
|
+
this._initializeVmResourceAsync();
|
|
181
|
+
}
|
|
160
182
|
}
|
|
161
183
|
/**
|
|
162
184
|
* Initialize VM resource detection asynchronously to avoid warnings
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ResourceDetectionConfig, Resource } from \"@opentelemetry/resources\";\nimport {\n defaultResource,\n detectResources,\n emptyResource,\n envDetector,\n} from \"@opentelemetry/resources\";\nimport type {\n BrowserSdkLoaderOptions,\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n} from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration\n */\nexport class InternalConfig implements AzureMonitorOpenTelemetryOptions {\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n public samplingRatio: number;\n /** The maximum number of spans to sample per second. */\n public tracesPerSecond?: number;\n /** Azure Monitor Exporter Configuration */\n public azureMonitorExporterOptions: AzureMonitorExporterOptions;\n /**\n * OpenTelemetry Instrumentations configuration included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4)\n */\n public instrumentationOptions: InstrumentationOptions;\n /** Enable Live Metrics feature */\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature */\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** Metric export interval in milliseconds */\n public metricExportIntervalMillis: number;\n /** Custom OpenTelemetry sampler (env-only) */\n public sampler?: Sampler;\n\n private _resource: Resource = emptyResource();\n\n public set resource(resource: Resource) {\n this._resource = this._resource.merge(resource);\n }\n\n /**\n *Get OpenTelemetry Resource\n */\n public get resource(): Resource {\n return this._resource;\n }\n\n public browserSdkLoaderOptions: BrowserSdkLoaderOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.\n */\n constructor(options?: AzureMonitorOpenTelemetryOptions) {\n // Default values\n this.azureMonitorExporterOptions = {};\n this.samplingRatio = 1;\n this.tracesPerSecond = 5;\n this.enableLiveMetrics = true;\n this.enableStandardMetrics = true;\n this.enableTraceBasedSamplingForLogs = false;\n this.enablePerformanceCounters = true;\n this.metricExportIntervalMillis = this.calculateMetricExportInterval();\n this.instrumentationOptions = {\n http: { enabled: true },\n azureSdk: { enabled: true },\n mongoDb: { enabled: true },\n mySql: { enabled: true },\n postgreSql: { enabled: true },\n redis: { enabled: true },\n redis4: { enabled: true },\n };\n this._setDefaultResource();\n this.browserSdkLoaderOptions = {\n enabled: false,\n connectionString: \"\",\n };\n\n if (options) {\n // Merge default with provided options\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n options.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n options.instrumentationOptions,\n );\n this.resource = Object.assign(this.resource, options.resource);\n this.samplingRatio =\n options.samplingRatio !== undefined ? options.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n options.tracesPerSecond !== undefined ? options.tracesPerSecond : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n options.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n options.enableLiveMetrics !== undefined\n ? options.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n options.enableStandardMetrics !== undefined\n ? options.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n options.enableTraceBasedSamplingForLogs !== undefined\n ? options.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.enablePerformanceCounters =\n options.enablePerformanceCounters !== undefined\n ? options.enablePerformanceCounters\n : this.enablePerformanceCounters;\n }\n // JSON configuration will take precedence over options provided\n this._mergeJsonConfig();\n // ENV configuration will take precedence over other configurations\n this._mergeEnvConfig();\n }\n\n private _mergeEnvConfig(): void {\n const envConfig = EnvConfig.getInstance();\n this.samplingRatio =\n envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;\n this.sampler = envConfig.sampler ?? this.sampler;\n }\n\n private _mergeJsonConfig(): void {\n try {\n const jsonConfig = JsonConfig.getInstance();\n this.samplingRatio =\n jsonConfig.samplingRatio !== undefined ? jsonConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n jsonConfig.tracesPerSecond !== undefined\n ? jsonConfig.tracesPerSecond\n : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n jsonConfig.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n jsonConfig.enableLiveMetrics !== undefined\n ? jsonConfig.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n jsonConfig.enableStandardMetrics !== undefined\n ? jsonConfig.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n jsonConfig.enableTraceBasedSamplingForLogs !== undefined\n ? jsonConfig.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n jsonConfig.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n jsonConfig.instrumentationOptions,\n );\n } catch (error) {\n Logger.getInstance().error(\"Failed to load JSON config file values.\", error);\n }\n }\n\n private _setDefaultResource(): void {\n let resource = defaultResource();\n // Load resource attributes from env\n const detectResourceConfig: ResourceDetectionConfig = {\n detectors: [envDetector],\n };\n const envResource = detectResources(detectResourceConfig);\n resource = resource.merge(envResource);\n\n // Load resource attributes from Azure\n const azureResource: Resource = detectResources({\n detectors: [azureAksDetector, azureAppServiceDetector, azureFunctionsDetector],\n });\n this._resource = resource.merge(azureResource);\n\n // Handle VM resource detection asynchronously to avoid warnings\n // about accessing resource attributes before async attributes are settled\n this._initializeVmResourceAsync();\n }\n\n /**\n * Initialize VM resource detection asynchronously to avoid warnings\n * about accessing resource attributes before async attributes settle\n */\n private _initializeVmResourceAsync(): void {\n const vmResource = detectResources({\n detectors: [azureVmDetector],\n });\n\n // Don't wait for VM resource detection to complete during initialization\n // This prevents warnings about accessing resource attributes before async attributes are settled\n if (vmResource.asyncAttributesPending) {\n void vmResource\n .waitForAsyncAttributes?.()\n .then(() => {\n this._resource = this._resource.merge(vmResource);\n return;\n })\n .catch(() => {\n // Silently ignore VM detection errors to avoid unnecessary warnings\n // VM detection is optional and failures shouldn't impact core functionality\n });\n } else {\n // If VM detection completed synchronously, merge immediately\n this._resource = this._resource.merge(vmResource);\n }\n }\n\n public calculateMetricExportInterval(options?: { collectionInterval: number }): number {\n const defaultInterval = 60000; // 60 seconds\n\n // Prioritize OTEL_METRIC_EXPORT_INTERVAL env var\n if (process.env.OTEL_METRIC_EXPORT_INTERVAL) {\n const envInterval = parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL.trim(), 10);\n if (!isNaN(envInterval) && envInterval > 0) {\n return envInterval;\n }\n }\n\n // Then use options if provided\n if (options?.collectionInterval) {\n return options.collectionInterval;\n }\n\n // Default fallback\n return defaultInterval;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ResourceDetectionConfig, Resource } from \"@opentelemetry/resources\";\nimport {\n defaultResource,\n detectResources,\n emptyResource,\n envDetector,\n} from \"@opentelemetry/resources\";\nimport type {\n BrowserSdkLoaderOptions,\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n} from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport { isAksResourceDetectorPopulated } from \"../utils/common.js\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureContainerAppsDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\nimport { SEMRESATTRS_CLOUD_PLATFORM } from \"@opentelemetry/semantic-conventions\";\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration\n */\nexport class InternalConfig implements AzureMonitorOpenTelemetryOptions {\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n public samplingRatio: number;\n /** The maximum number of spans to sample per second. */\n public tracesPerSecond?: number;\n /** Azure Monitor Exporter Configuration */\n public azureMonitorExporterOptions: AzureMonitorExporterOptions;\n /**\n * OpenTelemetry Instrumentations configuration included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4)\n */\n public instrumentationOptions: InstrumentationOptions;\n /** Enable Live Metrics feature */\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature */\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** Metric export interval in milliseconds */\n public metricExportIntervalMillis: number;\n /** Custom OpenTelemetry sampler (env-only) */\n public sampler?: Sampler;\n\n private _resource: Resource = emptyResource();\n private _aksResourceDetectorPopulated: boolean = false;\n\n public set resource(resource: Resource) {\n this._resource = this._resource.merge(resource);\n }\n\n /**\n *Get OpenTelemetry Resource\n */\n public get resource(): Resource {\n return this._resource;\n }\n\n /**\n * Whether the AKS resource detector was able to populate the AKS cluster attributes, which\n * requires the customer to have configured access to the `aks-cluster-metadata` ConfigMap.\n * @internal\n */\n public get aksResourceDetectorPopulated(): boolean {\n return this._aksResourceDetectorPopulated;\n }\n\n public browserSdkLoaderOptions: BrowserSdkLoaderOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.\n */\n constructor(options?: AzureMonitorOpenTelemetryOptions) {\n // Default values\n this.azureMonitorExporterOptions = {};\n this.samplingRatio = 1;\n this.tracesPerSecond = 5;\n this.enableLiveMetrics = true;\n this.enableStandardMetrics = true;\n this.enableTraceBasedSamplingForLogs = false;\n this.enablePerformanceCounters = true;\n this.metricExportIntervalMillis = this.calculateMetricExportInterval();\n this.instrumentationOptions = {\n http: { enabled: true },\n azureSdk: { enabled: true },\n mongoDb: { enabled: true },\n mySql: { enabled: true },\n postgreSql: { enabled: true },\n redis: { enabled: true },\n redis4: { enabled: true },\n console: { enabled: false },\n };\n this._setDefaultResource();\n this.browserSdkLoaderOptions = {\n enabled: false,\n connectionString: \"\",\n };\n\n if (options) {\n // Merge default with provided options\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n options.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n options.instrumentationOptions,\n );\n this.resource = Object.assign(this.resource, options.resource);\n this.samplingRatio =\n options.samplingRatio !== undefined ? options.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n options.tracesPerSecond !== undefined ? options.tracesPerSecond : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n options.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n options.enableLiveMetrics !== undefined\n ? options.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n options.enableStandardMetrics !== undefined\n ? options.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n options.enableTraceBasedSamplingForLogs !== undefined\n ? options.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.enablePerformanceCounters =\n options.enablePerformanceCounters !== undefined\n ? options.enablePerformanceCounters\n : this.enablePerformanceCounters;\n }\n // JSON configuration will take precedence over options provided\n this._mergeJsonConfig();\n // ENV configuration will take precedence over other configurations\n this._mergeEnvConfig();\n }\n\n private _mergeEnvConfig(): void {\n const envConfig = EnvConfig.getInstance();\n this.samplingRatio =\n envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;\n this.sampler = envConfig.sampler ?? this.sampler;\n }\n\n private _mergeJsonConfig(): void {\n try {\n const jsonConfig = JsonConfig.getInstance();\n this.samplingRatio =\n jsonConfig.samplingRatio !== undefined ? jsonConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n jsonConfig.tracesPerSecond !== undefined\n ? jsonConfig.tracesPerSecond\n : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n jsonConfig.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n jsonConfig.enableLiveMetrics !== undefined\n ? jsonConfig.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n jsonConfig.enableStandardMetrics !== undefined\n ? jsonConfig.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n jsonConfig.enableTraceBasedSamplingForLogs !== undefined\n ? jsonConfig.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n jsonConfig.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n jsonConfig.instrumentationOptions,\n );\n } catch (error) {\n Logger.getInstance().error(\"Failed to load JSON config file values.\", error);\n }\n }\n\n private _setDefaultResource(): void {\n let resource = defaultResource();\n // Load resource attributes from env\n const detectResourceConfig: ResourceDetectionConfig = {\n detectors: [envDetector],\n };\n const envResource = detectResources(detectResourceConfig);\n resource = resource.merge(envResource);\n\n // Load resource attributes from Azure. AKS is detected on its own so that we can tell\n // whether the AKS detector itself populated the cluster attributes - other detectors and the\n // customer can populate the same attributes without AKS being involved.\n const aksResource: Resource = detectResources({\n detectors: [azureAksDetector],\n });\n this._aksResourceDetectorPopulated = isAksResourceDetectorPopulated(aksResource.attributes);\n\n const azureResource: Resource = detectResources({\n detectors: [azureAppServiceDetector, azureContainerAppsDetector, azureFunctionsDetector],\n });\n this._resource = resource.merge(aksResource).merge(azureResource);\n\n // The IMDS probe fails on App Service, Functions, and Container Apps, and on AKS\n // it describes the node VM rather than the cluster.\n const platformDetected =\n aksResource.attributes[SEMRESATTRS_CLOUD_PLATFORM] ??\n azureResource.attributes[SEMRESATTRS_CLOUD_PLATFORM];\n if (!platformDetected) {\n this._initializeVmResourceAsync();\n }\n }\n\n /**\n * Initialize VM resource detection asynchronously to avoid warnings\n * about accessing resource attributes before async attributes settle\n */\n private _initializeVmResourceAsync(): void {\n const vmResource = detectResources({\n detectors: [azureVmDetector],\n });\n\n // Don't wait for VM resource detection to complete during initialization\n // This prevents warnings about accessing resource attributes before async attributes are settled\n if (vmResource.asyncAttributesPending) {\n void vmResource\n .waitForAsyncAttributes?.()\n .then(() => {\n this._resource = this._resource.merge(vmResource);\n return;\n })\n .catch(() => {\n // Silently ignore VM detection errors to avoid unnecessary warnings\n // VM detection is optional and failures shouldn't impact core functionality\n });\n } else {\n // If VM detection completed synchronously, merge immediately\n this._resource = this._resource.merge(vmResource);\n }\n }\n\n public calculateMetricExportInterval(options?: { collectionInterval: number }): number {\n const defaultInterval = 60000; // 60 seconds\n\n // Prioritize OTEL_METRIC_EXPORT_INTERVAL env var\n if (process.env.OTEL_METRIC_EXPORT_INTERVAL) {\n const envInterval = parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL.trim(), 10);\n if (!isNaN(envInterval) && envInterval > 0) {\n return envInterval;\n }\n }\n\n // Then use options if provided\n if (options?.collectionInterval) {\n return options.collectionInterval;\n }\n\n // Default fallback\n return defaultInterval;\n }\n}\n"]}
|
|
@@ -19,6 +19,7 @@ export declare class DiagFileConsoleLogger implements DiagLogger {
|
|
|
19
19
|
debug(message?: any, ...args: any[]): void;
|
|
20
20
|
verbose(message?: any, ...args: any[]): void;
|
|
21
21
|
logMessage(message?: any, ...optionalParams: any[]): Promise<void>;
|
|
22
|
+
private _writeToConsole;
|
|
22
23
|
/**
|
|
23
24
|
* Checks if the warning message should be filtered out to avoid showing
|
|
24
25
|
* non-actionable warnings to customers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagFileConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagFileConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgBrD,qBAAa,qBAAsB,YAAW,UAAU;IACtD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAqB;;IAyCrC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYtC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/E,OAAO,CAAC,eAAe;IAIvB;;;OAGG;IACH,OAAO,CAAC,qCAAqC;IA2C7C,OAAO,CAAC,wCAAwC;YAelC,YAAY;YAmCZ,iBAAiB;YAajB,gBAAgB;CAyB/B"}
|
|
@@ -8,6 +8,9 @@ const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
|
|
|
8
8
|
const node_os_1 = tslib_1.__importDefault(require("node:os"));
|
|
9
9
|
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
|
10
10
|
const index_js_1 = require("../../utils/index.js");
|
|
11
|
+
// Capture the unpatched sink to prevent recursive diagnostic collection.
|
|
12
|
+
// eslint-disable-next-line no-console
|
|
13
|
+
const originalConsoleLog = console.log.bind(console);
|
|
11
14
|
class DiagFileConsoleLogger {
|
|
12
15
|
_TAG = "DiagFileConsoleLogger:";
|
|
13
16
|
_cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;
|
|
@@ -121,15 +124,17 @@ class DiagFileConsoleLogger {
|
|
|
121
124
|
await this._storeToDisk(args);
|
|
122
125
|
}
|
|
123
126
|
if (this._logToConsole) {
|
|
124
|
-
|
|
125
|
-
console.log(...args);
|
|
127
|
+
this._writeToConsole(...args);
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
130
|
catch (err) {
|
|
129
|
-
|
|
130
|
-
console.log(this._TAG, `Failed to log to file: ${err && err.message}`);
|
|
131
|
+
this._writeToConsole(this._TAG, `Failed to log to file: ${err && err.message}`);
|
|
131
132
|
}
|
|
132
133
|
}
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
135
|
+
_writeToConsole(...args) {
|
|
136
|
+
originalConsoleLog(...args);
|
|
137
|
+
}
|
|
133
138
|
/**
|
|
134
139
|
* Checks if the warning message should be filtered out to avoid showing
|
|
135
140
|
* non-actionable warnings to customers
|
|
@@ -187,8 +192,7 @@ class DiagFileConsoleLogger {
|
|
|
187
192
|
await (0, index_js_1.confirmDirExists)(this._tempDir);
|
|
188
193
|
}
|
|
189
194
|
catch (err) {
|
|
190
|
-
|
|
191
|
-
console.log(this._TAG, `Failed to create directory for log file: ${err && err.message}`);
|
|
195
|
+
this._writeToConsole(this._TAG, `Failed to create directory for log file: ${err && err.message}`);
|
|
192
196
|
return;
|
|
193
197
|
}
|
|
194
198
|
try {
|
|
@@ -200,8 +204,7 @@ class DiagFileConsoleLogger {
|
|
|
200
204
|
await (0, index_js_1.appendFileAsync)(this._fileFullPath, data);
|
|
201
205
|
}
|
|
202
206
|
catch (appendError) {
|
|
203
|
-
|
|
204
|
-
console.log(this._TAG, `Failed to put log into file: ${appendError && appendError.message}`);
|
|
207
|
+
this._writeToConsole(this._TAG, `Failed to put log into file: ${appendError && appendError.message}`);
|
|
205
208
|
return;
|
|
206
209
|
}
|
|
207
210
|
}
|
|
@@ -221,8 +224,7 @@ class DiagFileConsoleLogger {
|
|
|
221
224
|
await (0, index_js_1.writeFileAsync)(backupPath, buffer);
|
|
222
225
|
}
|
|
223
226
|
catch (err) {
|
|
224
|
-
|
|
225
|
-
console.log("Failed to generate backup log file", err);
|
|
227
|
+
this._writeToConsole(this._TAG, "Failed to generate backup log file", err);
|
|
226
228
|
}
|
|
227
229
|
finally {
|
|
228
230
|
// Store logs
|
|
@@ -253,8 +255,7 @@ class DiagFileConsoleLogger {
|
|
|
253
255
|
}
|
|
254
256
|
}
|
|
255
257
|
catch (err) {
|
|
256
|
-
|
|
257
|
-
console.log(this._TAG, `Failed to cleanup log files: ${err && err.message}`);
|
|
258
|
+
this._writeToConsole(this._TAG, `Failed to cleanup log files: ${err && err.message}`);
|
|
258
259
|
}
|
|
259
260
|
}
|
|
260
261
|
}
|