@azure/monitor-opentelemetry 1.14.2 → 1.15.1-alpha.20260119.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +44 -1
  2. package/dist/commonjs/index.d.ts.map +1 -1
  3. package/dist/commonjs/index.js +3 -1
  4. package/dist/commonjs/index.js.map +1 -1
  5. package/dist/commonjs/loader.d.ts +2 -0
  6. package/dist/commonjs/loader.d.ts.map +1 -0
  7. package/dist/commonjs/loader.js +40 -0
  8. package/dist/commonjs/loader.js.map +1 -0
  9. package/dist/commonjs/metrics/handler.d.ts.map +1 -1
  10. package/dist/commonjs/metrics/handler.js +33 -1
  11. package/dist/commonjs/metrics/handler.js.map +1 -1
  12. package/dist/commonjs/metrics/types.d.ts +5 -0
  13. package/dist/commonjs/metrics/types.d.ts.map +1 -1
  14. package/dist/commonjs/metrics/types.js +9 -1
  15. package/dist/commonjs/metrics/types.js.map +1 -1
  16. package/dist/commonjs/shared/config.d.ts +3 -0
  17. package/dist/commonjs/shared/config.d.ts.map +1 -1
  18. package/dist/commonjs/shared/config.js +3 -0
  19. package/dist/commonjs/shared/config.js.map +1 -1
  20. package/dist/commonjs/shared/envConfig.d.ts +6 -0
  21. package/dist/commonjs/shared/envConfig.d.ts.map +1 -1
  22. package/dist/commonjs/shared/envConfig.js +91 -19
  23. package/dist/commonjs/shared/envConfig.js.map +1 -1
  24. package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts +1 -0
  25. package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
  26. package/dist/commonjs/shared/logging/diagFileConsoleLogger.js +44 -10
  27. package/dist/commonjs/shared/logging/diagFileConsoleLogger.js.map +1 -1
  28. package/dist/commonjs/shared/module-cjs.cjs.map +1 -1
  29. package/dist/commonjs/shared/module-cjs.d.cts.map +1 -1
  30. package/dist/commonjs/shared/module.d.ts +6 -0
  31. package/dist/commonjs/shared/module.js +18 -0
  32. package/dist/commonjs/traces/handler.d.ts.map +1 -1
  33. package/dist/commonjs/traces/handler.js +5 -2
  34. package/dist/commonjs/traces/handler.js.map +1 -1
  35. package/dist/commonjs/tsdoc-metadata.json +1 -1
  36. package/dist/commonjs/types.d.ts +4 -2
  37. package/dist/commonjs/types.d.ts.map +1 -1
  38. package/dist/commonjs/types.js +1 -1
  39. package/dist/commonjs/types.js.map +1 -1
  40. package/dist/esm/index.d.ts.map +1 -1
  41. package/dist/esm/index.js +3 -1
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/loader.d.ts +2 -0
  44. package/dist/esm/loader.d.ts.map +1 -0
  45. package/dist/esm/loader.js +37 -0
  46. package/dist/esm/loader.js.map +1 -0
  47. package/dist/esm/metrics/handler.d.ts.map +1 -1
  48. package/dist/esm/metrics/handler.js +35 -3
  49. package/dist/esm/metrics/handler.js.map +1 -1
  50. package/dist/esm/metrics/types.d.ts +5 -0
  51. package/dist/esm/metrics/types.d.ts.map +1 -1
  52. package/dist/esm/metrics/types.js +8 -0
  53. package/dist/esm/metrics/types.js.map +1 -1
  54. package/dist/esm/shared/config.d.ts +3 -0
  55. package/dist/esm/shared/config.d.ts.map +1 -1
  56. package/dist/esm/shared/config.js +3 -0
  57. package/dist/esm/shared/config.js.map +1 -1
  58. package/dist/esm/shared/envConfig.d.ts +6 -0
  59. package/dist/esm/shared/envConfig.d.ts.map +1 -1
  60. package/dist/esm/shared/envConfig.js +91 -19
  61. package/dist/esm/shared/envConfig.js.map +1 -1
  62. package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts +1 -0
  63. package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
  64. package/dist/esm/shared/logging/diagFileConsoleLogger.js +44 -10
  65. package/dist/esm/shared/logging/diagFileConsoleLogger.js.map +1 -1
  66. package/dist/esm/shared/module.d.ts +6 -0
  67. package/dist/esm/shared/module.d.ts.map +1 -1
  68. package/dist/esm/shared/module.js +10 -0
  69. package/dist/esm/shared/module.js.map +1 -1
  70. package/dist/esm/traces/handler.d.ts.map +1 -1
  71. package/dist/esm/traces/handler.js +5 -2
  72. package/dist/esm/traces/handler.js.map +1 -1
  73. package/dist/esm/types.d.ts +4 -2
  74. package/dist/esm/types.d.ts.map +1 -1
  75. package/dist/esm/types.js +1 -1
  76. package/dist/esm/types.js.map +1 -1
  77. package/package.json +21 -10
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { InstrumentationConfig } from \"@opentelemetry/instrumentation\";\nimport type { Resource } from \"@opentelemetry/resources\";\nimport type { LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport type { MetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\n\n/**\n * Azure Monitor OpenTelemetry Options\n */\nexport interface AzureMonitorOpenTelemetryOptions {\n /** Azure Monitor Exporter Configuration */\n azureMonitorExporterOptions?: AzureMonitorExporterOptions;\n /** OpenTelemetry Resource */\n resource?: Resource;\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n samplingRatio?: number;\n /** The maximum number of traces to sample per second (Default undefined) */\n tracesPerSecond?: number;\n /** Enable Live Metrics feature (Default false)*/\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature (Default true)*/\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** OpenTelemetry Instrumentations options included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4) */\n instrumentationOptions?: InstrumentationOptions;\n /** Application Insights Web Instrumentation options (enabled, connectionString, src, config)*/\n browserSdkLoaderOptions?: BrowserSdkLoaderOptions;\n /** An array of log record processors to register to the logger provider.*/\n logRecordProcessors?: LogRecordProcessor[];\n /** An array of span processors to register to the tracer provider.*/\n spanProcessors?: SpanProcessor[];\n /** An array of metric readers to register to the meter provider.*/\n metricReaders?: MetricReader[];\n}\n\n/**\n * OpenTelemetry Instrumentations Configuration interface\n */\nexport interface InstrumentationOptions {\n /** Azure SDK Instrumentation Config */\n azureSdk?: InstrumentationConfig;\n /** HTTP Instrumentation Config */\n http?: InstrumentationConfig;\n /** MongoDB Instrumentation Config */\n mongoDb?: InstrumentationConfig;\n /** MySQL Instrumentation Config */\n mySql?: InstrumentationConfig;\n /** PostgreSql Instrumentation Config */\n postgreSql?: InstrumentationConfig;\n /** Redis Instrumentation Config */\n redis?: InstrumentationConfig;\n /** Redis4 Instrumentation Config */\n redis4?: InstrumentationConfig;\n /** Bunyan Instrumentation Config */\n bunyan?: InstrumentationConfig;\n /** Winston Instrumentation Config */\n winston?: InstrumentationConfig;\n}\n\n/**\n * Statsbeat Features Configuration interface\n * @internal\n */\nexport interface StatsbeatFeatures {\n diskRetry?: boolean;\n aadHandling?: boolean;\n browserSdkLoader?: boolean;\n distro?: boolean;\n liveMetrics?: boolean;\n shim?: boolean;\n customerSdkStats?: boolean;\n multiIkey?: boolean;\n rateLimitedSampler?: boolean;\n}\n\n/**\n * Statsbeat Features Mapping\n * @internal\n */\nexport const StatsbeatFeaturesMap = new Map<string, number>([\n [\"diskRetry\", 1],\n [\"aadHandling\", 2],\n [\"browserSdkLoader\", 4],\n [\"distro\", 8],\n [\"liveMetrics\", 16],\n [\"shim\", 32],\n [\"customerSdkStats\", 64],\n [\"multiIkey\", 128],\n [\"rateLimitedSampler\", 256],\n]);\n\n/**\n * Statsbeat Instrumentations Configuration interface\n * @internal\n */\nexport interface StatsbeatInstrumentations {\n /** Azure Monitor Supported Instrumentations */\n azureSdk?: boolean;\n mongoDb?: boolean;\n mySql?: boolean;\n postgreSql?: boolean;\n redis?: boolean;\n bunyan?: boolean;\n winston?: boolean;\n /** OpenTelemetry Community Instrumentations */\n amqplib?: boolean;\n cucumber?: boolean;\n dataloader?: boolean;\n fs?: boolean;\n lruMemoizer?: boolean;\n mongoose?: boolean;\n runtimeNode?: boolean;\n socketIo?: boolean;\n tedious?: boolean;\n undici?: boolean;\n cassandra?: boolean;\n connect?: boolean;\n dns?: boolean;\n express?: boolean;\n fastify?: boolean;\n genericPool?: boolean;\n graphql?: boolean;\n hapi?: boolean;\n ioredis?: boolean;\n knex?: boolean;\n koa?: boolean;\n memcached?: boolean;\n mysql2?: boolean;\n nestjsCore?: boolean;\n net?: boolean;\n pino?: boolean;\n restify?: boolean;\n router?: boolean;\n}\n\n/**\n * Statsbeat Instrumentation and Feature Option interface\n * @internal\n */\nexport interface StatsbeatOption {\n option: string;\n value: boolean;\n}\n\n/**\n * Application Insights Web Instrumentation Configuration interface\n */\nexport interface BrowserSdkLoaderOptions {\n /** Browser SDK Loader Enable */\n enabled?: boolean;\n /** Browser SDK Loader Connection String */\n connectionString?: string;\n}\n\nexport const AZURE_MONITOR_OPENTELEMETRY_VERSION = \"1.14.2\";\nexport const AZURE_MONITOR_STATSBEAT_FEATURES = \"AZURE_MONITOR_STATSBEAT_FEATURES\";\nexport const AZURE_MONITOR_PREFIX = \"AZURE_MONITOR_PREFIX\";\nexport const AZURE_MONITOR_AUTO_ATTACH = \"AZURE_MONITOR_AUTO_ATTACH\";\nexport const APPLICATION_INSIGHTS_SHIM_VERSION = \"APPLICATION_INSIGHTS_SHIM_VERSION\";\n\nexport enum AttachTypePrefix {\n INTEGRATED_AUTO = \"i\",\n MANUAL = \"m\",\n}\n\n/**\n * Default Browser SDK Loader Source\n * @internal\n */\nexport const BROWSER_SDK_LOADER_DEFAULT_SOURCE = \"https://js.monitor.azure.com/scripts/b/ai\";\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://global.livediagnostics.monitor.azure.com\";\n\n/**\n * Internal attribute name for sample rate\n * @internal\n */\nexport const AzureMonitorSampleRate = \"microsoft.sample_rate\";\n\n/**\n * Enables the preview version of customer-facing SDK Stats.\n * @internal\n */\nexport const APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW =\n \"APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW\";\n\nexport enum StatsbeatFeature {\n NONE = 0,\n DISK_RETRY = 1,\n AAD_HANDLING = 2,\n BROWSER_SDK_LOADER = 4,\n DISTRO = 8,\n LIVE_METRICS = 16,\n SHIM = 32,\n CUSTOMER_SDKSTATS = 64,\n MULTI_IKEY = 128,\n}\n\nexport enum StatsbeatInstrumentation {\n /** Azure Monitor Supported Instrumentations */\n NONE = 0,\n AZURE_CORE_TRACING = 1,\n MONGODB = 2,\n MYSQL = 4,\n REDIS = 8,\n POSTGRES = 16,\n BUNYAN = 32,\n WINSTON = 64,\n /** OpenTelemetry Supported Instrumentations */\n // Console instrumentation is not supported here - occupies 128\n CUCUMBER = 256,\n DATALOADER = 512,\n FS = 1024,\n LRU_MEMOIZER = 2048,\n MONGOOSE = 4096,\n RUNTIME_NODE = 8192,\n SOCKET_IO = 16384,\n TEDIOUS = 32768,\n UNDICI = 65536,\n CASSANDRA = 131072,\n CONNECT = 262144,\n DNS = 524288,\n EXPRESS = 1048576,\n FASTIFY = 2097152,\n GENERIC_POOL = 4194304,\n GRAPHQL = 8388608,\n HAPI = 16777216,\n IOREDIS = 33554432,\n KNEX = 67108864,\n KOA = 134217728,\n MEMCACHED = 268435456,\n MYSQL2 = 536870912,\n NESTJS_CORE = 1073741824,\n NET = 2147483648,\n PINO = 4294967296,\n RESTIFY = 8589934592,\n ROUTER = 17179869184,\n AMQPLIB = 34359738368,\n}\n\n/**\n * Statsbeat Instrumentation Mapping\n * @internal\n */\nexport const StatsbeatInstrumentationMap = new Map<string, number>([\n [\"@opentelemetry/instrumentation-amqplib\", StatsbeatInstrumentation.AMQPLIB],\n [\"@opentelemetry/instrumentation-cucumber\", StatsbeatInstrumentation.CUCUMBER],\n [\"@opentelemetry/instrumentation-dataloader\", StatsbeatInstrumentation.DATALOADER],\n [\"@opentelemetry/instrumentation-fs\", StatsbeatInstrumentation.FS],\n [\"@opentelemetry/instrumentation-lru-memoizer\", StatsbeatInstrumentation.LRU_MEMOIZER],\n [\"@opentelemetry/instrumentation-mongoose\", StatsbeatInstrumentation.MONGOOSE],\n [\"@opentelemetry/instrumentation-runtime-node\", StatsbeatInstrumentation.RUNTIME_NODE],\n [\"@opentelemetry/instrumentation-socket.io\", StatsbeatInstrumentation.SOCKET_IO],\n [\"@opentelemetry/instrumentation-tedious\", StatsbeatInstrumentation.TEDIOUS],\n [\"@opentelemetry/instrumentation-undici\", StatsbeatInstrumentation.UNDICI],\n [\"@opentelemetry/instrumentation-cassandra-driver\", StatsbeatInstrumentation.CASSANDRA],\n [\"@opentelemetry/instrumentation-connect\", StatsbeatInstrumentation.CONNECT],\n [\"@opentelemetry/instrumentation-dns\", StatsbeatInstrumentation.DNS],\n [\"@opentelemetry/instrumentation-express\", StatsbeatInstrumentation.EXPRESS],\n [\"@opentelemetry/instrumentation-fastify\", StatsbeatInstrumentation.FASTIFY],\n [\"@opentelemetry/instrumentation-generic-pool\", StatsbeatInstrumentation.GENERIC_POOL],\n [\"@opentelemetry/instrumentation-graphql\", StatsbeatInstrumentation.GRAPHQL],\n [\"@opentelemetry/instrumentation-hapi\", StatsbeatInstrumentation.HAPI],\n [\"@opentelemetry/instrumentation-ioredis\", StatsbeatInstrumentation.IOREDIS],\n [\"@opentelemetry/instrumentation-knex\", StatsbeatInstrumentation.KNEX],\n [\"@opentelemetry/instrumentation-koa\", StatsbeatInstrumentation.KOA],\n [\"@opentelemetry/instrumentation-memcached\", StatsbeatInstrumentation.MEMCACHED],\n [\"@opentelemetry/instrumentation-mysql2\", StatsbeatInstrumentation.MYSQL2],\n [\"@opentelemetry/instrumentation-nestjs-core\", StatsbeatInstrumentation.NESTJS_CORE],\n [\"@opentelemetry/instrumentation-net\", StatsbeatInstrumentation.NET],\n [\"@opentelemetry/instrumentation-pino\", StatsbeatInstrumentation.PINO],\n [\"@opentelemetry/instrumentation-restify\", StatsbeatInstrumentation.RESTIFY],\n [\"@opentelemetry/instrumentation-router\", StatsbeatInstrumentation.ROUTER],\n]);\n\nexport interface StatsbeatEnvironmentConfig {\n instrumentation: StatsbeatInstrumentation;\n feature: StatsbeatFeature;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { InstrumentationConfig } from \"@opentelemetry/instrumentation\";\nimport type { Resource } from \"@opentelemetry/resources\";\nimport type { LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport type { MetricReader, ViewOptions } from \"@opentelemetry/sdk-metrics\";\nimport type { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\n\n/**\n * Azure Monitor OpenTelemetry Options\n */\nexport interface AzureMonitorOpenTelemetryOptions {\n /** Azure Monitor Exporter Configuration */\n azureMonitorExporterOptions?: AzureMonitorExporterOptions;\n /** OpenTelemetry Resource */\n resource?: Resource;\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n samplingRatio?: number;\n /** The maximum number of traces to sample per second (Default undefined) */\n tracesPerSecond?: number;\n /** Enable Live Metrics feature (Default false)*/\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature (Default true)*/\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** OpenTelemetry Instrumentations options included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4) */\n instrumentationOptions?: InstrumentationOptions;\n /** Application Insights Web Instrumentation options (enabled, connectionString, src, config)*/\n browserSdkLoaderOptions?: BrowserSdkLoaderOptions;\n /** An array of log record processors to register to the logger provider.*/\n logRecordProcessors?: LogRecordProcessor[];\n /** An array of span processors to register to the tracer provider.*/\n spanProcessors?: SpanProcessor[];\n /** An array of metric readers to register to the meter provider.*/\n metricReaders?: MetricReader[];\n /** An array of metric views to register to the meter provider.*/\n views?: ViewOptions[];\n}\n\n/**\n * OpenTelemetry Instrumentations Configuration interface\n */\nexport interface InstrumentationOptions {\n /** Azure SDK Instrumentation Config */\n azureSdk?: InstrumentationConfig;\n /** HTTP Instrumentation Config */\n http?: InstrumentationConfig;\n /** MongoDB Instrumentation Config */\n mongoDb?: InstrumentationConfig;\n /** MySQL Instrumentation Config */\n mySql?: InstrumentationConfig;\n /** PostgreSql Instrumentation Config */\n postgreSql?: InstrumentationConfig;\n /** Redis Instrumentation Config */\n redis?: InstrumentationConfig;\n /** Redis4 Instrumentation Config */\n redis4?: InstrumentationConfig;\n /** Bunyan Instrumentation Config */\n bunyan?: InstrumentationConfig;\n /** Winston Instrumentation Config */\n winston?: InstrumentationConfig;\n}\n\n/**\n * Statsbeat Features Configuration interface\n * @internal\n */\nexport interface StatsbeatFeatures {\n diskRetry?: boolean;\n aadHandling?: boolean;\n browserSdkLoader?: boolean;\n distro?: boolean;\n liveMetrics?: boolean;\n shim?: boolean;\n customerSdkStats?: boolean;\n multiIkey?: boolean;\n rateLimitedSampler?: boolean;\n}\n\n/**\n * Statsbeat Features Mapping\n * @internal\n */\nexport const StatsbeatFeaturesMap = new Map<string, number>([\n [\"diskRetry\", 1],\n [\"aadHandling\", 2],\n [\"browserSdkLoader\", 4],\n [\"distro\", 8],\n [\"liveMetrics\", 16],\n [\"shim\", 32],\n [\"customerSdkStats\", 64],\n [\"multiIkey\", 128],\n [\"rateLimitedSampler\", 256],\n]);\n\n/**\n * Statsbeat Instrumentations Configuration interface\n * @internal\n */\nexport interface StatsbeatInstrumentations {\n /** Azure Monitor Supported Instrumentations */\n azureSdk?: boolean;\n mongoDb?: boolean;\n mySql?: boolean;\n postgreSql?: boolean;\n redis?: boolean;\n bunyan?: boolean;\n winston?: boolean;\n /** OpenTelemetry Community Instrumentations */\n amqplib?: boolean;\n cucumber?: boolean;\n dataloader?: boolean;\n fs?: boolean;\n lruMemoizer?: boolean;\n mongoose?: boolean;\n runtimeNode?: boolean;\n socketIo?: boolean;\n tedious?: boolean;\n undici?: boolean;\n cassandra?: boolean;\n connect?: boolean;\n dns?: boolean;\n express?: boolean;\n fastify?: boolean;\n genericPool?: boolean;\n graphql?: boolean;\n hapi?: boolean;\n ioredis?: boolean;\n knex?: boolean;\n koa?: boolean;\n memcached?: boolean;\n mysql2?: boolean;\n nestjsCore?: boolean;\n net?: boolean;\n pino?: boolean;\n restify?: boolean;\n router?: boolean;\n}\n\n/**\n * Statsbeat Instrumentation and Feature Option interface\n * @internal\n */\nexport interface StatsbeatOption {\n option: string;\n value: boolean;\n}\n\n/**\n * Application Insights Web Instrumentation Configuration interface\n */\nexport interface BrowserSdkLoaderOptions {\n /** Browser SDK Loader Enable */\n enabled?: boolean;\n /** Browser SDK Loader Connection String */\n connectionString?: string;\n}\n\nexport const AZURE_MONITOR_OPENTELEMETRY_VERSION = \"1.15.1\";\nexport const AZURE_MONITOR_STATSBEAT_FEATURES = \"AZURE_MONITOR_STATSBEAT_FEATURES\";\nexport const AZURE_MONITOR_PREFIX = \"AZURE_MONITOR_PREFIX\";\nexport const AZURE_MONITOR_AUTO_ATTACH = \"AZURE_MONITOR_AUTO_ATTACH\";\nexport const APPLICATION_INSIGHTS_SHIM_VERSION = \"APPLICATION_INSIGHTS_SHIM_VERSION\";\n\nexport enum AttachTypePrefix {\n INTEGRATED_AUTO = \"i\",\n MANUAL = \"m\",\n}\n\n/**\n * Default Browser SDK Loader Source\n * @internal\n */\nexport const BROWSER_SDK_LOADER_DEFAULT_SOURCE = \"https://js.monitor.azure.com/scripts/b/ai\";\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://global.livediagnostics.monitor.azure.com\";\n\n/**\n * Internal attribute name for sample rate\n * @internal\n */\nexport const AzureMonitorSampleRate = \"microsoft.sample_rate\";\n\n/**\n * Enables the preview version of customer-facing SDK Stats.\n * @internal\n */\nexport const APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW =\n \"APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW\";\n\nexport enum StatsbeatFeature {\n NONE = 0,\n DISK_RETRY = 1,\n AAD_HANDLING = 2,\n BROWSER_SDK_LOADER = 4,\n DISTRO = 8,\n LIVE_METRICS = 16,\n SHIM = 32,\n CUSTOMER_SDKSTATS = 64,\n MULTI_IKEY = 128,\n}\n\nexport enum StatsbeatInstrumentation {\n /** Azure Monitor Supported Instrumentations */\n NONE = 0,\n AZURE_CORE_TRACING = 1,\n MONGODB = 2,\n MYSQL = 4,\n REDIS = 8,\n POSTGRES = 16,\n BUNYAN = 32,\n WINSTON = 64,\n /** OpenTelemetry Supported Instrumentations */\n // Console instrumentation is not supported here - occupies 128\n CUCUMBER = 256,\n DATALOADER = 512,\n FS = 1024,\n LRU_MEMOIZER = 2048,\n MONGOOSE = 4096,\n RUNTIME_NODE = 8192,\n SOCKET_IO = 16384,\n TEDIOUS = 32768,\n UNDICI = 65536,\n CASSANDRA = 131072,\n CONNECT = 262144,\n DNS = 524288,\n EXPRESS = 1048576,\n FASTIFY = 2097152,\n GENERIC_POOL = 4194304,\n GRAPHQL = 8388608,\n HAPI = 16777216,\n IOREDIS = 33554432,\n KNEX = 67108864,\n KOA = 134217728,\n MEMCACHED = 268435456,\n MYSQL2 = 536870912,\n NESTJS_CORE = 1073741824,\n NET = 2147483648,\n PINO = 4294967296,\n RESTIFY = 8589934592,\n ROUTER = 17179869184,\n AMQPLIB = 34359738368,\n}\n\n/**\n * Statsbeat Instrumentation Mapping\n * @internal\n */\nexport const StatsbeatInstrumentationMap = new Map<string, number>([\n [\"@opentelemetry/instrumentation-amqplib\", StatsbeatInstrumentation.AMQPLIB],\n [\"@opentelemetry/instrumentation-cucumber\", StatsbeatInstrumentation.CUCUMBER],\n [\"@opentelemetry/instrumentation-dataloader\", StatsbeatInstrumentation.DATALOADER],\n [\"@opentelemetry/instrumentation-fs\", StatsbeatInstrumentation.FS],\n [\"@opentelemetry/instrumentation-lru-memoizer\", StatsbeatInstrumentation.LRU_MEMOIZER],\n [\"@opentelemetry/instrumentation-mongoose\", StatsbeatInstrumentation.MONGOOSE],\n [\"@opentelemetry/instrumentation-runtime-node\", StatsbeatInstrumentation.RUNTIME_NODE],\n [\"@opentelemetry/instrumentation-socket.io\", StatsbeatInstrumentation.SOCKET_IO],\n [\"@opentelemetry/instrumentation-tedious\", StatsbeatInstrumentation.TEDIOUS],\n [\"@opentelemetry/instrumentation-undici\", StatsbeatInstrumentation.UNDICI],\n [\"@opentelemetry/instrumentation-cassandra-driver\", StatsbeatInstrumentation.CASSANDRA],\n [\"@opentelemetry/instrumentation-connect\", StatsbeatInstrumentation.CONNECT],\n [\"@opentelemetry/instrumentation-dns\", StatsbeatInstrumentation.DNS],\n [\"@opentelemetry/instrumentation-express\", StatsbeatInstrumentation.EXPRESS],\n [\"@opentelemetry/instrumentation-fastify\", StatsbeatInstrumentation.FASTIFY],\n [\"@opentelemetry/instrumentation-generic-pool\", StatsbeatInstrumentation.GENERIC_POOL],\n [\"@opentelemetry/instrumentation-graphql\", StatsbeatInstrumentation.GRAPHQL],\n [\"@opentelemetry/instrumentation-hapi\", StatsbeatInstrumentation.HAPI],\n [\"@opentelemetry/instrumentation-ioredis\", StatsbeatInstrumentation.IOREDIS],\n [\"@opentelemetry/instrumentation-knex\", StatsbeatInstrumentation.KNEX],\n [\"@opentelemetry/instrumentation-koa\", StatsbeatInstrumentation.KOA],\n [\"@opentelemetry/instrumentation-memcached\", StatsbeatInstrumentation.MEMCACHED],\n [\"@opentelemetry/instrumentation-mysql2\", StatsbeatInstrumentation.MYSQL2],\n [\"@opentelemetry/instrumentation-nestjs-core\", StatsbeatInstrumentation.NESTJS_CORE],\n [\"@opentelemetry/instrumentation-net\", StatsbeatInstrumentation.NET],\n [\"@opentelemetry/instrumentation-pino\", StatsbeatInstrumentation.PINO],\n [\"@opentelemetry/instrumentation-restify\", StatsbeatInstrumentation.RESTIFY],\n [\"@opentelemetry/instrumentation-router\", StatsbeatInstrumentation.ROUTER],\n]);\n\nexport interface StatsbeatEnvironmentConfig {\n instrumentation: StatsbeatInstrumentation;\n feature: StatsbeatFeature;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOlD,OAAO,EAEL,gCAAgC,EAEhC,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AASpB,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC;AAO7F;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gCAAgC,GAAG,IAAI,CA0EhF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD;AAED;;;GAGG;AAEH,wBAAgB,eAAe,IAAI,OAAO,GAAG,SAAS,CAErD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOlD,OAAO,EAEL,gCAAgC,EAEhC,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AASpB,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,CAAC;AAO7F;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gCAAgC,GAAG,IAAI,CA6EhF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD;AAED;;;GAGG;AAEH,wBAAgB,eAAe,IAAI,OAAO,GAAG,SAAS,CAErD"}
package/dist/esm/index.js CHANGED
@@ -59,16 +59,18 @@ export function useAzureMonitor(options) {
59
59
  // Add extra SpanProcessors, and logRecordProcessors from user configuration
60
60
  const spanProcessors = options?.spanProcessors || [];
61
61
  const logRecordProcessors = options?.logRecordProcessors || [];
62
+ const customViews = options?.views || [];
62
63
  // Prepare metric readers - always include Azure Monitor
63
64
  const metricReaders = [
64
65
  metricHandler.getMetricReader(),
65
66
  ...(options?.metricReaders || []),
66
67
  ];
68
+ const views = metricHandler.getViews().concat(customViews);
67
69
  // Initialize OpenTelemetry SDK
68
70
  const sdkConfig = {
69
71
  autoDetectResources: true,
70
72
  metricReaders: metricReaders,
71
- views: metricHandler.getViews(),
73
+ views,
72
74
  instrumentations: instrumentations,
73
75
  logRecordProcessors: [
74
76
  logHandler.getAzureLogRecordProcessor(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { metrics, trace } from \"@opentelemetry/api\";\nimport { logs } from \"@opentelemetry/api-logs\";\nimport type { NodeSDKConfiguration } from \"@opentelemetry/sdk-node\";\nimport { NodeSDK } from \"@opentelemetry/sdk-node\";\nimport type { MetricReader } from \"@opentelemetry/sdk-metrics\";\nimport { InternalConfig } from \"./shared/config.js\";\nimport { MetricHandler } from \"./metrics/index.js\";\nimport { TraceHandler } from \"./traces/handler.js\";\nimport { LogHandler } from \"./logs/index.js\";\nimport type { StatsbeatFeatures, StatsbeatInstrumentations } from \"./types.js\";\nimport {\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AzureMonitorOpenTelemetryOptions,\n APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW,\n InstrumentationOptions,\n BrowserSdkLoaderOptions,\n} from \"./types.js\";\nimport { BrowserSdkLoader } from \"./browserSdkLoader/browserSdkLoader.js\";\nimport { setSdkPrefix } from \"./metrics/quickpulse/utils.js\";\nimport type { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport type { LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport { getInstance } from \"./utils/statsbeat.js\";\nimport { patchOpenTelemetryInstrumentationEnable } from \"./utils/opentelemetryInstrumentationPatcher.js\";\nimport { parseResourceDetectorsFromEnvVar } from \"./utils/common.js\";\n\nexport { AzureMonitorOpenTelemetryOptions, InstrumentationOptions, BrowserSdkLoaderOptions };\n\nprocess.env[\"AZURE_MONITOR_DISTRO_VERSION\"] = AZURE_MONITOR_OPENTELEMETRY_VERSION;\n\nlet sdk: NodeSDK;\nlet browserSdkLoader: BrowserSdkLoader | undefined;\n\n/**\n * Initialize Azure Monitor Distro\n * @param options - Azure Monitor OpenTelemetry Options\n */\nexport function useAzureMonitor(options?: AzureMonitorOpenTelemetryOptions): void {\n const config = new InternalConfig(options);\n patchOpenTelemetryInstrumentationEnable();\n const statsbeatInstrumentations: StatsbeatInstrumentations = {\n // Instrumentations\n azureSdk: config.instrumentationOptions?.azureSdk?.enabled,\n mongoDb: config.instrumentationOptions?.mongoDb?.enabled,\n mySql: config.instrumentationOptions?.mySql?.enabled,\n postgreSql: config.instrumentationOptions?.postgreSql?.enabled,\n redis: config.instrumentationOptions?.redis?.enabled,\n bunyan: config.instrumentationOptions?.bunyan?.enabled,\n winston: config.instrumentationOptions?.winston?.enabled,\n };\n const statsbeatFeatures: StatsbeatFeatures = {\n browserSdkLoader: config.browserSdkLoaderOptions.enabled,\n aadHandling: !!config.azureMonitorExporterOptions?.credential,\n diskRetry: !config.azureMonitorExporterOptions?.disableOfflineStorage,\n rateLimitedSampler: !!config.tracesPerSecond,\n customerSdkStats: process.env[APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW] === \"True\",\n };\n getInstance().setStatsbeatFeatures(statsbeatInstrumentations, statsbeatFeatures);\n\n if (config.browserSdkLoaderOptions.enabled) {\n browserSdkLoader = new BrowserSdkLoader(config);\n }\n // Remove global providers in OpenTelemetry, these would be overridden if present\n metrics.disable();\n trace.disable();\n logs.disable();\n\n // Create internal handlers\n const metricHandler = new MetricHandler(config);\n const traceHandler = new TraceHandler(config, metricHandler);\n const logHandler = new LogHandler(config, metricHandler);\n\n const instrumentations = traceHandler\n .getInstrumentations()\n .concat(logHandler.getInstrumentations());\n\n const resourceDetectorsList = parseResourceDetectorsFromEnvVar();\n\n // Add extra SpanProcessors, and logRecordProcessors from user configuration\n const spanProcessors: SpanProcessor[] = options?.spanProcessors || [];\n const logRecordProcessors: LogRecordProcessor[] = options?.logRecordProcessors || [];\n\n // Prepare metric readers - always include Azure Monitor\n const metricReaders: MetricReader[] = [\n metricHandler.getMetricReader(),\n ...(options?.metricReaders || []),\n ];\n\n // Initialize OpenTelemetry SDK\n const sdkConfig: Partial<NodeSDKConfiguration> = {\n autoDetectResources: true,\n metricReaders: metricReaders,\n views: metricHandler.getViews(),\n instrumentations: instrumentations,\n logRecordProcessors: [\n logHandler.getAzureLogRecordProcessor(),\n ...logRecordProcessors,\n logHandler.getBatchLogRecordProcessor(),\n ],\n resource: config.resource,\n sampler: traceHandler.getSampler(),\n spanProcessors: [\n traceHandler.getAzureMonitorSpanProcessor(),\n ...spanProcessors,\n traceHandler.getBatchSpanProcessor(),\n ],\n resourceDetectors: resourceDetectorsList,\n };\n sdk = new NodeSDK(sdkConfig);\n setSdkPrefix();\n sdk.start();\n}\n\n/**\n * Shutdown Azure Monitor Open Telemetry Distro\n * @see https://github.com/open-telemetry/opentelemetry-js/blob/0229434cb5a3179f63c021105f36270ae7897929/experimental/packages/opentelemetry-sdk-node/src/sdk.ts#L398\n */\nexport function shutdownAzureMonitor(): Promise<void> {\n browserSdkLoader?.dispose();\n return sdk?.shutdown();\n}\n\n/**\n * Get the internal SDK instance for testing purposes\n * @internal\n */\n// eslint-disable-next-line no-underscore-dangle\nexport function _getSdkInstance(): NodeSDK | undefined {\n return sdk;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { metrics, trace } from \"@opentelemetry/api\";\nimport { logs } from \"@opentelemetry/api-logs\";\nimport type { NodeSDKConfiguration } from \"@opentelemetry/sdk-node\";\nimport { NodeSDK } from \"@opentelemetry/sdk-node\";\nimport type { MetricReader, ViewOptions } from \"@opentelemetry/sdk-metrics\";\nimport { InternalConfig } from \"./shared/config.js\";\nimport { MetricHandler } from \"./metrics/index.js\";\nimport { TraceHandler } from \"./traces/handler.js\";\nimport { LogHandler } from \"./logs/index.js\";\nimport type { StatsbeatFeatures, StatsbeatInstrumentations } from \"./types.js\";\nimport {\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AzureMonitorOpenTelemetryOptions,\n APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW,\n InstrumentationOptions,\n BrowserSdkLoaderOptions,\n} from \"./types.js\";\nimport { BrowserSdkLoader } from \"./browserSdkLoader/browserSdkLoader.js\";\nimport { setSdkPrefix } from \"./metrics/quickpulse/utils.js\";\nimport type { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport type { LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport { getInstance } from \"./utils/statsbeat.js\";\nimport { patchOpenTelemetryInstrumentationEnable } from \"./utils/opentelemetryInstrumentationPatcher.js\";\nimport { parseResourceDetectorsFromEnvVar } from \"./utils/common.js\";\n\nexport { AzureMonitorOpenTelemetryOptions, InstrumentationOptions, BrowserSdkLoaderOptions };\n\nprocess.env[\"AZURE_MONITOR_DISTRO_VERSION\"] = AZURE_MONITOR_OPENTELEMETRY_VERSION;\n\nlet sdk: NodeSDK;\nlet browserSdkLoader: BrowserSdkLoader | undefined;\n\n/**\n * Initialize Azure Monitor Distro\n * @param options - Azure Monitor OpenTelemetry Options\n */\nexport function useAzureMonitor(options?: AzureMonitorOpenTelemetryOptions): void {\n const config = new InternalConfig(options);\n patchOpenTelemetryInstrumentationEnable();\n const statsbeatInstrumentations: StatsbeatInstrumentations = {\n // Instrumentations\n azureSdk: config.instrumentationOptions?.azureSdk?.enabled,\n mongoDb: config.instrumentationOptions?.mongoDb?.enabled,\n mySql: config.instrumentationOptions?.mySql?.enabled,\n postgreSql: config.instrumentationOptions?.postgreSql?.enabled,\n redis: config.instrumentationOptions?.redis?.enabled,\n bunyan: config.instrumentationOptions?.bunyan?.enabled,\n winston: config.instrumentationOptions?.winston?.enabled,\n };\n const statsbeatFeatures: StatsbeatFeatures = {\n browserSdkLoader: config.browserSdkLoaderOptions.enabled,\n aadHandling: !!config.azureMonitorExporterOptions?.credential,\n diskRetry: !config.azureMonitorExporterOptions?.disableOfflineStorage,\n rateLimitedSampler: !!config.tracesPerSecond,\n customerSdkStats: process.env[APPLICATIONINSIGHTS_SDKSTATS_ENABLED_PREVIEW] === \"True\",\n };\n getInstance().setStatsbeatFeatures(statsbeatInstrumentations, statsbeatFeatures);\n\n if (config.browserSdkLoaderOptions.enabled) {\n browserSdkLoader = new BrowserSdkLoader(config);\n }\n // Remove global providers in OpenTelemetry, these would be overridden if present\n metrics.disable();\n trace.disable();\n logs.disable();\n\n // Create internal handlers\n const metricHandler = new MetricHandler(config);\n const traceHandler = new TraceHandler(config, metricHandler);\n const logHandler = new LogHandler(config, metricHandler);\n\n const instrumentations = traceHandler\n .getInstrumentations()\n .concat(logHandler.getInstrumentations());\n\n const resourceDetectorsList = parseResourceDetectorsFromEnvVar();\n\n // Add extra SpanProcessors, and logRecordProcessors from user configuration\n const spanProcessors: SpanProcessor[] = options?.spanProcessors || [];\n const logRecordProcessors: LogRecordProcessor[] = options?.logRecordProcessors || [];\n const customViews: ViewOptions[] = options?.views || [];\n\n // Prepare metric readers - always include Azure Monitor\n const metricReaders: MetricReader[] = [\n metricHandler.getMetricReader(),\n ...(options?.metricReaders || []),\n ];\n\n const views: ViewOptions[] = metricHandler.getViews().concat(customViews);\n\n // Initialize OpenTelemetry SDK\n const sdkConfig: Partial<NodeSDKConfiguration> = {\n autoDetectResources: true,\n metricReaders: metricReaders,\n views,\n instrumentations: instrumentations,\n logRecordProcessors: [\n logHandler.getAzureLogRecordProcessor(),\n ...logRecordProcessors,\n logHandler.getBatchLogRecordProcessor(),\n ],\n resource: config.resource,\n sampler: traceHandler.getSampler(),\n spanProcessors: [\n traceHandler.getAzureMonitorSpanProcessor(),\n ...spanProcessors,\n traceHandler.getBatchSpanProcessor(),\n ],\n resourceDetectors: resourceDetectorsList,\n };\n sdk = new NodeSDK(sdkConfig);\n setSdkPrefix();\n sdk.start();\n}\n\n/**\n * Shutdown Azure Monitor Open Telemetry Distro\n * @see https://github.com/open-telemetry/opentelemetry-js/blob/0229434cb5a3179f63c021105f36270ae7897929/experimental/packages/opentelemetry-sdk-node/src/sdk.ts#L398\n */\nexport function shutdownAzureMonitor(): Promise<void> {\n browserSdkLoader?.dispose();\n return sdk?.shutdown();\n}\n\n/**\n * Get the internal SDK instance for testing purposes\n * @internal\n */\n// eslint-disable-next-line no-underscore-dangle\nexport function _getSdkInstance(): NodeSDK | undefined {\n return sdk;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/loader.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * ESM Loader entry point for Azure Monitor OpenTelemetry.
5
+ *
6
+ * For ESM applications, this loader MUST be used with the --import flag to ensure
7
+ * instrumentation hooks are registered before any application modules are loaded.
8
+ * This is required because ESM modules cannot be instrumented after they are loaded.
9
+ *
10
+ * Usage: node --import \@azure/monitor-opentelemetry/loader \<your-app-entry-point\>
11
+ */
12
+ import * as nodeModule from "node:module";
13
+ import { Logger } from "./shared/logging/index.js";
14
+ import { getModuleParentURL } from "./shared/module.js";
15
+ const OTEL_LOADER_SPECIFIER = "@opentelemetry/instrumentation/hook.mjs";
16
+ // Register the OpenTelemetry instrumentation loader immediately when this module is imported
17
+ const registerFn = nodeModule
18
+ .register;
19
+ if (typeof registerFn === "function") {
20
+ const parentURL = getModuleParentURL();
21
+ if (parentURL) {
22
+ try {
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ const result = registerFn(OTEL_LOADER_SPECIFIER, parentURL);
25
+ // Handle potential promise rejection (Node.js 20.6+ returns a promise-like object)
26
+ if (result && typeof result.catch === "function") {
27
+ void result.catch((error) => {
28
+ Logger.getInstance().warn("Failed to register OpenTelemetry instrumentation loader", error);
29
+ });
30
+ }
31
+ }
32
+ catch (error) {
33
+ Logger.getInstance().warn("Failed to register OpenTelemetry instrumentation loader", error);
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/loader.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;;;;;;;GAQG;AAEH,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,qBAAqB,GAAG,yCAAyC,CAAC;AAExE,6FAA6F;AAC7F,MAAM,UAAU,GAAI,UAA6E;KAC9F,QAAQ,CAAC;AAEZ,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAQ,CAAC;YAEnE,mFAAmF;YACnF,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACjD,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACnC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CACvB,yDAAyD,EACzD,KAAK,CACN,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * ESM Loader entry point for Azure Monitor OpenTelemetry.\n *\n * For ESM applications, this loader MUST be used with the --import flag to ensure\n * instrumentation hooks are registered before any application modules are loaded.\n * This is required because ESM modules cannot be instrumented after they are loaded.\n *\n * Usage: node --import \\@azure/monitor-opentelemetry/loader \\<your-app-entry-point\\>\n */\n\nimport * as nodeModule from \"node:module\";\nimport { Logger } from \"./shared/logging/index.js\";\nimport { getModuleParentURL } from \"./shared/module.js\";\n\nconst OTEL_LOADER_SPECIFIER = \"@opentelemetry/instrumentation/hook.mjs\";\n\n// Register the OpenTelemetry instrumentation loader immediately when this module is imported\nconst registerFn = (nodeModule as { register?: (specifier: string, parentURL?: string) => void })\n .register;\n\nif (typeof registerFn === \"function\") {\n const parentURL = getModuleParentURL();\n if (parentURL) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result = registerFn(OTEL_LOADER_SPECIFIER, parentURL) as any;\n\n // Handle potential promise rejection (Node.js 20.6+ returns a promise-like object)\n if (result && typeof result.catch === \"function\") {\n void result.catch((error: unknown) => {\n Logger.getInstance().warn(\n \"Failed to register OpenTelemetry instrumentation loader\",\n error,\n );\n });\n }\n } catch (error) {\n Logger.getInstance().warn(\"Failed to register OpenTelemetry instrumentation loader\", error);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/metrics/handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAwC,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAKxE;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;;OAIG;gBACS,MAAM,EAAE,cAAc;IA+C3B,eAAe,IAAI,6BAA6B;IAIhD,QAAQ,IAAI,WAAW,EAAE;IAIzB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIrC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAMpC,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAM/C;;OAEG;IAEU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKvC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/metrics/handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAiDxE;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;;OAIG;gBACS,MAAM,EAAE,cAAc;IAmD3B,eAAe,IAAI,6BAA6B;IAIhD,QAAQ,IAAI,WAAW,EAAE;IAIzB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIrC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAMpC,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAM/C;;OAEG;IAEU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAKvC"}
@@ -1,11 +1,42 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
  import { AzureMonitorMetricExporter } from "@azure/monitor-opentelemetry-exporter";
4
- import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
4
+ import { AggregationType, InstrumentType, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
5
5
  import { StandardMetrics } from "./standardMetrics.js";
6
- import { APPLICATION_INSIGHTS_NO_STANDARD_METRICS } from "./types.js";
6
+ import { APPLICATION_INSIGHTS_NO_STANDARD_METRICS, HISTOGRAM_AGGREGATION_MAP } from "./types.js";
7
7
  import { LiveMetrics } from "./quickpulse/liveMetrics.js";
8
8
  import { PerformanceCounterMetrics } from "./performanceCounters.js";
9
+ import { Logger } from "../shared/logging/index.js";
10
+ const DEFAULT_HISTOGRAM_AGGREGATION_ENV_VAR = "OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION";
11
+ function resolveHistogramAggregationFromEnv() {
12
+ const envValue = process.env[DEFAULT_HISTOGRAM_AGGREGATION_ENV_VAR];
13
+ if (!envValue) {
14
+ return undefined;
15
+ }
16
+ const normalized = envValue.trim().toLowerCase();
17
+ const aggregation = HISTOGRAM_AGGREGATION_MAP[normalized];
18
+ if (aggregation) {
19
+ return aggregation;
20
+ }
21
+ const validValues = Object.keys(HISTOGRAM_AGGREGATION_MAP)
22
+ .map((v) => `'${v}'`)
23
+ .join(" and ");
24
+ Logger.getInstance().warn(`${DEFAULT_HISTOGRAM_AGGREGATION_ENV_VAR} has unsupported value '${envValue}'. Supported values are ${validValues}.`);
25
+ return undefined;
26
+ }
27
+ class AzureMonitorMetricExporterWithAggregation extends AzureMonitorMetricExporter {
28
+ _histogramAggregation;
29
+ constructor(options, histogramAggregation) {
30
+ super(options);
31
+ this._histogramAggregation = histogramAggregation;
32
+ }
33
+ selectAggregation(instrumentType) {
34
+ if (instrumentType === InstrumentType.HISTOGRAM && this._histogramAggregation) {
35
+ return this._histogramAggregation;
36
+ }
37
+ return { type: AggregationType.DEFAULT };
38
+ }
39
+ }
9
40
  /**
10
41
  * Azure Monitor OpenTelemetry Metric Handler
11
42
  */
@@ -46,7 +77,8 @@ export class MetricHandler {
46
77
  config.instrumentationOptions.redis4?.enabled) {
47
78
  this._views.push({ meterName: "@opentelemetry/instrumentation-redis" });
48
79
  }
49
- this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);
80
+ const histogramAggregation = resolveHistogramAggregationFromEnv();
81
+ this._azureExporter = new AzureMonitorMetricExporterWithAggregation(this._config.azureMonitorExporterOptions, histogramAggregation);
50
82
  const metricReaderOptions = {
51
83
  exporter: this._azureExporter,
52
84
  exportIntervalMillis: this._config.metricExportIntervalMillis || defaultInterval,
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/metrics/handler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { PeriodicExportingMetricReaderOptions, ViewOptions } from \"@opentelemetry/sdk-metrics\";\nimport { PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type { InternalConfig } from \"../shared/config.js\";\nimport { StandardMetrics } from \"./standardMetrics.js\";\nimport type { ReadableSpan, Span } from \"@opentelemetry/sdk-trace-base\";\nimport { APPLICATION_INSIGHTS_NO_STANDARD_METRICS } from \"./types.js\";\nimport { LiveMetrics } from \"./quickpulse/liveMetrics.js\";\nimport { PerformanceCounterMetrics } from \"./performanceCounters.js\";\n\n/**\n * Azure Monitor OpenTelemetry Metric Handler\n */\nexport class MetricHandler {\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _standardMetrics?: StandardMetrics;\n private _performanceCounters?: PerformanceCounterMetrics;\n private _liveMetrics?: LiveMetrics;\n private _config: InternalConfig;\n private _views: ViewOptions[];\n\n /**\n * Initializes a new instance of the MetricHandler class.\n * @param config - Distro configuration.\n * @param options - Metric Handler options.\n */\n constructor(config: InternalConfig) {\n const defaultInterval = 60000;\n this._config = config;\n // Adding Views of instrumentations will allow customer to add Metric Readers after, and get access to previously created metrics using the views shared state\n this._views = [];\n if (config.instrumentationOptions.azureSdk?.enabled) {\n this._views.push({ meterName: \"@azure/opentelemetry-instrumentation-azure-sdk\" });\n }\n if (config.instrumentationOptions.http?.enabled) {\n this._views.push({ meterName: \"@azure/opentelemetry-instrumentation-http\" });\n }\n if (config.instrumentationOptions.mongoDb?.enabled) {\n this._views.push({ meterName: \"@azure/opentelemetry-instrumentation-mongodb\" });\n }\n if (config.instrumentationOptions.mySql?.enabled) {\n this._views.push({ meterName: \"@opentelemetry/instrumentation-mysql\" });\n }\n if (config.instrumentationOptions.postgreSql?.enabled) {\n this._views.push({ meterName: \"@opentelemetry/instrumentation-pg\" });\n }\n if (\n config.instrumentationOptions.redis?.enabled ||\n config.instrumentationOptions.redis4?.enabled\n ) {\n this._views.push({ meterName: \"@opentelemetry/instrumentation-redis\" });\n }\n this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter as any,\n exportIntervalMillis: this._config.metricExportIntervalMillis || defaultInterval,\n };\n this._metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n\n if (\n this._config.enableStandardMetrics &&\n !process.env[APPLICATION_INSIGHTS_NO_STANDARD_METRICS]\n ) {\n this._standardMetrics = new StandardMetrics(this._config);\n }\n if (this._config.enableLiveMetrics) {\n this._liveMetrics = new LiveMetrics(this._config);\n }\n if (this._config.enablePerformanceCounters) {\n this._performanceCounters = new PerformanceCounterMetrics(this._config);\n }\n }\n\n public getMetricReader(): PeriodicExportingMetricReader {\n return this._metricReader;\n }\n\n public getViews(): ViewOptions[] {\n return this._views;\n }\n\n public markSpanAsProcessed(span: Span): void {\n this._standardMetrics?.markSpanAsProcessed(span);\n }\n\n public recordSpan(span: ReadableSpan): void {\n this._standardMetrics?.recordSpan(span);\n this._liveMetrics?.recordSpan(span);\n this._performanceCounters?.recordSpan(span);\n }\n\n public recordLog(logRecord: SdkLogRecord): void {\n this._standardMetrics?.recordLog(logRecord);\n this._liveMetrics?.recordLog(logRecord);\n this._performanceCounters?.recordLog(logRecord);\n }\n\n /**\n * Shutdown handler\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n public async shutdown(): Promise<void> {\n this._standardMetrics?.shutdown();\n this._liveMetrics?.shutdown();\n this._performanceCounters?.shutdown();\n }\n}\n"]}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/metrics/handler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport type {\n AggregationOption,\n PeriodicExportingMetricReaderOptions,\n ViewOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport {\n AggregationType,\n InstrumentType,\n PeriodicExportingMetricReader,\n} from \"@opentelemetry/sdk-metrics\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type { InternalConfig } from \"../shared/config.js\";\nimport { StandardMetrics } from \"./standardMetrics.js\";\nimport type { ReadableSpan, Span } from \"@opentelemetry/sdk-trace-base\";\nimport { APPLICATION_INSIGHTS_NO_STANDARD_METRICS, HISTOGRAM_AGGREGATION_MAP } from \"./types.js\";\nimport { LiveMetrics } from \"./quickpulse/liveMetrics.js\";\nimport { PerformanceCounterMetrics } from \"./performanceCounters.js\";\nimport { Logger } from \"../shared/logging/index.js\";\n\ntype MetricExporterOptions = ConstructorParameters<typeof AzureMonitorMetricExporter>[0];\n\nconst DEFAULT_HISTOGRAM_AGGREGATION_ENV_VAR =\n \"OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION\";\n\nfunction resolveHistogramAggregationFromEnv(): AggregationOption | undefined {\n const envValue = process.env[DEFAULT_HISTOGRAM_AGGREGATION_ENV_VAR];\n if (!envValue) {\n return undefined;\n }\n\n const normalized = envValue.trim().toLowerCase();\n const aggregation = HISTOGRAM_AGGREGATION_MAP[normalized];\n if (aggregation) {\n return aggregation;\n }\n\n const validValues = Object.keys(HISTOGRAM_AGGREGATION_MAP)\n .map((v) => `'${v}'`)\n .join(\" and \");\n Logger.getInstance().warn(\n `${DEFAULT_HISTOGRAM_AGGREGATION_ENV_VAR} has unsupported value '${envValue}'. Supported values are ${validValues}.`,\n );\n return undefined;\n}\n\nclass AzureMonitorMetricExporterWithAggregation extends AzureMonitorMetricExporter {\n private _histogramAggregation?: AggregationOption;\n\n constructor(options: MetricExporterOptions, histogramAggregation?: AggregationOption) {\n super(options);\n this._histogramAggregation = histogramAggregation;\n }\n\n public selectAggregation(instrumentType: InstrumentType): AggregationOption {\n if (instrumentType === InstrumentType.HISTOGRAM && this._histogramAggregation) {\n return this._histogramAggregation;\n }\n\n return { type: AggregationType.DEFAULT };\n }\n}\n\n/**\n * Azure Monitor OpenTelemetry Metric Handler\n */\nexport class MetricHandler {\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _standardMetrics?: StandardMetrics;\n private _performanceCounters?: PerformanceCounterMetrics;\n private _liveMetrics?: LiveMetrics;\n private _config: InternalConfig;\n private _views: ViewOptions[];\n\n /**\n * Initializes a new instance of the MetricHandler class.\n * @param config - Distro configuration.\n * @param options - Metric Handler options.\n */\n constructor(config: InternalConfig) {\n const defaultInterval = 60000;\n this._config = config;\n // Adding Views of instrumentations will allow customer to add Metric Readers after, and get access to previously created metrics using the views shared state\n this._views = [];\n if (config.instrumentationOptions.azureSdk?.enabled) {\n this._views.push({ meterName: \"@azure/opentelemetry-instrumentation-azure-sdk\" });\n }\n if (config.instrumentationOptions.http?.enabled) {\n this._views.push({ meterName: \"@azure/opentelemetry-instrumentation-http\" });\n }\n if (config.instrumentationOptions.mongoDb?.enabled) {\n this._views.push({ meterName: \"@azure/opentelemetry-instrumentation-mongodb\" });\n }\n if (config.instrumentationOptions.mySql?.enabled) {\n this._views.push({ meterName: \"@opentelemetry/instrumentation-mysql\" });\n }\n if (config.instrumentationOptions.postgreSql?.enabled) {\n this._views.push({ meterName: \"@opentelemetry/instrumentation-pg\" });\n }\n if (\n config.instrumentationOptions.redis?.enabled ||\n config.instrumentationOptions.redis4?.enabled\n ) {\n this._views.push({ meterName: \"@opentelemetry/instrumentation-redis\" });\n }\n const histogramAggregation = resolveHistogramAggregationFromEnv();\n this._azureExporter = new AzureMonitorMetricExporterWithAggregation(\n this._config.azureMonitorExporterOptions,\n histogramAggregation,\n );\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter as any,\n exportIntervalMillis: this._config.metricExportIntervalMillis || defaultInterval,\n };\n this._metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n\n if (\n this._config.enableStandardMetrics &&\n !process.env[APPLICATION_INSIGHTS_NO_STANDARD_METRICS]\n ) {\n this._standardMetrics = new StandardMetrics(this._config);\n }\n if (this._config.enableLiveMetrics) {\n this._liveMetrics = new LiveMetrics(this._config);\n }\n if (this._config.enablePerformanceCounters) {\n this._performanceCounters = new PerformanceCounterMetrics(this._config);\n }\n }\n\n public getMetricReader(): PeriodicExportingMetricReader {\n return this._metricReader;\n }\n\n public getViews(): ViewOptions[] {\n return this._views;\n }\n\n public markSpanAsProcessed(span: Span): void {\n this._standardMetrics?.markSpanAsProcessed(span);\n }\n\n public recordSpan(span: ReadableSpan): void {\n this._standardMetrics?.recordSpan(span);\n this._liveMetrics?.recordSpan(span);\n this._performanceCounters?.recordSpan(span);\n }\n\n public recordLog(logRecord: SdkLogRecord): void {\n this._standardMetrics?.recordLog(logRecord);\n this._liveMetrics?.recordLog(logRecord);\n this._performanceCounters?.recordLog(logRecord);\n }\n\n /**\n * Shutdown handler\n */\n // eslint-disable-next-line @typescript-eslint/require-await\n public async shutdown(): Promise<void> {\n this._standardMetrics?.shutdown();\n this._liveMetrics?.shutdown();\n this._performanceCounters?.shutdown();\n }\n}\n"]}
@@ -1,7 +1,12 @@
1
+ import type { AggregationOption } from "@opentelemetry/sdk-metrics";
1
2
  /**
2
3
  * Disable Standard Metrics environment variable name.
3
4
  */
4
5
  export declare const APPLICATION_INSIGHTS_NO_STANDARD_METRICS = "APPLICATION_INSIGHTS_NO_STANDARD_METRICS";
6
+ /**
7
+ * Mapping of OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION values to aggregation options.
8
+ */
9
+ export declare const HISTOGRAM_AGGREGATION_MAP: Record<string, AggregationOption>;
5
10
  export interface StandardMetricBaseDimensions {
6
11
  metricId?: string;
7
12
  cloudRoleInstance?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AAEnG,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAwB,SAAQ,4BAA4B;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,oBAAY,6BAA6B;IACvC,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAC7B,gBAAgB,2BAA2B;IAC3C,uBAAuB,4BAA4B;IACnD,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,uBAAuB,GAC/B,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,UAAU,GACV,iBAAiB,CAAC;AAEtB,eAAO,MAAM,2BAA2B,EAAE;KAAG,GAAG,IAAI,uBAAuB,GAAG,MAAM;CAanF,CAAC;AAEF,oBAAY,iBAAiB;IAC3B,gBAAgB,sBAAsB;IACtC,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE;;GAEG;AACH,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AAEnG;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAGvE,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAwB,SAAQ,4BAA4B;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,oBAAY,6BAA6B;IACvC,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,qBAAqB,0BAA0B;IAC/C,YAAY,iBAAiB;IAC7B,gBAAgB,2BAA2B;IAC3C,uBAAuB,4BAA4B;IACnD,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,uBAAuB,GAC/B,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,UAAU,GACV,iBAAiB,CAAC;AAEtB,eAAO,MAAM,2BAA2B,EAAE;KAAG,GAAG,IAAI,uBAAuB,GAAG,MAAM;CAanF,CAAC;AAEF,oBAAY,iBAAiB;IAC3B,gBAAgB,sBAAsB;IACtC,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;CAC9B"}
@@ -1,9 +1,17 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
+ import { AggregationType } from "@opentelemetry/sdk-metrics";
3
4
  /**
4
5
  * Disable Standard Metrics environment variable name.
5
6
  */
6
7
  export const APPLICATION_INSIGHTS_NO_STANDARD_METRICS = "APPLICATION_INSIGHTS_NO_STANDARD_METRICS";
8
+ /**
9
+ * Mapping of OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION values to aggregation options.
10
+ */
11
+ export const HISTOGRAM_AGGREGATION_MAP = {
12
+ explicit_bucket_histogram: { type: AggregationType.EXPLICIT_BUCKET_HISTOGRAM },
13
+ base2_exponential_bucket_histogram: { type: AggregationType.EXPONENTIAL_HISTOGRAM },
14
+ };
7
15
  export var PerformanceCounterMetricNames;
8
16
  (function (PerformanceCounterMetricNames) {
9
17
  PerformanceCounterMetricNames["PRIVATE_BYTES"] = "Private_Bytes";
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,0CAA0C,CAAC;AAuBnG,MAAM,CAAN,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC,gEAA+B,CAAA;IAC/B,oEAAmC,CAAA;IACnC,kEAAiC,CAAA;IACjC,gFAA+C,CAAA;IAC/C,8DAA6B,CAAA;IAC7B,4EAA2C,CAAA;IAC3C,oFAAmD,CAAA;IACnD,kEAAiC,CAAA;AACnC,CAAC,EATW,6BAA6B,KAA7B,6BAA6B,QASxC;AAgBD,MAAM,CAAC,MAAM,2BAA2B,GAAiD;IACvF,iBAAiB,EAAE,oBAAoB;IACvC,aAAa,EAAE,gBAAgB;IAC/B,kBAAkB,EAAE,qBAAqB;IACzC,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,uBAAuB;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,QAAQ,EAAE,cAAc;IACxB,eAAe,EAAE,qBAAqB;CACvC,CAAC;AAEF,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,2DAAsC,CAAA;IACtC,oEAA+C,CAAA;IAC/C,0DAAqC,CAAA;IACrC,kDAA6B,CAAA;AAC/B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Disable Standard Metrics environment variable name.\n */\nexport const APPLICATION_INSIGHTS_NO_STANDARD_METRICS = \"APPLICATION_INSIGHTS_NO_STANDARD_METRICS\";\n\nexport interface StandardMetricBaseDimensions {\n metricId?: string;\n cloudRoleInstance?: string;\n cloudRoleName?: string;\n IsAutocollected?: string;\n}\n\nexport interface MetricRequestDimensions extends StandardMetricBaseDimensions {\n requestSuccess?: string;\n requestResultCode?: string;\n operationSynthetic?: string;\n}\n\nexport interface MetricDependencyDimensions extends StandardMetricBaseDimensions {\n dependencyType?: string;\n dependencyTarget?: string;\n dependencySuccess?: string;\n dependencyResultCode?: string;\n operationSynthetic?: string;\n}\n\nexport enum PerformanceCounterMetricNames {\n PRIVATE_BYTES = \"Private_Bytes\",\n AVAILABLE_BYTES = \"Available_Bytes\",\n PROCESSOR_TIME = \"Processor_Time\",\n PROCESS_TIME_STANDARD = \"Process_Time_Standard\",\n REQUEST_RATE = \"Request_Rate\",\n REQUEST_DURATION = \"Request_Execution_Time\",\n PROCESS_TIME_NORMALIZED = \"Process_Time_Normalized\",\n EXCEPTION_RATE = \"Exception_Rate\",\n}\n\nexport type MetricDimensionTypeKeys =\n | \"cloudRoleInstance\"\n | \"cloudRoleName\"\n | \"requestSuccess\"\n | \"requestResultCode\"\n | \"dependencyType\"\n | \"dependencyTarget\"\n | \"dependencySuccess\"\n | \"dependencyResultCode\"\n | \"traceSeverityLevel\"\n | \"operationSynthetic\"\n | \"metricId\"\n | \"IsAutocollected\";\n\nexport const StandardMetricPropertyNames: { [key in MetricDimensionTypeKeys]: string } = {\n cloudRoleInstance: \"cloud/roleInstance\",\n cloudRoleName: \"cloud/roleName\",\n operationSynthetic: \"operation/synthetic\",\n requestSuccess: \"Request.Success\",\n requestResultCode: \"request/resultCode\",\n dependencyType: \"Dependency.Type\",\n dependencyTarget: \"dependency/target\",\n dependencySuccess: \"Dependency.Success\",\n dependencyResultCode: \"dependency/resultCode\",\n traceSeverityLevel: \"trace/severityLevel\",\n metricId: \"_MS.MetricId\",\n IsAutocollected: \"_MS.IsAutocollected\",\n};\n\nexport enum StandardMetricIds {\n REQUEST_DURATION = \"requests/duration\",\n DEPENDENCIES_DURATION = \"dependencies/duration\",\n EXCEPTIONS_COUNT = \"exceptions/count\",\n TRACES_COUNT = \"traces/count\",\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metrics/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG,0CAA0C,CAAC;AAEnG;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAsC;IAC1E,yBAAyB,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,yBAAyB,EAAE;IAC9E,kCAAkC,EAAE,EAAE,IAAI,EAAE,eAAe,CAAC,qBAAqB,EAAE;CACpF,CAAC;AAuBF,MAAM,CAAN,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC,gEAA+B,CAAA;IAC/B,oEAAmC,CAAA;IACnC,kEAAiC,CAAA;IACjC,gFAA+C,CAAA;IAC/C,8DAA6B,CAAA;IAC7B,4EAA2C,CAAA;IAC3C,oFAAmD,CAAA;IACnD,kEAAiC,CAAA;AACnC,CAAC,EATW,6BAA6B,KAA7B,6BAA6B,QASxC;AAgBD,MAAM,CAAC,MAAM,2BAA2B,GAAiD;IACvF,iBAAiB,EAAE,oBAAoB;IACvC,aAAa,EAAE,gBAAgB;IAC/B,kBAAkB,EAAE,qBAAqB;IACzC,cAAc,EAAE,iBAAiB;IACjC,iBAAiB,EAAE,oBAAoB;IACvC,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,uBAAuB;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,QAAQ,EAAE,cAAc;IACxB,eAAe,EAAE,qBAAqB;CACvC,CAAC;AAEF,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,2DAAsC,CAAA;IACtC,oEAA+C,CAAA;IAC/C,0DAAqC,CAAA;IACrC,kDAA6B,CAAA;AAC/B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AggregationOption } from \"@opentelemetry/sdk-metrics\";\nimport { AggregationType } from \"@opentelemetry/sdk-metrics\";\n\n/**\n * Disable Standard Metrics environment variable name.\n */\nexport const APPLICATION_INSIGHTS_NO_STANDARD_METRICS = \"APPLICATION_INSIGHTS_NO_STANDARD_METRICS\";\n\n/**\n * Mapping of OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION values to aggregation options.\n */\nexport const HISTOGRAM_AGGREGATION_MAP: Record<string, AggregationOption> = {\n explicit_bucket_histogram: { type: AggregationType.EXPLICIT_BUCKET_HISTOGRAM },\n base2_exponential_bucket_histogram: { type: AggregationType.EXPONENTIAL_HISTOGRAM },\n};\n\nexport interface StandardMetricBaseDimensions {\n metricId?: string;\n cloudRoleInstance?: string;\n cloudRoleName?: string;\n IsAutocollected?: string;\n}\n\nexport interface MetricRequestDimensions extends StandardMetricBaseDimensions {\n requestSuccess?: string;\n requestResultCode?: string;\n operationSynthetic?: string;\n}\n\nexport interface MetricDependencyDimensions extends StandardMetricBaseDimensions {\n dependencyType?: string;\n dependencyTarget?: string;\n dependencySuccess?: string;\n dependencyResultCode?: string;\n operationSynthetic?: string;\n}\n\nexport enum PerformanceCounterMetricNames {\n PRIVATE_BYTES = \"Private_Bytes\",\n AVAILABLE_BYTES = \"Available_Bytes\",\n PROCESSOR_TIME = \"Processor_Time\",\n PROCESS_TIME_STANDARD = \"Process_Time_Standard\",\n REQUEST_RATE = \"Request_Rate\",\n REQUEST_DURATION = \"Request_Execution_Time\",\n PROCESS_TIME_NORMALIZED = \"Process_Time_Normalized\",\n EXCEPTION_RATE = \"Exception_Rate\",\n}\n\nexport type MetricDimensionTypeKeys =\n | \"cloudRoleInstance\"\n | \"cloudRoleName\"\n | \"requestSuccess\"\n | \"requestResultCode\"\n | \"dependencyType\"\n | \"dependencyTarget\"\n | \"dependencySuccess\"\n | \"dependencyResultCode\"\n | \"traceSeverityLevel\"\n | \"operationSynthetic\"\n | \"metricId\"\n | \"IsAutocollected\";\n\nexport const StandardMetricPropertyNames: { [key in MetricDimensionTypeKeys]: string } = {\n cloudRoleInstance: \"cloud/roleInstance\",\n cloudRoleName: \"cloud/roleName\",\n operationSynthetic: \"operation/synthetic\",\n requestSuccess: \"Request.Success\",\n requestResultCode: \"request/resultCode\",\n dependencyType: \"Dependency.Type\",\n dependencyTarget: \"dependency/target\",\n dependencySuccess: \"Dependency.Success\",\n dependencyResultCode: \"dependency/resultCode\",\n traceSeverityLevel: \"trace/severityLevel\",\n metricId: \"_MS.MetricId\",\n IsAutocollected: \"_MS.IsAutocollected\",\n};\n\nexport enum StandardMetricIds {\n REQUEST_DURATION = \"requests/duration\",\n DEPENDENCIES_DURATION = \"dependencies/duration\",\n EXCEPTIONS_COUNT = \"exceptions/count\",\n TRACES_COUNT = \"traces/count\",\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import type { Resource } from "@opentelemetry/resources";
2
2
  import type { BrowserSdkLoaderOptions, AzureMonitorOpenTelemetryOptions, InstrumentationOptions } from "../types.js";
3
+ import type { Sampler } from "@opentelemetry/sdk-trace-base";
3
4
  import type { AzureMonitorExporterOptions } from "@azure/monitor-opentelemetry-exporter";
4
5
  /**
5
6
  * Azure Monitor OpenTelemetry Client Configuration
@@ -25,6 +26,8 @@ export declare class InternalConfig implements AzureMonitorOpenTelemetryOptions
25
26
  enablePerformanceCounters?: boolean;
26
27
  /** Metric export interval in milliseconds */
27
28
  metricExportIntervalMillis: number;
29
+ /** Custom OpenTelemetry sampler (env-only) */
30
+ sampler?: Sampler;
28
31
  private _resource;
29
32
  set resource(resource: Resource);
30
33
  /**
@@ -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,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAUzF;;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;IAE1C,OAAO,CAAC,SAAS,CAA6B;IAE9C,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAmEtD,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwB3B,6BAA6B,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAmBvF"}
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;AAUzF;;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;IAE9C,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAmEtD,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwB3B,6BAA6B,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAmBvF"}
@@ -29,6 +29,8 @@ export class InternalConfig {
29
29
  enablePerformanceCounters;
30
30
  /** Metric export interval in milliseconds */
31
31
  metricExportIntervalMillis;
32
+ /** Custom OpenTelemetry sampler (env-only) */
33
+ sampler;
32
34
  _resource = emptyResource();
33
35
  set resource(resource) {
34
36
  this._resource = this._resource.merge(resource);
@@ -105,6 +107,7 @@ export class InternalConfig {
105
107
  envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;
106
108
  this.tracesPerSecond =
107
109
  envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;
110
+ this.sampler = envConfig.sampler ?? this.sampler;
108
111
  }
109
112
  _mergeJsonConfig() {
110
113
  try {
@@ -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 { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport {\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\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 = undefined;\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 }\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: [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 {\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 = undefined;\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: [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,4 +1,5 @@
1
1
  import type { AzureMonitorOpenTelemetryOptions } from "../types.js";
2
+ import { Sampler } from "@opentelemetry/sdk-trace-base";
2
3
  /**
3
4
  * Azure Monitor OpenTelemetry Client Configuration through Env variables
4
5
  * @internal
@@ -8,6 +9,8 @@ export declare class EnvConfig implements AzureMonitorOpenTelemetryOptions {
8
9
  samplingRatio?: number;
9
10
  /** The maximum number of spans to sample per second. (Default undefined)*/
10
11
  tracesPerSecond?: number;
12
+ /** Custom OpenTelemetry sampler derived from env configuration */
13
+ sampler?: Sampler;
11
14
  private static instance;
12
15
  /** Get Singleton instance */
13
16
  static getInstance(): EnvConfig;
@@ -15,5 +18,8 @@ export declare class EnvConfig implements AzureMonitorOpenTelemetryOptions {
15
18
  * Initializes a new instance of the EnvConfig class.
16
19
  */
17
20
  constructor();
21
+ private _applyMicrosoftSampler;
22
+ private _applyOtelSampler;
23
+ private _parseProbability;
18
24
  }
19
25
  //# sourceMappingURL=envConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"envConfig.d.ts","sourceRoot":"","sources":["../../../src/shared/envConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAOpE;;;GAGG;AACH,qBAAa,SAAU,YAAW,gCAAgC;IAChE,mFAAmF;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IAEnC,6BAA6B;WACf,WAAW,IAAI,SAAS;IAOtC;;OAEG;;CA2BJ"}
1
+ {"version":3,"file":"envConfig.d.ts","sourceRoot":"","sources":["../../../src/shared/envConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAIL,OAAO,EAER,MAAM,+BAA+B,CAAC;AAuBvC;;;GAGG;AACH,qBAAa,SAAU,YAAW,gCAAgC;IAChE,mFAAmF;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IAChC,kEAAkE;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IAEnC,6BAA6B;WACf,WAAW,IAAI,SAAS;IAOtC;;OAEG;;IAiBH,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,iBAAiB;CAsB1B"}