@azure/monitor-opentelemetry 1.16.0 → 1.17.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.
Files changed (231) hide show
  1. package/README.md +2 -1
  2. package/dist/commonjs/generated/api/index.d.ts +4 -0
  3. package/dist/commonjs/generated/api/index.d.ts.map +1 -0
  4. package/dist/commonjs/generated/api/index.js +11 -0
  5. package/dist/commonjs/generated/api/index.js.map +1 -0
  6. package/dist/commonjs/generated/api/operations.d.ts +13 -0
  7. package/dist/commonjs/generated/api/operations.d.ts.map +1 -0
  8. package/dist/commonjs/generated/api/operations.js +107 -0
  9. package/dist/commonjs/generated/api/operations.js.map +1 -0
  10. package/dist/commonjs/generated/api/options.d.ts +31 -0
  11. package/dist/commonjs/generated/api/options.d.ts.map +1 -0
  12. package/dist/commonjs/generated/api/options.js +5 -0
  13. package/dist/commonjs/generated/api/options.js.map +1 -0
  14. package/dist/commonjs/generated/api/quickpulseContext.d.ts +17 -0
  15. package/dist/commonjs/generated/api/quickpulseContext.d.ts.map +1 -0
  16. package/dist/commonjs/generated/api/quickpulseContext.js +26 -0
  17. package/dist/commonjs/generated/api/quickpulseContext.js.map +1 -0
  18. package/dist/commonjs/generated/index.d.ts +2 -1
  19. package/dist/commonjs/generated/index.d.ts.map +1 -1
  20. package/dist/commonjs/generated/index.js +5 -10
  21. package/dist/commonjs/generated/index.js.map +1 -1
  22. package/dist/commonjs/generated/logger.d.ts +2 -0
  23. package/dist/commonjs/generated/logger.d.ts.map +1 -0
  24. package/dist/commonjs/generated/logger.js +8 -0
  25. package/dist/commonjs/generated/logger.js.map +1 -0
  26. package/dist/commonjs/generated/models/index.d.ts +1 -422
  27. package/dist/commonjs/generated/models/index.d.ts.map +1 -1
  28. package/dist/commonjs/generated/models/index.js +5 -104
  29. package/dist/commonjs/generated/models/index.js.map +1 -1
  30. package/dist/commonjs/generated/models/models.d.ts +265 -0
  31. package/dist/commonjs/generated/models/models.d.ts.map +1 -0
  32. package/dist/commonjs/generated/models/models.js +393 -0
  33. package/dist/commonjs/generated/models/models.js.map +1 -0
  34. package/dist/commonjs/generated/quickpulseClient.d.ts +16 -28
  35. package/dist/commonjs/generated/quickpulseClient.d.ts.map +1 -1
  36. package/dist/commonjs/generated/quickpulseClient.js +24 -139
  37. package/dist/commonjs/generated/quickpulseClient.js.map +1 -1
  38. package/dist/commonjs/generated/static-helpers/urlTemplate.d.ts +5 -0
  39. package/dist/commonjs/generated/static-helpers/urlTemplate.d.ts.map +1 -0
  40. package/dist/commonjs/generated/static-helpers/urlTemplate.js +203 -0
  41. package/dist/commonjs/generated/static-helpers/urlTemplate.js.map +1 -0
  42. package/dist/commonjs/index.d.ts +2 -2
  43. package/dist/commonjs/index.d.ts.map +1 -1
  44. package/dist/commonjs/index.js +13 -0
  45. package/dist/commonjs/index.js.map +1 -1
  46. package/dist/commonjs/logs/logRecordProcessor.d.ts +3 -1
  47. package/dist/commonjs/logs/logRecordProcessor.d.ts.map +1 -1
  48. package/dist/commonjs/logs/logRecordProcessor.js +32 -1
  49. package/dist/commonjs/logs/logRecordProcessor.js.map +1 -1
  50. package/dist/commonjs/metrics/performanceCounters.d.ts.map +1 -1
  51. package/dist/commonjs/metrics/performanceCounters.js +4 -2
  52. package/dist/commonjs/metrics/performanceCounters.js.map +1 -1
  53. package/dist/commonjs/metrics/quickpulse/export/exporter.d.ts.map +1 -1
  54. package/dist/commonjs/metrics/quickpulse/export/exporter.js.map +1 -1
  55. package/dist/commonjs/metrics/quickpulse/export/sender.d.ts +22 -5
  56. package/dist/commonjs/metrics/quickpulse/export/sender.d.ts.map +1 -1
  57. package/dist/commonjs/metrics/quickpulse/export/sender.js +59 -18
  58. package/dist/commonjs/metrics/quickpulse/export/sender.js.map +1 -1
  59. package/dist/commonjs/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
  60. package/dist/commonjs/metrics/quickpulse/filtering/filter.js +12 -13
  61. package/dist/commonjs/metrics/quickpulse/filtering/filter.js.map +1 -1
  62. package/dist/commonjs/metrics/quickpulse/filtering/projection.d.ts.map +1 -1
  63. package/dist/commonjs/metrics/quickpulse/filtering/projection.js +14 -15
  64. package/dist/commonjs/metrics/quickpulse/filtering/projection.js.map +1 -1
  65. package/dist/commonjs/metrics/quickpulse/filtering/validator.d.ts.map +1 -1
  66. package/dist/commonjs/metrics/quickpulse/filtering/validator.js +37 -20
  67. package/dist/commonjs/metrics/quickpulse/filtering/validator.js.map +1 -1
  68. package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
  69. package/dist/commonjs/metrics/quickpulse/liveMetrics.js +20 -24
  70. package/dist/commonjs/metrics/quickpulse/liveMetrics.js.map +1 -1
  71. package/dist/commonjs/metrics/quickpulse/types.d.ts +4 -3
  72. package/dist/commonjs/metrics/quickpulse/types.d.ts.map +1 -1
  73. package/dist/commonjs/metrics/quickpulse/types.js.map +1 -1
  74. package/dist/commonjs/metrics/quickpulse/utils.d.ts.map +1 -1
  75. package/dist/commonjs/metrics/quickpulse/utils.js +9 -10
  76. package/dist/commonjs/metrics/quickpulse/utils.js.map +1 -1
  77. package/dist/commonjs/metrics/standardMetrics.d.ts.map +1 -1
  78. package/dist/commonjs/metrics/standardMetrics.js +2 -1
  79. package/dist/commonjs/metrics/standardMetrics.js.map +1 -1
  80. package/dist/commonjs/metrics/utils.d.ts +7 -0
  81. package/dist/commonjs/metrics/utils.d.ts.map +1 -1
  82. package/dist/commonjs/metrics/utils.js +23 -0
  83. package/dist/commonjs/metrics/utils.js.map +1 -1
  84. package/dist/commonjs/shared/config.d.ts.map +1 -1
  85. package/dist/commonjs/shared/config.js +1 -1
  86. package/dist/commonjs/shared/config.js.map +1 -1
  87. package/dist/commonjs/shared/envConfig.d.ts +1 -1
  88. package/dist/commonjs/shared/envConfig.d.ts.map +1 -1
  89. package/dist/commonjs/shared/envConfig.js.map +1 -1
  90. package/dist/commonjs/shared/module.d.ts +2 -1
  91. package/dist/commonjs/shared/module.d.ts.map +1 -0
  92. package/dist/commonjs/shared/module.js +2 -1
  93. package/dist/commonjs/shared/module.js.map +1 -0
  94. package/dist/commonjs/traces/spanProcessor.d.ts +3 -1
  95. package/dist/commonjs/traces/spanProcessor.d.ts.map +1 -1
  96. package/dist/commonjs/traces/spanProcessor.js +64 -1
  97. package/dist/commonjs/traces/spanProcessor.js.map +1 -1
  98. package/dist/commonjs/tsdoc-metadata.json +1 -1
  99. package/dist/commonjs/types.d.ts +5 -3
  100. package/dist/commonjs/types.d.ts.map +1 -1
  101. package/dist/commonjs/types.js +3 -1
  102. package/dist/commonjs/types.js.map +1 -1
  103. package/dist/commonjs/utils/common.d.ts.map +1 -1
  104. package/dist/commonjs/utils/common.js +5 -0
  105. package/dist/commonjs/utils/common.js.map +1 -1
  106. package/dist/commonjs/utils/genaiAttributes.d.ts +43 -0
  107. package/dist/commonjs/utils/genaiAttributes.d.ts.map +1 -0
  108. package/dist/commonjs/utils/genaiAttributes.js +60 -0
  109. package/dist/commonjs/utils/genaiAttributes.js.map +1 -0
  110. package/dist/esm/generated/api/index.d.ts +4 -0
  111. package/dist/esm/generated/api/index.d.ts.map +1 -0
  112. package/dist/esm/generated/api/index.js +5 -0
  113. package/dist/esm/generated/api/index.js.map +1 -0
  114. package/dist/esm/generated/api/operations.d.ts +13 -0
  115. package/dist/esm/generated/api/operations.d.ts.map +1 -0
  116. package/dist/esm/generated/api/operations.js +99 -0
  117. package/dist/esm/generated/api/operations.js.map +1 -0
  118. package/dist/esm/generated/api/options.d.ts +31 -0
  119. package/dist/esm/generated/api/options.d.ts.map +1 -0
  120. package/dist/esm/generated/api/options.js +4 -0
  121. package/dist/esm/generated/api/options.js.map +1 -0
  122. package/dist/esm/generated/api/quickpulseContext.d.ts +17 -0
  123. package/dist/esm/generated/api/quickpulseContext.d.ts.map +1 -0
  124. package/dist/esm/generated/api/quickpulseContext.js +23 -0
  125. package/dist/esm/generated/api/quickpulseContext.js.map +1 -0
  126. package/dist/esm/generated/index.d.ts +2 -1
  127. package/dist/esm/generated/index.d.ts.map +1 -1
  128. package/dist/esm/generated/index.js +3 -8
  129. package/dist/esm/generated/index.js.map +1 -1
  130. package/dist/esm/generated/logger.d.ts +2 -0
  131. package/dist/esm/generated/logger.d.ts.map +1 -0
  132. package/dist/esm/generated/logger.js +5 -0
  133. package/dist/esm/generated/logger.js.map +1 -0
  134. package/dist/esm/generated/models/index.d.ts +1 -422
  135. package/dist/esm/generated/models/index.d.ts.map +1 -1
  136. package/dist/esm/generated/models/index.js +3 -103
  137. package/dist/esm/generated/models/index.js.map +1 -1
  138. package/dist/esm/generated/models/models.d.ts +265 -0
  139. package/dist/esm/generated/models/models.d.ts.map +1 -0
  140. package/dist/esm/generated/models/models.js +347 -0
  141. package/dist/esm/generated/models/models.js.map +1 -0
  142. package/dist/esm/generated/quickpulseClient.d.ts +16 -28
  143. package/dist/esm/generated/quickpulseClient.d.ts.map +1 -1
  144. package/dist/esm/generated/quickpulseClient.js +24 -138
  145. package/dist/esm/generated/quickpulseClient.js.map +1 -1
  146. package/dist/esm/generated/static-helpers/urlTemplate.d.ts +5 -0
  147. package/dist/esm/generated/static-helpers/urlTemplate.d.ts.map +1 -0
  148. package/dist/esm/generated/static-helpers/urlTemplate.js +200 -0
  149. package/dist/esm/generated/static-helpers/urlTemplate.js.map +1 -0
  150. package/dist/esm/index.d.ts +2 -2
  151. package/dist/esm/index.d.ts.map +1 -1
  152. package/dist/esm/index.js +13 -0
  153. package/dist/esm/index.js.map +1 -1
  154. package/dist/esm/logs/logRecordProcessor.d.ts +3 -1
  155. package/dist/esm/logs/logRecordProcessor.d.ts.map +1 -1
  156. package/dist/esm/logs/logRecordProcessor.js +32 -1
  157. package/dist/esm/logs/logRecordProcessor.js.map +1 -1
  158. package/dist/esm/metrics/performanceCounters.d.ts.map +1 -1
  159. package/dist/esm/metrics/performanceCounters.js +4 -2
  160. package/dist/esm/metrics/performanceCounters.js.map +1 -1
  161. package/dist/esm/metrics/quickpulse/export/exporter.d.ts.map +1 -1
  162. package/dist/esm/metrics/quickpulse/export/exporter.js.map +1 -1
  163. package/dist/esm/metrics/quickpulse/export/sender.d.ts +22 -5
  164. package/dist/esm/metrics/quickpulse/export/sender.d.ts.map +1 -1
  165. package/dist/esm/metrics/quickpulse/export/sender.js +59 -18
  166. package/dist/esm/metrics/quickpulse/export/sender.js.map +1 -1
  167. package/dist/esm/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
  168. package/dist/esm/metrics/quickpulse/filtering/filter.js +12 -13
  169. package/dist/esm/metrics/quickpulse/filtering/filter.js.map +1 -1
  170. package/dist/esm/metrics/quickpulse/filtering/projection.d.ts.map +1 -1
  171. package/dist/esm/metrics/quickpulse/filtering/projection.js +14 -15
  172. package/dist/esm/metrics/quickpulse/filtering/projection.js.map +1 -1
  173. package/dist/esm/metrics/quickpulse/filtering/validator.d.ts.map +1 -1
  174. package/dist/esm/metrics/quickpulse/filtering/validator.js +37 -20
  175. package/dist/esm/metrics/quickpulse/filtering/validator.js.map +1 -1
  176. package/dist/esm/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
  177. package/dist/esm/metrics/quickpulse/liveMetrics.js +20 -24
  178. package/dist/esm/metrics/quickpulse/liveMetrics.js.map +1 -1
  179. package/dist/esm/metrics/quickpulse/types.d.ts +4 -3
  180. package/dist/esm/metrics/quickpulse/types.d.ts.map +1 -1
  181. package/dist/esm/metrics/quickpulse/types.js.map +1 -1
  182. package/dist/esm/metrics/quickpulse/utils.d.ts.map +1 -1
  183. package/dist/esm/metrics/quickpulse/utils.js +6 -7
  184. package/dist/esm/metrics/quickpulse/utils.js.map +1 -1
  185. package/dist/esm/metrics/standardMetrics.d.ts.map +1 -1
  186. package/dist/esm/metrics/standardMetrics.js +2 -1
  187. package/dist/esm/metrics/standardMetrics.js.map +1 -1
  188. package/dist/esm/metrics/utils.d.ts +7 -0
  189. package/dist/esm/metrics/utils.d.ts.map +1 -1
  190. package/dist/esm/metrics/utils.js +22 -0
  191. package/dist/esm/metrics/utils.js.map +1 -1
  192. package/dist/esm/shared/config.d.ts.map +1 -1
  193. package/dist/esm/shared/config.js +2 -2
  194. package/dist/esm/shared/config.js.map +1 -1
  195. package/dist/esm/shared/envConfig.d.ts +1 -1
  196. package/dist/esm/shared/envConfig.d.ts.map +1 -1
  197. package/dist/esm/shared/envConfig.js.map +1 -1
  198. package/dist/esm/traces/spanProcessor.d.ts +3 -1
  199. package/dist/esm/traces/spanProcessor.d.ts.map +1 -1
  200. package/dist/esm/traces/spanProcessor.js +64 -1
  201. package/dist/esm/traces/spanProcessor.js.map +1 -1
  202. package/dist/esm/types.d.ts +5 -3
  203. package/dist/esm/types.d.ts.map +1 -1
  204. package/dist/esm/types.js +3 -1
  205. package/dist/esm/types.js.map +1 -1
  206. package/dist/esm/utils/common.d.ts.map +1 -1
  207. package/dist/esm/utils/common.js +5 -0
  208. package/dist/esm/utils/common.js.map +1 -1
  209. package/dist/esm/utils/genaiAttributes.d.ts +43 -0
  210. package/dist/esm/utils/genaiAttributes.d.ts.map +1 -0
  211. package/dist/esm/utils/genaiAttributes.js +57 -0
  212. package/dist/esm/utils/genaiAttributes.js.map +1 -0
  213. package/package.json +23 -27
  214. package/dist/commonjs/generated/models/mappers.d.ts +0 -31
  215. package/dist/commonjs/generated/models/mappers.d.ts.map +0 -1
  216. package/dist/commonjs/generated/models/mappers.js +0 -791
  217. package/dist/commonjs/generated/models/mappers.js.map +0 -1
  218. package/dist/commonjs/generated/models/parameters.d.ts +0 -16
  219. package/dist/commonjs/generated/models/parameters.d.ts.map +0 -1
  220. package/dist/commonjs/generated/models/parameters.js +0 -147
  221. package/dist/commonjs/generated/models/parameters.js.map +0 -1
  222. package/dist/commonjs/shared/module-cjs.cjs.map +0 -1
  223. package/dist/commonjs/shared/module-cjs.d.cts.map +0 -1
  224. package/dist/esm/generated/models/mappers.d.ts +0 -31
  225. package/dist/esm/generated/models/mappers.d.ts.map +0 -1
  226. package/dist/esm/generated/models/mappers.js +0 -788
  227. package/dist/esm/generated/models/mappers.js.map +0 -1
  228. package/dist/esm/generated/models/parameters.d.ts +0 -16
  229. package/dist/esm/generated/models/parameters.d.ts.map +0 -1
  230. package/dist/esm/generated/models/parameters.js +0 -144
  231. package/dist/esm/generated/models/parameters.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type {\n DocumentIngress,\n Exception,\n KeyValuePairString,\n MetricPoint,\n MonitoringDataPoint,\n RemoteDependency,\n Request,\n Trace,\n CollectionConfigurationError,\n} from \"../../generated/index.js\";\nimport { KnownDocumentType } from \"../../generated/index.js\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMRESATTRS_TELEMETRY_SDK_VERSION,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_RPC_SYSTEM,\n DBSYSTEMVALUES_MONGODB,\n DBSYSTEMVALUES_MYSQL,\n DBSYSTEMVALUES_POSTGRESQL,\n DBSYSTEMVALUES_REDIS,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_STATEMENT,\n ATTR_CLIENT_ADDRESS,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_HTTP_HOST,\n ATTR_SERVER_ADDRESS,\n SEMATTRS_HTTP_TARGET,\n ATTR_URL_QUERY,\n ATTR_URL_PATH,\n SEMATTRS_HTTP_SCHEME,\n ATTR_URL_SCHEME,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n SEMATTRS_HTTP_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_URL,\n ATTR_NETWORK_PEER_ADDRESS,\n SEMATTRS_NET_PEER_IP,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_USER_AGENT,\n ATTR_SERVER_PORT,\n ATTR_CLIENT_PORT,\n SEMATTRS_NET_HOST_PORT,\n} from \"@opentelemetry/semantic-conventions\";\nimport { SDK_INFO, hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport type { Histogram, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { DataPointType } from \"@opentelemetry/sdk-metrics\";\nimport {\n APPLICATION_INSIGHTS_SHIM_VERSION,\n AZURE_MONITOR_AUTO_ATTACH,\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AZURE_MONITOR_PREFIX,\n AttachTypePrefix,\n} from \"../../types.js\";\nimport type {\n RequestData,\n DependencyData,\n ExceptionData,\n TraceData,\n TelemetryData,\n} from \"./types.js\";\nimport {\n QuickPulseMetricNames,\n QuickPulseOpenTelemetryMetricNames,\n DependencyTypes,\n legacySemanticValues,\n httpSemanticValues,\n} from \"./types.js\";\nimport { getOsPrefix } from \"../../utils/common.js\";\nimport { getResourceProvider } from \"../../utils/common.js\";\nimport type { LogAttributes } from \"@opentelemetry/api-logs\";\nimport { getDependencyTarget, isSqlDB, isExceptionTelemetry } from \"../utils.js\";\nimport { Logger } from \"../../shared/logging/index.js\";\n\n/** Get the internal SDK version */\nexport function getSdkVersion(): string {\n const { nodeVersion } = process.versions;\n const opentelemetryVersion = SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_VERSION];\n const version = getSdkVersionType();\n const internalSdkVersion = `${process.env[AZURE_MONITOR_PREFIX] ?? \"\"}node${nodeVersion}:otel${opentelemetryVersion}:${version}`;\n return internalSdkVersion;\n}\n\n/** Get the internal SDK version type */\nexport function getSdkVersionType(): string {\n if (process.env[APPLICATION_INSIGHTS_SHIM_VERSION]) {\n return `sha${process.env[APPLICATION_INSIGHTS_SHIM_VERSION]}`;\n } else {\n return `dst${AZURE_MONITOR_OPENTELEMETRY_VERSION}`;\n }\n}\n\n// eslint-disable-next-line tsdoc/syntax\n/** Set the version prefix to a string in the format \"{ResourceProvider}{OS}m_ */\nexport function setSdkPrefix(): void {\n if (!process.env[AZURE_MONITOR_PREFIX]) {\n const prefixAttachType: string =\n process.env[AZURE_MONITOR_AUTO_ATTACH] === \"true\"\n ? AttachTypePrefix.INTEGRATED_AUTO\n : AttachTypePrefix.MANUAL;\n process.env[AZURE_MONITOR_PREFIX] =\n `${getResourceProvider()}${getOsPrefix()}${prefixAttachType}_`;\n }\n}\n\nexport function resourceMetricsToQuickpulseDataPoint(\n metrics: ResourceMetrics,\n baseMonitoringDataPoint: MonitoringDataPoint,\n documents: DocumentIngress[],\n errors: CollectionConfigurationError[],\n derivedMetricValues: Map<string, number>,\n): MonitoringDataPoint[] {\n const metricPoints: MetricPoint[] = [];\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: \"\",\n value: 0,\n };\n\n // Update name to expected value in Quickpulse, needed because those names are invalid in OTel\n switch (metric.descriptor.name) {\n case QuickPulseOpenTelemetryMetricNames.PHYSICAL_BYTES:\n metricPoint.name = QuickPulseMetricNames.PHYSICAL_BYTES;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE:\n metricPoint.name = QuickPulseMetricNames.EXCEPTION_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME_NORMALIZED:\n metricPoint.name = QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION:\n metricPoint.name = QuickPulseMetricNames.REQUEST_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_RATE;\n break;\n default:\n metricPoint.name = metric.descriptor.name;\n }\n\n if (\n metric.dataPointType === DataPointType.SUM ||\n metric.dataPointType === DataPointType.GAUGE\n ) {\n metricPoint.value = dataPoint.value as number;\n } else {\n metricPoint.value = (dataPoint.value as Histogram).sum || 0;\n }\n metricPoints.push(metricPoint);\n\n // TODO: remove the metric points with the old metric names after\n // UI side has done their changes to support the new names.\n if (\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES ||\n metricPoint.name === QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED\n ) {\n const oldMetricPoint: MetricPoint = {\n weight: 1,\n name:\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES\n ? QuickPulseMetricNames.COMMITTED_BYTES\n : QuickPulseMetricNames.PROCESSOR_TIME,\n value: dataPoint.value as number,\n };\n metricPoints.push(oldMetricPoint);\n }\n });\n });\n });\n\n derivedMetricValues.forEach((value, id) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: id,\n value: value,\n };\n metricPoints.push(metricPoint);\n });\n\n const quickpulseDataPoint: MonitoringDataPoint = {\n ...baseMonitoringDataPoint,\n timestamp: new Date(),\n metrics: metricPoints,\n documents: documents,\n collectionConfigurationErrors: errors,\n };\n return [quickpulseDataPoint];\n}\n\nfunction getIso8601Duration(milliseconds: number): string {\n const seconds = milliseconds / 1000;\n return `PT${seconds}S`;\n}\n\nexport function getSpanData(span: ReadableSpan): RequestData | DependencyData {\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n // request\n return getRequestData(span);\n } else {\n // dependency\n return getDependencyData(span);\n }\n}\n\nexport function getSpanExceptionColumns(\n eventAttributes: Attributes,\n spanAttributes: Attributes,\n): ExceptionData {\n const exceptionData: ExceptionData = {\n Message: eventAttributes[SEMATTRS_EXCEPTION_MESSAGE] as string,\n StackTrace: eventAttributes[SEMATTRS_EXCEPTION_STACKTRACE] as string,\n CustomDimensions: createCustomDimsFromAttributes(spanAttributes),\n };\n return exceptionData;\n}\n\n// A slightly modified version of createRequestData from spanUtils in exporter\nfunction getRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n Url: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n ResponseCode: 0,\n Success: false,\n Name: span.name || \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n const httpMethod = getHttpMethod(span.attributes);\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (httpMethod) {\n requestData.Url = getUrl(span.attributes);\n if (URL.canParse(requestData.Url)) {\n const urlObj = new URL(requestData.Url);\n requestData.Name = `${httpMethod} ${urlObj.pathname}`;\n } else {\n Logger.getInstance().info(\"Request data sent to live metrics has no valid URL field.\");\n }\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n requestData.ResponseCode = Number(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.ResponseCode = Number(grpcStatusCode);\n }\n requestData.Success = span.status.code !== SpanStatusCode.ERROR && requestData.ResponseCode < 400;\n return requestData;\n}\n\n// A slightly modified version of createDependencyData from spanUtils in exporter\nfunction getDependencyData(span: ReadableSpan): DependencyData {\n const dependencyData: DependencyData = {\n Target: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n Success: span.status.code !== SpanStatusCode.ERROR,\n Name: span.name,\n ResultCode: 0,\n Type: \"\",\n Data: \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n if (span.kind === SpanKind.PRODUCER) {\n dependencyData.Type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanContext?.spanId) {\n dependencyData.Type = DependencyTypes.InProc;\n }\n\n const httpMethod = getHttpMethod(span.attributes);\n const dbSystem = span.attributes[SEMATTRS_DB_SYSTEM];\n const rpcSystem = span.attributes[SEMATTRS_RPC_SYSTEM];\n // HTTP Dependency\n if (httpMethod) {\n const httpUrl = getHttpUrl(span.attributes);\n if (httpUrl) {\n if (URL.canParse(String(httpUrl))) {\n const dependencyUrl = new URL(String(httpUrl));\n dependencyData.Name = `${httpMethod} ${dependencyUrl.pathname}`;\n } else {\n Logger.getInstance().info(\"Dependency data sent to live metrics has no valid URL field.\");\n }\n }\n dependencyData.Type = DependencyTypes.Http;\n dependencyData.Data = getUrl(span.attributes);\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n dependencyData.ResultCode = Number(httpStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n try {\n // Remove default port\n const portRegex = new RegExp(/(https?)(:\\/\\/.*)(:\\d+)(\\S*)/);\n const res = portRegex.exec(target);\n if (res !== null) {\n const protocol = res[1];\n const port = res[3];\n if (\n (protocol === \"https\" && port === \":443\") ||\n (protocol === \"http\" && port === \":80\")\n ) {\n // Drop port\n target = res[1] + res[2] + res[4];\n }\n }\n } catch (ex: any) {\n /* no-op */\n }\n dependencyData.Target = `${target}`;\n }\n }\n // DB Dependency\n else if (dbSystem) {\n // TODO: Remove special logic when Azure UX supports OpenTelemetry dbSystem\n if (String(dbSystem) === DBSYSTEMVALUES_MYSQL) {\n dependencyData.Type = DependencyTypes.mysql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_POSTGRESQL) {\n dependencyData.Type = DependencyTypes.postgresql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_MONGODB) {\n dependencyData.Type = DependencyTypes.mongodb;\n } else if (String(dbSystem) === DBSYSTEMVALUES_REDIS) {\n dependencyData.Type = DependencyTypes.redis;\n } else if (isSqlDB(String(dbSystem))) {\n dependencyData.Type = DependencyTypes.Sql;\n } else {\n dependencyData.Type = String(dbSystem);\n }\n const dbStatement = span.attributes[SEMATTRS_DB_STATEMENT];\n const dbOperation = span.attributes[SEMATTRS_DB_OPERATION];\n if (dbStatement) {\n dependencyData.Data = String(dbStatement);\n } else if (dbOperation) {\n dependencyData.Data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SEMATTRS_DB_NAME];\n if (target) {\n dependencyData.Target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n dependencyData.Target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n\n // grpc Dependency\n else if (rpcSystem) {\n if (rpcSystem === DependencyTypes.Wcf) {\n dependencyData.Type = DependencyTypes.Wcf;\n } else {\n dependencyData.Type = DependencyTypes.Grpc;\n }\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n dependencyData.ResultCode = Number(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n dependencyData.Target = `${target}`;\n } else if (rpcSystem) {\n dependencyData.Target = String(rpcSystem);\n }\n }\n return dependencyData;\n}\n\nexport function getLogData(log: SdkLogRecord): ExceptionData | TraceData {\n const customDims = createCustomDimsFromAttributes(log.attributes);\n if (isExceptionTelemetry(log)) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.attributes[SEMATTRS_EXCEPTION_MESSAGE]),\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n StackTrace: String(log.attributes[SEMATTRS_EXCEPTION_STACKTRACE]),\n CustomDimensions: customDims,\n };\n } else {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.body),\n CustomDimensions: customDims,\n };\n }\n}\n\nexport function getLogDocument(data: TelemetryData, exceptionType?: string): Trace | Exception {\n if (isExceptionData(data) && exceptionType) {\n return {\n documentType: KnownDocumentType.Exception,\n exceptionMessage: data.Message,\n exceptionType: exceptionType,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n } else {\n // trace\n return {\n documentType: KnownDocumentType.Trace,\n message: (data as TraceData).Message,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n }\n}\n\nexport function isRequestData(data: TelemetryData): data is RequestData {\n return (data as RequestData).Url !== undefined;\n}\n\nexport function isDependencyData(data: TelemetryData): data is DependencyData {\n return (data as DependencyData).Target !== undefined;\n}\n\nexport function isTraceData(data: TelemetryData): data is TraceData {\n return (data as TraceData).Message !== undefined && (data as any).StackTrace === undefined;\n}\n\nexport function isExceptionData(data: TelemetryData): data is ExceptionData {\n return (data as ExceptionData).StackTrace !== undefined;\n}\n\nexport function getSpanDocument(telemetryData: TelemetryData): Request | RemoteDependency {\n let document: Request | RemoteDependency = {\n documentType: KnownDocumentType.Request,\n };\n\n if (isRequestData(telemetryData)) {\n document = {\n documentType: KnownDocumentType.Request,\n name: telemetryData.Name,\n url: telemetryData.Url,\n responseCode: String(telemetryData.ResponseCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n } else if (isDependencyData(telemetryData)) {\n document = {\n documentType: KnownDocumentType.RemoteDependency,\n name: telemetryData.Name,\n commandName: telemetryData.Data,\n resultCode: String(telemetryData.ResultCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n }\n\n document.properties = mapToKeyValuePairList(telemetryData.CustomDimensions);\n return document;\n}\n\nfunction createCustomDimsFromAttributes(\n attributes?: Attributes | LogAttributes,\n): Map<string, string> {\n const customDims = new Map<string, string>();\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n if (\n !(\n key.startsWith(\"_MS.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any)\n )\n ) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n customDims.set(key, String(attributes[key]));\n }\n }\n }\n return customDims;\n}\n\nfunction mapToKeyValuePairList(map: Map<string, string>): KeyValuePairString[] {\n const list: KeyValuePairString[] = [];\n map.forEach((value, key) => {\n list.push({ key, value });\n });\n return list;\n}\n\nfunction getUrl(attributes: Attributes): string {\n if (!attributes) {\n return \"\";\n }\n const httpMethod = getHttpMethod(attributes);\n if (httpMethod) {\n const httpUrl = getHttpUrl(attributes);\n if (httpUrl) {\n return String(httpUrl);\n } else {\n const httpScheme = getHttpScheme(attributes);\n const httpTarget = getHttpTarget(attributes);\n if (httpScheme && httpTarget) {\n const httpHost = getHttpHost(attributes);\n if (httpHost) {\n return `${httpScheme}://${httpHost}${httpTarget}`;\n } else {\n const netPeerPort = getNetPeerPort(attributes);\n if (netPeerPort) {\n const netPeerName = getNetPeerName(attributes);\n if (netPeerName) {\n return `${httpScheme}://${netPeerName}:${netPeerPort}${httpTarget}`;\n } else {\n const netPeerIp = getPeerIp(attributes);\n if (netPeerIp) {\n return `${httpScheme}://${netPeerIp}:${netPeerPort}${httpTarget}`;\n }\n }\n }\n }\n }\n }\n }\n return \"\";\n}\n\n/**\n * UTC time the request was made. Expressed as the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight on January 1, 0001. This is used for clock skew calculations, so the value can never be stale (cached).\n *\n * @example\n * 8/5/2020 10:15:00 PM UTC =\\> 637322625000000000\n * 8/5/2020 10:15:01 PM UTC =\\> 637322625010000000\n */\nexport function getTransmissionTime(): number {\n return (Date.now() + 62135596800000) * 10000;\n}\n\nexport function getMsFromFilterTimestampString(timestamp: string): number {\n // The service side will return a timestamp in the following format:\n // [days].[hours]:[minutes]:[seconds]\n // the seconds may be a whole number or something like 7.89. 7.89 seconds translates to 7890 ms.\n // writing this method because date.getmilliseconds() returns incorrect result on large timestamps.\n // examples: \"14.6:56:7.89\" = 1234567890 ms, \"0.0:0:0.2\" = 200 ms\n const parts = timestamp.split(\":\");\n if (parts.length !== 3) {\n return NaN;\n }\n const seconds = parseFloat(parts[2]);\n const minutes = parseFloat(parts[1]);\n const firstPart = parts[0].split(\".\");\n if (firstPart.length !== 2) {\n return NaN;\n }\n const hours = parseFloat(firstPart[1]);\n const days = parseFloat(firstPart[0]);\n\n if (isNaN(days) || isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {\n return NaN;\n }\n\n return seconds * 1000 + minutes * 60000 + hours * 3600000 + days * 86400000;\n}\n\nexport function getPeerIp(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_NETWORK_PEER_ADDRESS] || attributes[SEMATTRS_NET_PEER_IP]);\n }\n return;\n}\n\nexport function getUserAgent(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_USER_AGENT_ORIGINAL] || attributes[SEMATTRS_HTTP_USER_AGENT]);\n }\n return;\n}\n\nexport function getHttpUrl(attributes: Attributes): string {\n // Stable sem conv only supports populating url from `url.full`\n if (attributes) {\n return String(attributes[ATTR_URL_FULL] || attributes[SEMATTRS_HTTP_URL] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpMethod(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD]);\n }\n return;\n}\n\nexport function getHttpStatusCode(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE],\n );\n }\n return;\n}\n\nexport function getHttpScheme(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_URL_SCHEME] || attributes[SEMATTRS_HTTP_SCHEME]);\n }\n return;\n}\n\nexport function getHttpTarget(attributes: Attributes): string {\n if (attributes) {\n if (attributes[ATTR_URL_PATH]) {\n return String(attributes[ATTR_URL_PATH]);\n }\n if (attributes[ATTR_URL_QUERY]) {\n return String(attributes[ATTR_URL_QUERY]);\n }\n return String(attributes[SEMATTRS_HTTP_TARGET] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpHost(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_SERVER_ADDRESS] || attributes[SEMATTRS_HTTP_HOST]);\n }\n return;\n}\n\nexport function getNetPeerName(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_NET_PEER_NAME] || \"\");\n }\n return \"\";\n}\n\nexport function getNetHostPort(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_SERVER_PORT] || attributes[SEMATTRS_NET_HOST_PORT] || \"\");\n }\n return \"\";\n}\n\nexport function getNetPeerPort(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_CLIENT_PORT] ||\n attributes[ATTR_SERVER_PORT] ||\n attributes[SEMATTRS_NET_PEER_PORT],\n );\n }\n return;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */\n\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport type {\n DocumentIngress,\n Exception,\n KeyValuePairStringString,\n MetricPoint,\n MonitoringDataPoint,\n RemoteDependency,\n Request,\n Trace,\n CollectionConfigurationError,\n} from \"../../generated/index.js\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport {\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_NET_PEER_PORT,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMRESATTRS_TELEMETRY_SDK_VERSION,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_RPC_SYSTEM,\n DBSYSTEMVALUES_MONGODB,\n DBSYSTEMVALUES_MYSQL,\n DBSYSTEMVALUES_POSTGRESQL,\n DBSYSTEMVALUES_REDIS,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_OPERATION,\n SEMATTRS_DB_STATEMENT,\n ATTR_CLIENT_ADDRESS,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_HTTP_HOST,\n ATTR_SERVER_ADDRESS,\n SEMATTRS_HTTP_TARGET,\n ATTR_URL_QUERY,\n ATTR_URL_PATH,\n SEMATTRS_HTTP_SCHEME,\n ATTR_URL_SCHEME,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_STATUS_CODE,\n ATTR_HTTP_REQUEST_METHOD,\n SEMATTRS_HTTP_METHOD,\n ATTR_URL_FULL,\n SEMATTRS_HTTP_URL,\n ATTR_NETWORK_PEER_ADDRESS,\n SEMATTRS_NET_PEER_IP,\n ATTR_USER_AGENT_ORIGINAL,\n SEMATTRS_HTTP_USER_AGENT,\n ATTR_SERVER_PORT,\n ATTR_CLIENT_PORT,\n SEMATTRS_NET_HOST_PORT,\n} from \"@opentelemetry/semantic-conventions\";\nimport { SDK_INFO, hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport type { Histogram, ResourceMetrics } from \"@opentelemetry/sdk-metrics\";\nimport { DataPointType } from \"@opentelemetry/sdk-metrics\";\nimport {\n APPLICATION_INSIGHTS_SHIM_VERSION,\n AZURE_MONITOR_AUTO_ATTACH,\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AZURE_MONITOR_PREFIX,\n AttachTypePrefix,\n} from \"../../types.js\";\nimport type {\n RequestData,\n DependencyData,\n ExceptionData,\n TraceData,\n TelemetryData,\n} from \"./types.js\";\nimport {\n QuickPulseMetricNames,\n QuickPulseOpenTelemetryMetricNames,\n DependencyTypes,\n legacySemanticValues,\n httpSemanticValues,\n} from \"./types.js\";\nimport { getOsPrefix } from \"../../utils/common.js\";\nimport { getResourceProvider } from \"../../utils/common.js\";\nimport type { LogAttributes } from \"@opentelemetry/api-logs\";\nimport { getDependencyTarget, isSqlDB, isExceptionTelemetry } from \"../utils.js\";\nimport { Logger } from \"../../shared/logging/index.js\";\n\n/** Get the internal SDK version */\nexport function getSdkVersion(): string {\n const nodeVersion = process.versions.node;\n const opentelemetryVersion = SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_VERSION];\n const version = getSdkVersionType();\n const internalSdkVersion = `${process.env[AZURE_MONITOR_PREFIX] ?? \"\"}node${nodeVersion}:otel${opentelemetryVersion}:${version}`;\n return internalSdkVersion;\n}\n\n/** Get the internal SDK version type */\nexport function getSdkVersionType(): string {\n if (process.env[APPLICATION_INSIGHTS_SHIM_VERSION]) {\n return `sha${process.env[APPLICATION_INSIGHTS_SHIM_VERSION]}`;\n } else {\n return `dst${AZURE_MONITOR_OPENTELEMETRY_VERSION}`;\n }\n}\n\n// eslint-disable-next-line tsdoc/syntax\n/** Set the version prefix to a string in the format \"{ResourceProvider}{OS}m_ */\nexport function setSdkPrefix(): void {\n if (!process.env[AZURE_MONITOR_PREFIX]) {\n const prefixAttachType: string =\n process.env[AZURE_MONITOR_AUTO_ATTACH] === \"true\"\n ? AttachTypePrefix.INTEGRATED_AUTO\n : AttachTypePrefix.MANUAL;\n process.env[AZURE_MONITOR_PREFIX] =\n `${getResourceProvider()}${getOsPrefix()}${prefixAttachType}_`;\n }\n}\n\nexport function resourceMetricsToQuickpulseDataPoint(\n metrics: ResourceMetrics,\n baseMonitoringDataPoint: MonitoringDataPoint,\n documents: DocumentIngress[],\n errors: CollectionConfigurationError[],\n derivedMetricValues: Map<string, number>,\n): MonitoringDataPoint[] {\n const metricPoints: MetricPoint[] = [];\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: \"\",\n value: 0,\n };\n\n // Update name to expected value in Quickpulse, needed because those names are invalid in OTel\n switch (metric.descriptor.name) {\n case QuickPulseOpenTelemetryMetricNames.PHYSICAL_BYTES:\n metricPoint.name = QuickPulseMetricNames.PHYSICAL_BYTES;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE:\n metricPoint.name = QuickPulseMetricNames.DEPENDENCY_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE:\n metricPoint.name = QuickPulseMetricNames.EXCEPTION_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME_NORMALIZED:\n metricPoint.name = QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION:\n metricPoint.name = QuickPulseMetricNames.REQUEST_DURATION;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_FAILURE_RATE;\n break;\n case QuickPulseOpenTelemetryMetricNames.REQUEST_RATE:\n metricPoint.name = QuickPulseMetricNames.REQUEST_RATE;\n break;\n default:\n metricPoint.name = metric.descriptor.name;\n }\n\n if (\n metric.dataPointType === DataPointType.SUM ||\n metric.dataPointType === DataPointType.GAUGE\n ) {\n metricPoint.value = dataPoint.value as number;\n } else {\n metricPoint.value = (dataPoint.value as Histogram).sum || 0;\n }\n metricPoints.push(metricPoint);\n\n // TODO: remove the metric points with the old metric names after\n // UI side has done their changes to support the new names.\n if (\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES ||\n metricPoint.name === QuickPulseMetricNames.PROCESSOR_TIME_NORMALIZED\n ) {\n const oldMetricPoint: MetricPoint = {\n weight: 1,\n name:\n metricPoint.name === QuickPulseMetricNames.PHYSICAL_BYTES\n ? QuickPulseMetricNames.COMMITTED_BYTES\n : QuickPulseMetricNames.PROCESSOR_TIME,\n value: dataPoint.value as number,\n };\n metricPoints.push(oldMetricPoint);\n }\n });\n });\n });\n\n derivedMetricValues.forEach((value, id) => {\n const metricPoint: MetricPoint = {\n weight: 1,\n name: id,\n value: value,\n };\n metricPoints.push(metricPoint);\n });\n\n const quickpulseDataPoint: MonitoringDataPoint = {\n ...baseMonitoringDataPoint,\n timestamp: new Date(),\n metrics: metricPoints,\n documents: documents,\n collectionConfigurationErrors: errors,\n };\n return [quickpulseDataPoint];\n}\n\nfunction getIso8601Duration(milliseconds: number): string {\n const seconds = milliseconds / 1000;\n return `PT${seconds}S`;\n}\n\nexport function getSpanData(span: ReadableSpan): RequestData | DependencyData {\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n // request\n return getRequestData(span);\n } else {\n // dependency\n return getDependencyData(span);\n }\n}\n\nexport function getSpanExceptionColumns(\n eventAttributes: Attributes,\n spanAttributes: Attributes,\n): ExceptionData {\n const exceptionData: ExceptionData = {\n Message: eventAttributes[SEMATTRS_EXCEPTION_MESSAGE] as string,\n StackTrace: eventAttributes[SEMATTRS_EXCEPTION_STACKTRACE] as string,\n CustomDimensions: createCustomDimsFromAttributes(spanAttributes),\n };\n return exceptionData;\n}\n\n// A slightly modified version of createRequestData from spanUtils in exporter\nfunction getRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n Url: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n ResponseCode: 0,\n Success: false,\n Name: span.name || \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n const httpMethod = getHttpMethod(span.attributes);\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (httpMethod) {\n requestData.Url = getUrl(span.attributes);\n if (URL.canParse(requestData.Url)) {\n const urlObj = new URL(requestData.Url);\n requestData.Name = `${httpMethod} ${urlObj.pathname}`;\n } else {\n Logger.getInstance().info(\"Request data sent to live metrics has no valid URL field.\");\n }\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n requestData.ResponseCode = Number(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.ResponseCode = Number(grpcStatusCode);\n }\n requestData.Success = span.status.code !== SpanStatusCode.ERROR && requestData.ResponseCode < 400;\n return requestData;\n}\n\n// A slightly modified version of createDependencyData from spanUtils in exporter\nfunction getDependencyData(span: ReadableSpan): DependencyData {\n const dependencyData: DependencyData = {\n Target: \"\",\n Duration: hrTimeToMilliseconds(span.duration),\n Success: span.status.code !== SpanStatusCode.ERROR,\n Name: span.name,\n ResultCode: 0,\n Type: \"\",\n Data: \"\",\n CustomDimensions: createCustomDimsFromAttributes(span.attributes),\n };\n\n if (span.kind === SpanKind.PRODUCER) {\n dependencyData.Type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanContext?.spanId) {\n dependencyData.Type = DependencyTypes.InProc;\n }\n\n const httpMethod = getHttpMethod(span.attributes);\n const dbSystem = span.attributes[SEMATTRS_DB_SYSTEM];\n const rpcSystem = span.attributes[SEMATTRS_RPC_SYSTEM];\n // HTTP Dependency\n if (httpMethod) {\n const httpUrl = getHttpUrl(span.attributes);\n if (httpUrl) {\n if (URL.canParse(String(httpUrl))) {\n const dependencyUrl = new URL(String(httpUrl));\n dependencyData.Name = `${httpMethod} ${dependencyUrl.pathname}`;\n } else {\n Logger.getInstance().info(\"Dependency data sent to live metrics has no valid URL field.\");\n }\n }\n dependencyData.Type = DependencyTypes.Http;\n dependencyData.Data = getUrl(span.attributes);\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n dependencyData.ResultCode = Number(httpStatusCode);\n }\n let target = getDependencyTarget(span.attributes);\n if (target) {\n try {\n // Remove default port\n const portRegex = new RegExp(/(https?)(:\\/\\/.*)(:\\d+)(\\S*)/);\n const res = portRegex.exec(target);\n if (res !== null) {\n const protocol = res[1];\n const port = res[3];\n if (\n (protocol === \"https\" && port === \":443\") ||\n (protocol === \"http\" && port === \":80\")\n ) {\n // Drop port\n target = res[1] + res[2] + res[4];\n }\n }\n } catch (ex: any) {\n /* no-op */\n }\n dependencyData.Target = `${target}`;\n }\n }\n // DB Dependency\n else if (dbSystem) {\n // TODO: Remove special logic when Azure UX supports OpenTelemetry dbSystem\n if (String(dbSystem) === DBSYSTEMVALUES_MYSQL) {\n dependencyData.Type = DependencyTypes.mysql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_POSTGRESQL) {\n dependencyData.Type = DependencyTypes.postgresql;\n } else if (String(dbSystem) === DBSYSTEMVALUES_MONGODB) {\n dependencyData.Type = DependencyTypes.mongodb;\n } else if (String(dbSystem) === DBSYSTEMVALUES_REDIS) {\n dependencyData.Type = DependencyTypes.redis;\n } else if (isSqlDB(String(dbSystem))) {\n dependencyData.Type = DependencyTypes.Sql;\n } else {\n dependencyData.Type = String(dbSystem);\n }\n const dbStatement = span.attributes[SEMATTRS_DB_STATEMENT];\n const dbOperation = span.attributes[SEMATTRS_DB_OPERATION];\n if (dbStatement) {\n dependencyData.Data = String(dbStatement);\n } else if (dbOperation) {\n dependencyData.Data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SEMATTRS_DB_NAME];\n if (target) {\n dependencyData.Target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n dependencyData.Target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n\n // grpc Dependency\n else if (rpcSystem) {\n if (rpcSystem === DependencyTypes.Wcf) {\n dependencyData.Type = DependencyTypes.Wcf;\n } else {\n dependencyData.Type = DependencyTypes.Grpc;\n }\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n dependencyData.ResultCode = Number(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n dependencyData.Target = `${target}`;\n } else if (rpcSystem) {\n dependencyData.Target = String(rpcSystem);\n }\n }\n return dependencyData;\n}\n\nexport function getLogData(log: SdkLogRecord): ExceptionData | TraceData {\n const customDims = createCustomDimsFromAttributes(log.attributes);\n if (isExceptionTelemetry(log)) {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.attributes[SEMATTRS_EXCEPTION_MESSAGE]),\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n StackTrace: String(log.attributes[SEMATTRS_EXCEPTION_STACKTRACE]),\n CustomDimensions: customDims,\n };\n } else {\n return {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n Message: String(log.body),\n CustomDimensions: customDims,\n };\n }\n}\n\nexport function getLogDocument(data: TelemetryData, exceptionType?: string): Trace | Exception {\n if (isExceptionData(data) && exceptionType) {\n return {\n documentType: \"Exception\",\n exceptionMessage: data.Message,\n exceptionType: exceptionType,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n } else {\n // trace\n return {\n documentType: \"Trace\",\n message: (data as TraceData).Message,\n properties: mapToKeyValuePairList(data.CustomDimensions),\n };\n }\n}\n\nexport function isRequestData(data: TelemetryData): data is RequestData {\n return (data as RequestData).Url !== undefined;\n}\n\nexport function isDependencyData(data: TelemetryData): data is DependencyData {\n return (data as DependencyData).Target !== undefined;\n}\n\nexport function isTraceData(data: TelemetryData): data is TraceData {\n return (data as TraceData).Message !== undefined && (data as any).StackTrace === undefined;\n}\n\nexport function isExceptionData(data: TelemetryData): data is ExceptionData {\n return (data as ExceptionData).StackTrace !== undefined;\n}\n\nexport function getSpanDocument(telemetryData: TelemetryData): Request | RemoteDependency {\n let document: Request | RemoteDependency = {\n documentType: \"Request\",\n };\n\n if (isRequestData(telemetryData)) {\n document = {\n documentType: \"Request\",\n name: telemetryData.Name,\n url: telemetryData.Url,\n responseCode: String(telemetryData.ResponseCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n } else if (isDependencyData(telemetryData)) {\n document = {\n documentType: \"RemoteDependency\",\n name: telemetryData.Name,\n commandName: telemetryData.Data,\n resultCode: String(telemetryData.ResultCode),\n duration: getIso8601Duration(telemetryData.Duration),\n };\n }\n\n document.properties = mapToKeyValuePairList(telemetryData.CustomDimensions);\n return document;\n}\n\nfunction createCustomDimsFromAttributes(\n attributes?: Attributes | LogAttributes,\n): Map<string, string> {\n const customDims = new Map<string, string>();\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n if (\n !(\n key.startsWith(\"_MS.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any)\n )\n ) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n customDims.set(key, String(attributes[key]));\n }\n }\n }\n return customDims;\n}\n\nfunction mapToKeyValuePairList(map: Map<string, string>): KeyValuePairStringString[] {\n const list: KeyValuePairStringString[] = [];\n map.forEach((value, key) => {\n list.push({ key, value });\n });\n return list;\n}\n\nfunction getUrl(attributes: Attributes): string {\n if (!attributes) {\n return \"\";\n }\n const httpMethod = getHttpMethod(attributes);\n if (httpMethod) {\n const httpUrl = getHttpUrl(attributes);\n if (httpUrl) {\n return String(httpUrl);\n } else {\n const httpScheme = getHttpScheme(attributes);\n const httpTarget = getHttpTarget(attributes);\n if (httpScheme && httpTarget) {\n const httpHost = getHttpHost(attributes);\n if (httpHost) {\n return `${httpScheme}://${httpHost}${httpTarget}`;\n } else {\n const netPeerPort = getNetPeerPort(attributes);\n if (netPeerPort) {\n const netPeerName = getNetPeerName(attributes);\n if (netPeerName) {\n return `${httpScheme}://${netPeerName}:${netPeerPort}${httpTarget}`;\n } else {\n const netPeerIp = getPeerIp(attributes);\n if (netPeerIp) {\n return `${httpScheme}://${netPeerIp}:${netPeerPort}${httpTarget}`;\n }\n }\n }\n }\n }\n }\n }\n return \"\";\n}\n\n/**\n * UTC time the request was made. Expressed as the number of 100-nanosecond intervals that have elapsed since 12:00:00 midnight on January 1, 0001. This is used for clock skew calculations, so the value can never be stale (cached).\n *\n * @example\n * 8/5/2020 10:15:00 PM UTC =\\> 637322625000000000\n * 8/5/2020 10:15:01 PM UTC =\\> 637322625010000000\n */\nexport function getTransmissionTime(): number {\n return (Date.now() + 62135596800000) * 10000;\n}\n\nexport function getMsFromFilterTimestampString(timestamp: string): number {\n // The service side will return a timestamp in the following format:\n // [days].[hours]:[minutes]:[seconds]\n // the seconds may be a whole number or something like 7.89. 7.89 seconds translates to 7890 ms.\n // writing this method because date.getmilliseconds() returns incorrect result on large timestamps.\n // examples: \"14.6:56:7.89\" = 1234567890 ms, \"0.0:0:0.2\" = 200 ms\n const parts = timestamp.split(\":\");\n if (parts.length !== 3) {\n return NaN;\n }\n const seconds = parseFloat(parts[2]);\n const minutes = parseFloat(parts[1]);\n const firstPart = parts[0].split(\".\");\n if (firstPart.length !== 2) {\n return NaN;\n }\n const hours = parseFloat(firstPart[1]);\n const days = parseFloat(firstPart[0]);\n\n if (isNaN(days) || isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {\n return NaN;\n }\n\n return seconds * 1000 + minutes * 60000 + hours * 3600000 + days * 86400000;\n}\n\nexport function getPeerIp(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_NETWORK_PEER_ADDRESS] || attributes[SEMATTRS_NET_PEER_IP]);\n }\n return;\n}\n\nexport function getUserAgent(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_USER_AGENT_ORIGINAL] || attributes[SEMATTRS_HTTP_USER_AGENT]);\n }\n return;\n}\n\nexport function getHttpUrl(attributes: Attributes): string {\n // Stable sem conv only supports populating url from `url.full`\n if (attributes) {\n return String(attributes[ATTR_URL_FULL] || attributes[SEMATTRS_HTTP_URL] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpMethod(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD]);\n }\n return;\n}\n\nexport function getHttpStatusCode(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE],\n );\n }\n return;\n}\n\nexport function getHttpScheme(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_URL_SCHEME] || attributes[SEMATTRS_HTTP_SCHEME]);\n }\n return;\n}\n\nexport function getHttpTarget(attributes: Attributes): string {\n if (attributes) {\n if (attributes[ATTR_URL_PATH]) {\n return String(attributes[ATTR_URL_PATH]);\n }\n if (attributes[ATTR_URL_QUERY]) {\n return String(attributes[ATTR_URL_QUERY]);\n }\n return String(attributes[SEMATTRS_HTTP_TARGET] || \"\");\n }\n return \"\";\n}\n\nexport function getHttpHost(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(attributes[ATTR_SERVER_ADDRESS] || attributes[SEMATTRS_HTTP_HOST]);\n }\n return;\n}\n\nexport function getNetPeerName(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_NET_PEER_NAME] || \"\");\n }\n return \"\";\n}\n\nexport function getNetHostPort(attributes: Attributes): string {\n if (attributes) {\n return String(attributes[ATTR_SERVER_PORT] || attributes[SEMATTRS_NET_HOST_PORT] || \"\");\n }\n return \"\";\n}\n\nexport function getNetPeerPort(attributes: Attributes): string | undefined {\n if (attributes) {\n return String(\n attributes[ATTR_CLIENT_PORT] ||\n attributes[ATTR_SERVER_PORT] ||\n attributes[SEMATTRS_NET_PEER_PORT],\n );\n }\n return;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"standardMetrics.d.ts","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAiC,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAc,MAAM,+BAA+B,CAAC;AAYpF;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iCAAiC,CAAY;IACrD,OAAO,CAAC,iCAAiC,CAAY;IACrD,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;OAIG;gBACS,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE;IAmC5E;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACI,gBAAgB,IAAI,aAAa;IAIxC;;;OAGG;IACI,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAY5C;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAqB3C;;;OAGG;IACI,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;CAYhD"}
1
+ {"version":3,"file":"standardMetrics.d.ts","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAiC,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAc,MAAM,+BAA+B,CAAC;AAapF;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iCAAiC,CAAY;IACrD,OAAO,CAAC,iCAAiC,CAAY;IACrD,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;OAIG;gBACS,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE;IAmC5E;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACI,gBAAgB,IAAI,aAAa;IAIxC;;;OAGG;IACI,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAY5C;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAqB3C;;;OAGG;IACI,SAAS,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;CAYhD"}
@@ -7,6 +7,7 @@ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
7
7
  const monitor_opentelemetry_exporter_1 = require("@azure/monitor-opentelemetry-exporter");
8
8
  const api_1 = require("@opentelemetry/api");
9
9
  const utils_js_1 = require("./utils.js");
10
+ const core_1 = require("@opentelemetry/core");
10
11
  const types_js_1 = require("./types.js");
11
12
  /**
12
13
  * Azure Monitor Standard Metrics
@@ -94,7 +95,7 @@ class StandardMetrics {
94
95
  * @internal
95
96
  */
96
97
  recordSpan(span) {
97
- const durationMs = span.duration[0];
98
+ const durationMs = (0, core_1.hrTimeToMilliseconds)(span.duration);
98
99
  if (span.kind === api_1.SpanKind.SERVER) {
99
100
  this._incomingRequestDurationHistogram.record(durationMs, (0, utils_js_1.getRequestDimensions)(span));
100
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"standardMetrics.js","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\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 { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { Counter, Histogram, Meter } from \"@opentelemetry/api\";\nimport { SpanKind, ValueType } from \"@opentelemetry/api\";\nimport type { ReadableSpan, Span, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport {\n getDependencyDimensions,\n getExceptionDimensions,\n getRequestDimensions,\n getTraceDimensions,\n isExceptionTelemetry,\n isSyntheticLoad,\n isTraceTelemetry,\n} from \"./utils.js\";\nimport { StandardMetricIds } from \"./types.js\";\n\n/**\n * Azure Monitor Standard Metrics\n * @internal\n */\nexport class StandardMetrics {\n private _config: InternalConfig;\n private _collectionInterval = 60000; // 60 seconds\n private _meterProvider: MeterProvider;\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _meter: Meter;\n private _incomingRequestDurationHistogram: Histogram;\n private _outgoingRequestDurationHistogram: Histogram;\n private _exceptionsCounter: Counter;\n private _tracesCounter: Counter;\n\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, options?: { collectionInterval: number }) {\n this._config = config;\n this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter as any,\n exportIntervalMillis: options?.collectionInterval || this._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(\"AzureMonitorStandardMetricsMeter\");\n this._incomingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this._outgoingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.DEPENDENCIES_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this._exceptionsCounter = this._meter.createCounter(StandardMetricIds.EXCEPTIONS_COUNT, {\n valueType: ValueType.INT,\n });\n this._tracesCounter = this._meter.createCounter(StandardMetricIds.TRACES_COUNT, {\n valueType: ValueType.INT,\n });\n }\n\n /**\n * Shutdown Meter Provider it will return no-op Meters after being called.\n */\n public shutdown(): void {\n this._meterProvider.shutdown();\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 {\n return this._meterProvider;\n }\n\n /**\n * Add extra attributes to Span so Ingestion doesn't aggregate the data again\n * @internal\n */\n public markSpanAsProcessed(span: Span): void {\n if (span.kind === SpanKind.CLIENT) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Dependencies', Ver:'1.1')\",\n });\n } else if (span.kind === SpanKind.SERVER) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Requests', Ver:'1.1')\",\n });\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n const durationMs = span.duration[0];\n if (span.kind === SpanKind.SERVER) {\n this._incomingRequestDurationHistogram.record(durationMs, getRequestDimensions(span));\n } else {\n this._outgoingRequestDurationHistogram.record(durationMs, getDependencyDimensions(span));\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Exceptions', Ver:'1.1')\";\n this._exceptionsCounter.add(1, getExceptionDimensions(span.resource));\n } else {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Traces', Ver:'1.1')\";\n this._tracesCounter.add(1, getTraceDimensions(span.resource));\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 (isSyntheticLoad(logRecord)) {\n logRecord.setAttribute(\"operation/synthetic\", \"True\");\n }\n if (isExceptionTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Exceptions', Ver:'1.1')\");\n this._exceptionsCounter.add(1, getExceptionDimensions(logRecord.resource));\n } else if (isTraceTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Traces', Ver:'1.1')\");\n this._tracesCounter.add(1, getTraceDimensions(logRecord.resource));\n }\n }\n}\n"]}
1
+ {"version":3,"file":"standardMetrics.js","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\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 { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { Counter, Histogram, Meter } from \"@opentelemetry/api\";\nimport { SpanKind, ValueType } from \"@opentelemetry/api\";\nimport type { ReadableSpan, Span, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport {\n getDependencyDimensions,\n getExceptionDimensions,\n getRequestDimensions,\n getTraceDimensions,\n isExceptionTelemetry,\n isSyntheticLoad,\n isTraceTelemetry,\n} from \"./utils.js\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { StandardMetricIds } from \"./types.js\";\n\n/**\n * Azure Monitor Standard Metrics\n * @internal\n */\nexport class StandardMetrics {\n private _config: InternalConfig;\n private _collectionInterval = 60000; // 60 seconds\n private _meterProvider: MeterProvider;\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _meter: Meter;\n private _incomingRequestDurationHistogram: Histogram;\n private _outgoingRequestDurationHistogram: Histogram;\n private _exceptionsCounter: Counter;\n private _tracesCounter: Counter;\n\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, options?: { collectionInterval: number }) {\n this._config = config;\n this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter as any,\n exportIntervalMillis: options?.collectionInterval || this._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(\"AzureMonitorStandardMetricsMeter\");\n this._incomingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this._outgoingRequestDurationHistogram = this._meter.createHistogram(\n StandardMetricIds.DEPENDENCIES_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this._exceptionsCounter = this._meter.createCounter(StandardMetricIds.EXCEPTIONS_COUNT, {\n valueType: ValueType.INT,\n });\n this._tracesCounter = this._meter.createCounter(StandardMetricIds.TRACES_COUNT, {\n valueType: ValueType.INT,\n });\n }\n\n /**\n * Shutdown Meter Provider it will return no-op Meters after being called.\n */\n public shutdown(): void {\n this._meterProvider.shutdown();\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 {\n return this._meterProvider;\n }\n\n /**\n * Add extra attributes to Span so Ingestion doesn't aggregate the data again\n * @internal\n */\n public markSpanAsProcessed(span: Span): void {\n if (span.kind === SpanKind.CLIENT) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Dependencies', Ver:'1.1')\",\n });\n } else if (span.kind === SpanKind.SERVER) {\n span.setAttributes({\n \"_MS.ProcessedByMetricExtractors\": \"(Name:'Requests', Ver:'1.1')\",\n });\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n const durationMs = hrTimeToMilliseconds(span.duration);\n if (span.kind === SpanKind.SERVER) {\n this._incomingRequestDurationHistogram.record(durationMs, getRequestDimensions(span));\n } else {\n this._outgoingRequestDurationHistogram.record(durationMs, getDependencyDimensions(span));\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Exceptions', Ver:'1.1')\";\n this._exceptionsCounter.add(1, getExceptionDimensions(span.resource));\n } else {\n event.attributes[\"_MS.ProcessedByMetricExtractors\"] = \"(Name:'Traces', Ver:'1.1')\";\n this._tracesCounter.add(1, getTraceDimensions(span.resource));\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 (isSyntheticLoad(logRecord)) {\n logRecord.setAttribute(\"operation/synthetic\", \"True\");\n }\n if (isExceptionTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Exceptions', Ver:'1.1')\");\n this._exceptionsCounter.add(1, getExceptionDimensions(logRecord.resource));\n } else if (isTraceTelemetry(logRecord)) {\n logRecord.setAttribute(\"_MS.ProcessedByMetricExtractors\", \"(Name:'Traces', Ver:'1.1')\");\n this._tracesCounter.add(1, getTraceDimensions(logRecord.resource));\n }\n }\n}\n"]}
@@ -14,6 +14,13 @@ export declare function isExceptionTelemetry(logRecord: SdkLogRecord): boolean;
14
14
  export declare function isTraceTelemetry(logRecord: SdkLogRecord): boolean;
15
15
  export declare function isSyntheticLoad(record: SdkLogRecord | ReadableSpan): boolean;
16
16
  export declare function convertDimensions(dimensions: MetricDependencyDimensions | MetricRequestDimensions): Attributes;
17
+ /**
18
+ * Returns available system memory in bytes.
19
+ * On Linux, reads MemAvailable from /proc/meminfo which accounts for reclaimable
20
+ * memory (page cache, buffers), providing a more accurate measure than os.freemem()
21
+ * which only reports MemFree. Falls back to os.freemem() on other platforms or on error.
22
+ */
23
+ export declare function readAvailableMemory(): number;
17
24
  export declare function getPhysicalMemory(): number;
18
25
  export declare function getProcessorTimeNormalized(lastHrTime: bigint, lastCpuUsage: NodeJS.CpuUsage): number;
19
26
  export declare function getProcessorTime(lastHrTime: bigint, lastCpuUsage: NodeJS.CpuUsage): number;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AA0B5D,OAAO,KAAK,EACV,0BAA0B,EAE1B,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAWzD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAYnE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAYtE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAIrE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAIjE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,4BAA4B,CAQlF;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAelE;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAYrE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAYjE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,CAG5E;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,0BAA0B,GAAG,uBAAuB,GAC/D,UAAU,CAQZ;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAKD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,QAAQ,GAC5B,MAAM,CAWR;AAKD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAa1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAgDvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAa/D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AA0B5D,OAAO,KAAK,EACV,0BAA0B,EAE1B,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAYzD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAYnE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,CAYtE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAIrE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAIjE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,4BAA4B,CAQlF;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAelE;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAYrE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAYjE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,CAG5E;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,0BAA0B,GAAG,uBAAuB,GAC/D,UAAU,CAQZ;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAa5C;AAGD,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C;AAKD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,CAAC,QAAQ,GAC5B,MAAM,CAWR;AAKD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAa1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAgDvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAa/D"}
@@ -11,6 +11,7 @@ exports.isExceptionTelemetry = isExceptionTelemetry;
11
11
  exports.isTraceTelemetry = isTraceTelemetry;
12
12
  exports.isSyntheticLoad = isSyntheticLoad;
13
13
  exports.convertDimensions = convertDimensions;
14
+ exports.readAvailableMemory = readAvailableMemory;
14
15
  exports.getPhysicalMemory = getPhysicalMemory;
15
16
  exports.getProcessorTimeNormalized = getProcessorTimeNormalized;
16
17
  exports.getProcessorTime = getProcessorTime;
@@ -24,6 +25,7 @@ const utils_js_1 = require("./quickpulse/utils.js");
24
25
  const logger_js_1 = require("../shared/logging/logger.js");
25
26
  const node_os_1 = tslib_1.__importDefault(require("node:os"));
26
27
  const node_process_1 = tslib_1.__importDefault(require("node:process"));
28
+ const node_fs_1 = require("node:fs");
27
29
  function getRequestDimensions(span) {
28
30
  const dimensions = getBaseDimensions(span.resource);
29
31
  dimensions.metricId = types_js_1.StandardMetricIds.REQUEST_DURATION;
@@ -134,6 +136,27 @@ function convertDimensions(dimensions) {
134
136
  }
135
137
  return convertedDimensions;
136
138
  }
139
+ /**
140
+ * Returns available system memory in bytes.
141
+ * On Linux, reads MemAvailable from /proc/meminfo which accounts for reclaimable
142
+ * memory (page cache, buffers), providing a more accurate measure than os.freemem()
143
+ * which only reports MemFree. Falls back to os.freemem() on other platforms or on error.
144
+ */
145
+ function readAvailableMemory() {
146
+ if (node_process_1.default.platform === "linux") {
147
+ try {
148
+ const contents = (0, node_fs_1.readFileSync)("/proc/meminfo", "utf8");
149
+ const match = contents.match(/^MemAvailable:\s+(\d+)\s+kB$/m);
150
+ if (match) {
151
+ return parseInt(match[1], 10) * 1024;
152
+ }
153
+ }
154
+ catch {
155
+ // Fall through to os.freemem()
156
+ }
157
+ }
158
+ return node_os_1.default.freemem();
159
+ }
137
160
  // to get physical memory bytes
138
161
  function getPhysicalMemory() {
139
162
  if (node_process_1.default?.memoryUsage) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/metrics/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport {\n SEMATTRS_PEER_SERVICE,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_TYPE,\n DBSYSTEMVALUES_DB2,\n DBSYSTEMVALUES_DERBY,\n DBSYSTEMVALUES_MARIADB,\n DBSYSTEMVALUES_MSSQL,\n DBSYSTEMVALUES_ORACLE,\n DBSYSTEMVALUES_SQLITE,\n DBSYSTEMVALUES_OTHER_SQL,\n DBSYSTEMVALUES_HSQLDB,\n DBSYSTEMVALUES_H2,\n SEMRESATTRS_K8S_DEPLOYMENT_NAME,\n SEMRESATTRS_K8S_REPLICASET_NAME,\n SEMRESATTRS_K8S_STATEFULSET_NAME,\n SEMRESATTRS_K8S_JOB_NAME,\n SEMRESATTRS_K8S_CRONJOB_NAME,\n SEMRESATTRS_K8S_DAEMONSET_NAME,\n SEMRESATTRS_K8S_POD_NAME,\n SEMRESATTRS_SERVICE_INSTANCE_ID,\n SEMRESATTRS_SERVICE_NAME,\n SEMRESATTRS_SERVICE_NAMESPACE,\n} from \"@opentelemetry/semantic-conventions\";\nimport { StandardMetricIds, StandardMetricPropertyNames } from \"./types.js\";\nimport type {\n MetricDependencyDimensions,\n MetricDimensionTypeKeys,\n MetricRequestDimensions,\n StandardMetricBaseDimensions,\n} from \"./types.js\";\nimport type { Resource } from \"@opentelemetry/resources\";\nimport {\n getHttpStatusCode,\n getNetHostPort,\n getNetPeerName,\n getUserAgent,\n} from \"./quickpulse/utils.js\";\nimport { Logger } from \"../shared/logging/logger.js\";\nimport os from \"node:os\";\nimport process from \"node:process\";\n\nexport function getRequestDimensions(span: ReadableSpan): Attributes {\n const dimensions: MetricRequestDimensions = getBaseDimensions(span.resource);\n dimensions.metricId = StandardMetricIds.REQUEST_DURATION;\n const statusCode = String(getHttpStatusCode(span.attributes));\n dimensions.requestResultCode = statusCode;\n // OTel treats 4xx request responses as UNSET SpanStatusCode, but we should count them as failed\n dimensions.requestSuccess =\n span.status.code !== SpanStatusCode.ERROR && (Number(statusCode) || 0) < 400 ? \"True\" : \"False\";\n if (isSyntheticLoad(span)) {\n dimensions.operationSynthetic = \"True\";\n }\n return convertDimensions(dimensions);\n}\n\nexport function getDependencyDimensions(span: ReadableSpan): Attributes {\n const dimensions: MetricDependencyDimensions = getBaseDimensions(span.resource);\n dimensions.metricId = StandardMetricIds.DEPENDENCIES_DURATION;\n const statusCode = String(getHttpStatusCode(span.attributes));\n dimensions.dependencyTarget = getDependencyTarget(span.attributes);\n dimensions.dependencyResultCode = statusCode;\n dimensions.dependencyType = \"http\";\n dimensions.dependencySuccess = span.status.code !== SpanStatusCode.ERROR ? \"True\" : \"False\";\n if (isSyntheticLoad(span)) {\n dimensions.operationSynthetic = \"True\";\n }\n return convertDimensions(dimensions);\n}\n\nexport function getExceptionDimensions(resource: Resource): Attributes {\n const dimensions: StandardMetricBaseDimensions = getBaseDimensions(resource);\n dimensions.metricId = StandardMetricIds.EXCEPTIONS_COUNT;\n return dimensions as Attributes;\n}\n\nexport function getTraceDimensions(resource: Resource): Attributes {\n const dimensions: StandardMetricBaseDimensions = getBaseDimensions(resource);\n dimensions.metricId = StandardMetricIds.TRACES_COUNT;\n return dimensions as Attributes;\n}\n\nexport function getBaseDimensions(resource: Resource): StandardMetricBaseDimensions {\n const dimensions: StandardMetricBaseDimensions = {};\n dimensions.IsAutocollected = \"True\";\n if (resource) {\n dimensions.cloudRoleName = getCloudRole(resource);\n dimensions.cloudRoleInstance = getCloudRoleInstance(resource);\n }\n return dimensions;\n}\n\n// Get metric dependency target, avoiding high cardinality.\nexport function getDependencyTarget(attributes: Attributes): string {\n if (!attributes) {\n return \"\";\n }\n const peerService = attributes[SEMATTRS_PEER_SERVICE];\n const hostPort = getNetHostPort(attributes);\n const netPeerName = getNetPeerName(attributes);\n if (peerService) {\n return String(peerService);\n } else if (hostPort && netPeerName) {\n return `${netPeerName}:${hostPort}`;\n } else if (netPeerName) {\n return String(netPeerName);\n }\n return \"\";\n}\n\nexport function isSqlDB(dbSystem: string): boolean {\n return (\n dbSystem === DBSYSTEMVALUES_DB2 ||\n dbSystem === DBSYSTEMVALUES_DERBY ||\n dbSystem === DBSYSTEMVALUES_MARIADB ||\n dbSystem === DBSYSTEMVALUES_MSSQL ||\n dbSystem === DBSYSTEMVALUES_ORACLE ||\n dbSystem === DBSYSTEMVALUES_SQLITE ||\n dbSystem === DBSYSTEMVALUES_OTHER_SQL ||\n dbSystem === DBSYSTEMVALUES_HSQLDB ||\n dbSystem === DBSYSTEMVALUES_H2\n );\n}\n\nexport function isExceptionTelemetry(logRecord: SdkLogRecord): boolean {\n const baseType = logRecord.attributes[\"_MS.baseType\"];\n // If Application Insights Legacy logs\n if (baseType && baseType === \"ExceptionData\") {\n return true;\n } else if (\n logRecord.attributes[SEMATTRS_EXCEPTION_MESSAGE] ||\n logRecord.attributes[SEMATTRS_EXCEPTION_TYPE]\n ) {\n return true;\n }\n return false;\n}\n\nexport function isTraceTelemetry(logRecord: SdkLogRecord): boolean {\n const baseType = logRecord.attributes[\"_MS.baseType\"];\n // If Application Insights Legacy logs\n if (baseType && baseType === \"MessageData\") {\n return true;\n } else if (\n !logRecord.attributes[SEMATTRS_EXCEPTION_MESSAGE] &&\n !logRecord.attributes[SEMATTRS_EXCEPTION_TYPE]\n ) {\n return true;\n }\n return false;\n}\n\nexport function isSyntheticLoad(record: SdkLogRecord | ReadableSpan): boolean {\n const userAgent = String(getUserAgent(record.attributes as Attributes));\n return userAgent !== null && userAgent.includes(\"AlwaysOn\") ? true : false;\n}\n\nexport function convertDimensions(\n dimensions: MetricDependencyDimensions | MetricRequestDimensions,\n): Attributes {\n const convertedDimensions: any = {};\n for (const dim in dimensions) {\n convertedDimensions[StandardMetricPropertyNames[dim as MetricDimensionTypeKeys]] = (\n dimensions as any\n )[dim];\n }\n return convertedDimensions as Attributes;\n}\n\n// to get physical memory bytes\nexport function getPhysicalMemory(): number {\n if (process?.memoryUsage) {\n return process.memoryUsage.rss();\n } else {\n Logger.getInstance().debug(\"process.memoryUsage is not available\");\n return 0;\n }\n}\n\n// This function can get the normalized cpu, but it assumes that after this function is called,\n// that the process.hrtime.bigint() & process.cpuUsage() are called/stored to be used as the\n// parameters for the next call.\nexport function getProcessorTimeNormalized(\n lastHrTime: bigint,\n lastCpuUsage: NodeJS.CpuUsage,\n): number {\n let numCpus = os.cpus().length;\n const usageDif = process.cpuUsage(lastCpuUsage);\n const elapsedTimeNs = process.hrtime.bigint() - lastHrTime;\n\n const usageDifMs = (usageDif.user + usageDif.system) / 1000.0;\n const elapsedTimeMs = elapsedTimeNs === BigInt(0) ? 1 : Number(elapsedTimeNs) / 1000000.0;\n // just for division safety, don't know a case in which this would actually happen\n numCpus = numCpus === 0 ? 1 : numCpus;\n\n return (usageDifMs / elapsedTimeMs / numCpus) * 100;\n}\n\n// This function can get the cpu %, but it assumes that after this function is called,\n// that the process.hrtime.bigint() & process.cpuUsage() are called/stored to be used as the\n// parameters for the next call.\nexport function getProcessorTime(lastHrTime: bigint, lastCpuUsage: NodeJS.CpuUsage): number {\n if (process?.cpuUsage) {\n const usageDif = process.cpuUsage(lastCpuUsage);\n const elapsedTimeNs = process.hrtime.bigint() - lastHrTime;\n\n const usageDifMs = (usageDif.user + usageDif.system) / 1000.0;\n const elapsedTimeMs = elapsedTimeNs === BigInt(0) ? 1 : Number(elapsedTimeNs) / 1000000.0;\n\n return (usageDifMs / elapsedTimeMs) * 100;\n } else {\n Logger.getInstance().debug(\"process.cpuUsage is not available\");\n return 0;\n }\n}\n\n/**\n * Gets the cloud role name based on the resource attributes\n */\nexport function getCloudRole(resource: Resource): string {\n let cloudRole = \"\";\n // Service attributes\n const serviceName: string = resource.attributes[SEMRESATTRS_SERVICE_NAME] as string;\n const serviceNamespace: string = resource.attributes[SEMRESATTRS_SERVICE_NAMESPACE] as string;\n if (serviceName) {\n // Custom Service name provided by customer is highest precedence\n if (!String(serviceName).startsWith(\"unknown_service\")) {\n if (serviceNamespace) {\n return `${serviceNamespace}.${serviceName}`;\n } else {\n return String(serviceName);\n }\n } else {\n // Service attributes will be only used if K8S attributes are not present\n if (serviceNamespace) {\n cloudRole = `${serviceNamespace}.${serviceName}`;\n } else {\n cloudRole = String(serviceName);\n }\n }\n }\n // Kubernetes attributes should take precedence\n const kubernetesDeploymentName = resource.attributes[SEMRESATTRS_K8S_DEPLOYMENT_NAME];\n if (kubernetesDeploymentName) {\n return String(kubernetesDeploymentName);\n }\n const kuberneteReplicasetName = resource.attributes[SEMRESATTRS_K8S_REPLICASET_NAME];\n if (kuberneteReplicasetName) {\n return String(kuberneteReplicasetName);\n }\n const kubernetesStatefulSetName = resource.attributes[SEMRESATTRS_K8S_STATEFULSET_NAME];\n if (kubernetesStatefulSetName) {\n return String(kubernetesStatefulSetName);\n }\n const kubernetesJobName = resource.attributes[SEMRESATTRS_K8S_JOB_NAME];\n if (kubernetesJobName) {\n return String(kubernetesJobName);\n }\n const kubernetesCronjobName = resource.attributes[SEMRESATTRS_K8S_CRONJOB_NAME];\n if (kubernetesCronjobName) {\n return String(kubernetesCronjobName);\n }\n const kubernetesDaemonsetName = resource.attributes[SEMRESATTRS_K8S_DAEMONSET_NAME];\n if (kubernetesDaemonsetName) {\n return String(kubernetesDaemonsetName);\n }\n return cloudRole;\n}\n\n/**\n * Gets the cloud role instance based on the resource attributes\n */\nexport function getCloudRoleInstance(resource: Resource): string {\n // Kubernetes attributes should take precedence\n const kubernetesPodName = resource.attributes[SEMRESATTRS_K8S_POD_NAME];\n if (kubernetesPodName) {\n return String(kubernetesPodName);\n }\n // Service attributes\n const serviceInstanceId = resource.attributes[SEMRESATTRS_SERVICE_INSTANCE_ID];\n if (serviceInstanceId) {\n return String(serviceInstanceId);\n }\n // Default\n return os && os.hostname();\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/metrics/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Attributes } from \"@opentelemetry/api\";\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { SdkLogRecord } from \"@opentelemetry/sdk-logs\";\nimport {\n SEMATTRS_PEER_SERVICE,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_TYPE,\n DBSYSTEMVALUES_DB2,\n DBSYSTEMVALUES_DERBY,\n DBSYSTEMVALUES_MARIADB,\n DBSYSTEMVALUES_MSSQL,\n DBSYSTEMVALUES_ORACLE,\n DBSYSTEMVALUES_SQLITE,\n DBSYSTEMVALUES_OTHER_SQL,\n DBSYSTEMVALUES_HSQLDB,\n DBSYSTEMVALUES_H2,\n SEMRESATTRS_K8S_DEPLOYMENT_NAME,\n SEMRESATTRS_K8S_REPLICASET_NAME,\n SEMRESATTRS_K8S_STATEFULSET_NAME,\n SEMRESATTRS_K8S_JOB_NAME,\n SEMRESATTRS_K8S_CRONJOB_NAME,\n SEMRESATTRS_K8S_DAEMONSET_NAME,\n SEMRESATTRS_K8S_POD_NAME,\n SEMRESATTRS_SERVICE_INSTANCE_ID,\n SEMRESATTRS_SERVICE_NAME,\n SEMRESATTRS_SERVICE_NAMESPACE,\n} from \"@opentelemetry/semantic-conventions\";\nimport { StandardMetricIds, StandardMetricPropertyNames } from \"./types.js\";\nimport type {\n MetricDependencyDimensions,\n MetricDimensionTypeKeys,\n MetricRequestDimensions,\n StandardMetricBaseDimensions,\n} from \"./types.js\";\nimport type { Resource } from \"@opentelemetry/resources\";\nimport {\n getHttpStatusCode,\n getNetHostPort,\n getNetPeerName,\n getUserAgent,\n} from \"./quickpulse/utils.js\";\nimport { Logger } from \"../shared/logging/logger.js\";\nimport os from \"node:os\";\nimport process from \"node:process\";\nimport { readFileSync } from \"node:fs\";\n\nexport function getRequestDimensions(span: ReadableSpan): Attributes {\n const dimensions: MetricRequestDimensions = getBaseDimensions(span.resource);\n dimensions.metricId = StandardMetricIds.REQUEST_DURATION;\n const statusCode = String(getHttpStatusCode(span.attributes));\n dimensions.requestResultCode = statusCode;\n // OTel treats 4xx request responses as UNSET SpanStatusCode, but we should count them as failed\n dimensions.requestSuccess =\n span.status.code !== SpanStatusCode.ERROR && (Number(statusCode) || 0) < 400 ? \"True\" : \"False\";\n if (isSyntheticLoad(span)) {\n dimensions.operationSynthetic = \"True\";\n }\n return convertDimensions(dimensions);\n}\n\nexport function getDependencyDimensions(span: ReadableSpan): Attributes {\n const dimensions: MetricDependencyDimensions = getBaseDimensions(span.resource);\n dimensions.metricId = StandardMetricIds.DEPENDENCIES_DURATION;\n const statusCode = String(getHttpStatusCode(span.attributes));\n dimensions.dependencyTarget = getDependencyTarget(span.attributes);\n dimensions.dependencyResultCode = statusCode;\n dimensions.dependencyType = \"http\";\n dimensions.dependencySuccess = span.status.code !== SpanStatusCode.ERROR ? \"True\" : \"False\";\n if (isSyntheticLoad(span)) {\n dimensions.operationSynthetic = \"True\";\n }\n return convertDimensions(dimensions);\n}\n\nexport function getExceptionDimensions(resource: Resource): Attributes {\n const dimensions: StandardMetricBaseDimensions = getBaseDimensions(resource);\n dimensions.metricId = StandardMetricIds.EXCEPTIONS_COUNT;\n return dimensions as Attributes;\n}\n\nexport function getTraceDimensions(resource: Resource): Attributes {\n const dimensions: StandardMetricBaseDimensions = getBaseDimensions(resource);\n dimensions.metricId = StandardMetricIds.TRACES_COUNT;\n return dimensions as Attributes;\n}\n\nexport function getBaseDimensions(resource: Resource): StandardMetricBaseDimensions {\n const dimensions: StandardMetricBaseDimensions = {};\n dimensions.IsAutocollected = \"True\";\n if (resource) {\n dimensions.cloudRoleName = getCloudRole(resource);\n dimensions.cloudRoleInstance = getCloudRoleInstance(resource);\n }\n return dimensions;\n}\n\n// Get metric dependency target, avoiding high cardinality.\nexport function getDependencyTarget(attributes: Attributes): string {\n if (!attributes) {\n return \"\";\n }\n const peerService = attributes[SEMATTRS_PEER_SERVICE];\n const hostPort = getNetHostPort(attributes);\n const netPeerName = getNetPeerName(attributes);\n if (peerService) {\n return String(peerService);\n } else if (hostPort && netPeerName) {\n return `${netPeerName}:${hostPort}`;\n } else if (netPeerName) {\n return String(netPeerName);\n }\n return \"\";\n}\n\nexport function isSqlDB(dbSystem: string): boolean {\n return (\n dbSystem === DBSYSTEMVALUES_DB2 ||\n dbSystem === DBSYSTEMVALUES_DERBY ||\n dbSystem === DBSYSTEMVALUES_MARIADB ||\n dbSystem === DBSYSTEMVALUES_MSSQL ||\n dbSystem === DBSYSTEMVALUES_ORACLE ||\n dbSystem === DBSYSTEMVALUES_SQLITE ||\n dbSystem === DBSYSTEMVALUES_OTHER_SQL ||\n dbSystem === DBSYSTEMVALUES_HSQLDB ||\n dbSystem === DBSYSTEMVALUES_H2\n );\n}\n\nexport function isExceptionTelemetry(logRecord: SdkLogRecord): boolean {\n const baseType = logRecord.attributes[\"_MS.baseType\"];\n // If Application Insights Legacy logs\n if (baseType && baseType === \"ExceptionData\") {\n return true;\n } else if (\n logRecord.attributes[SEMATTRS_EXCEPTION_MESSAGE] ||\n logRecord.attributes[SEMATTRS_EXCEPTION_TYPE]\n ) {\n return true;\n }\n return false;\n}\n\nexport function isTraceTelemetry(logRecord: SdkLogRecord): boolean {\n const baseType = logRecord.attributes[\"_MS.baseType\"];\n // If Application Insights Legacy logs\n if (baseType && baseType === \"MessageData\") {\n return true;\n } else if (\n !logRecord.attributes[SEMATTRS_EXCEPTION_MESSAGE] &&\n !logRecord.attributes[SEMATTRS_EXCEPTION_TYPE]\n ) {\n return true;\n }\n return false;\n}\n\nexport function isSyntheticLoad(record: SdkLogRecord | ReadableSpan): boolean {\n const userAgent = String(getUserAgent(record.attributes as Attributes));\n return userAgent !== null && userAgent.includes(\"AlwaysOn\") ? true : false;\n}\n\nexport function convertDimensions(\n dimensions: MetricDependencyDimensions | MetricRequestDimensions,\n): Attributes {\n const convertedDimensions: any = {};\n for (const dim in dimensions) {\n convertedDimensions[StandardMetricPropertyNames[dim as MetricDimensionTypeKeys]] = (\n dimensions as any\n )[dim];\n }\n return convertedDimensions as Attributes;\n}\n\n/**\n * Returns available system memory in bytes.\n * On Linux, reads MemAvailable from /proc/meminfo which accounts for reclaimable\n * memory (page cache, buffers), providing a more accurate measure than os.freemem()\n * which only reports MemFree. Falls back to os.freemem() on other platforms or on error.\n */\nexport function readAvailableMemory(): number {\n if (process.platform === \"linux\") {\n try {\n const contents: string = readFileSync(\"/proc/meminfo\", \"utf8\");\n const match = contents.match(/^MemAvailable:\\s+(\\d+)\\s+kB$/m);\n if (match) {\n return parseInt(match[1], 10) * 1024;\n }\n } catch {\n // Fall through to os.freemem()\n }\n }\n return os.freemem();\n}\n\n// to get physical memory bytes\nexport function getPhysicalMemory(): number {\n if (process?.memoryUsage) {\n return process.memoryUsage.rss();\n } else {\n Logger.getInstance().debug(\"process.memoryUsage is not available\");\n return 0;\n }\n}\n\n// This function can get the normalized cpu, but it assumes that after this function is called,\n// that the process.hrtime.bigint() & process.cpuUsage() are called/stored to be used as the\n// parameters for the next call.\nexport function getProcessorTimeNormalized(\n lastHrTime: bigint,\n lastCpuUsage: NodeJS.CpuUsage,\n): number {\n let numCpus = os.cpus().length;\n const usageDif = process.cpuUsage(lastCpuUsage);\n const elapsedTimeNs = process.hrtime.bigint() - lastHrTime;\n\n const usageDifMs = (usageDif.user + usageDif.system) / 1000.0;\n const elapsedTimeMs = elapsedTimeNs === BigInt(0) ? 1 : Number(elapsedTimeNs) / 1000000.0;\n // just for division safety, don't know a case in which this would actually happen\n numCpus = numCpus === 0 ? 1 : numCpus;\n\n return (usageDifMs / elapsedTimeMs / numCpus) * 100;\n}\n\n// This function can get the cpu %, but it assumes that after this function is called,\n// that the process.hrtime.bigint() & process.cpuUsage() are called/stored to be used as the\n// parameters for the next call.\nexport function getProcessorTime(lastHrTime: bigint, lastCpuUsage: NodeJS.CpuUsage): number {\n if (process?.cpuUsage) {\n const usageDif = process.cpuUsage(lastCpuUsage);\n const elapsedTimeNs = process.hrtime.bigint() - lastHrTime;\n\n const usageDifMs = (usageDif.user + usageDif.system) / 1000.0;\n const elapsedTimeMs = elapsedTimeNs === BigInt(0) ? 1 : Number(elapsedTimeNs) / 1000000.0;\n\n return (usageDifMs / elapsedTimeMs) * 100;\n } else {\n Logger.getInstance().debug(\"process.cpuUsage is not available\");\n return 0;\n }\n}\n\n/**\n * Gets the cloud role name based on the resource attributes\n */\nexport function getCloudRole(resource: Resource): string {\n let cloudRole = \"\";\n // Service attributes\n const serviceName: string = resource.attributes[SEMRESATTRS_SERVICE_NAME] as string;\n const serviceNamespace: string = resource.attributes[SEMRESATTRS_SERVICE_NAMESPACE] as string;\n if (serviceName) {\n // Custom Service name provided by customer is highest precedence\n if (!String(serviceName).startsWith(\"unknown_service\")) {\n if (serviceNamespace) {\n return `${serviceNamespace}.${serviceName}`;\n } else {\n return String(serviceName);\n }\n } else {\n // Service attributes will be only used if K8S attributes are not present\n if (serviceNamespace) {\n cloudRole = `${serviceNamespace}.${serviceName}`;\n } else {\n cloudRole = String(serviceName);\n }\n }\n }\n // Kubernetes attributes should take precedence\n const kubernetesDeploymentName = resource.attributes[SEMRESATTRS_K8S_DEPLOYMENT_NAME];\n if (kubernetesDeploymentName) {\n return String(kubernetesDeploymentName);\n }\n const kuberneteReplicasetName = resource.attributes[SEMRESATTRS_K8S_REPLICASET_NAME];\n if (kuberneteReplicasetName) {\n return String(kuberneteReplicasetName);\n }\n const kubernetesStatefulSetName = resource.attributes[SEMRESATTRS_K8S_STATEFULSET_NAME];\n if (kubernetesStatefulSetName) {\n return String(kubernetesStatefulSetName);\n }\n const kubernetesJobName = resource.attributes[SEMRESATTRS_K8S_JOB_NAME];\n if (kubernetesJobName) {\n return String(kubernetesJobName);\n }\n const kubernetesCronjobName = resource.attributes[SEMRESATTRS_K8S_CRONJOB_NAME];\n if (kubernetesCronjobName) {\n return String(kubernetesCronjobName);\n }\n const kubernetesDaemonsetName = resource.attributes[SEMRESATTRS_K8S_DAEMONSET_NAME];\n if (kubernetesDaemonsetName) {\n return String(kubernetesDaemonsetName);\n }\n return cloudRole;\n}\n\n/**\n * Gets the cloud role instance based on the resource attributes\n */\nexport function getCloudRoleInstance(resource: Resource): string {\n // Kubernetes attributes should take precedence\n const kubernetesPodName = resource.attributes[SEMRESATTRS_K8S_POD_NAME];\n if (kubernetesPodName) {\n return String(kubernetesPodName);\n }\n // Service attributes\n const serviceInstanceId = resource.attributes[SEMRESATTRS_SERVICE_INSTANCE_ID];\n if (serviceInstanceId) {\n return String(serviceInstanceId);\n }\n // Default\n return os && os.hostname();\n}\n"]}
@@ -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;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"}
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;AAWzF;;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"}
@@ -151,7 +151,7 @@ class InternalConfig {
151
151
  resource = resource.merge(envResource);
152
152
  // Load resource attributes from Azure
153
153
  const azureResource = (0, resources_1.detectResources)({
154
- detectors: [resource_detector_azure_1.azureAppServiceDetector, resource_detector_azure_1.azureFunctionsDetector],
154
+ detectors: [resource_detector_azure_1.azureAksDetector, resource_detector_azure_1.azureAppServiceDetector, resource_detector_azure_1.azureFunctionsDetector],
155
155
  });
156
156
  this._resource = resource.merge(azureResource);
157
157
  // Handle 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 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: [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 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,5 +1,5 @@
1
1
  import type { AzureMonitorOpenTelemetryOptions } from "../types.js";
2
- import { Sampler } from "@opentelemetry/sdk-trace-base";
2
+ import type { Sampler } from "@opentelemetry/sdk-trace-base";
3
3
  /**
4
4
  * Azure Monitor OpenTelemetry Client Configuration through Env variables
5
5
  * @internal
@@ -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;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"}
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,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AA6B7D;;;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"}
@@ -1 +1 @@
1
- {"version":3,"file":"envConfig.js","sourceRoot":"","sources":["../../../src/shared/envConfig.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureMonitorOpenTelemetryOptions } from \"../types.js\";\nimport {\n AlwaysOffSampler,\n AlwaysOnSampler,\n ParentBasedSampler,\n Sampler,\n TraceIdRatioBasedSampler,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { Logger } from \"./logging/index.js\";\nconst TRACES_SAMPLER = \"OTEL_TRACES_SAMPLER\";\nconst TRACES_SAMPLER_ARG = \"OTEL_TRACES_SAMPLER_ARG\";\nconst RATE_LIMITED_SAMPLER = \"microsoft.rate_limited\";\nconst FIXED_PERCENTAGE_SAMPLER = \"microsoft.fixed_percentage\";\nconst ALWAYS_ON_SAMPLER = \"always_on\";\nconst ALWAYS_OFF_SAMPLER = \"always_off\";\nconst TRACE_ID_RATIO_SAMPLER = \"trace_id_ratio\";\nconst PARENT_BASED_ALWAYS_ON_SAMPLER = \"parentbased_always_on\";\nconst PARENT_BASED_ALWAYS_OFF_SAMPLER = \"parentbased_always_off\";\nconst PARENT_BASED_TRACE_ID_RATIO_SAMPLER = \"parentbased_trace_id_ratio\";\nconst SUPPORTED_OTEL_SAMPLERS = [\n RATE_LIMITED_SAMPLER,\n FIXED_PERCENTAGE_SAMPLER,\n ALWAYS_ON_SAMPLER,\n ALWAYS_OFF_SAMPLER,\n TRACE_ID_RATIO_SAMPLER,\n PARENT_BASED_ALWAYS_ON_SAMPLER,\n PARENT_BASED_ALWAYS_OFF_SAMPLER,\n PARENT_BASED_TRACE_ID_RATIO_SAMPLER,\n];\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration through Env variables\n * @internal\n */\nexport class EnvConfig 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. (Default undefined)*/\n public tracesPerSecond?: number;\n /** Custom OpenTelemetry sampler derived from env configuration */\n public sampler?: Sampler;\n\n private static instance: EnvConfig;\n\n /** Get Singleton instance */\n public static getInstance(): EnvConfig {\n if (!EnvConfig.instance) {\n EnvConfig.instance = new EnvConfig();\n }\n return EnvConfig.instance;\n }\n\n /**\n * Initializes a new instance of the EnvConfig class.\n */\n constructor() {\n const envSampler = process.env[TRACES_SAMPLER]?.trim().toLowerCase();\n const envSamplerArg = process.env[TRACES_SAMPLER_ARG]?.trim();\n\n if (!envSampler) {\n return;\n }\n\n if (envSampler === RATE_LIMITED_SAMPLER || envSampler === FIXED_PERCENTAGE_SAMPLER) {\n this._applyMicrosoftSampler(envSampler, envSamplerArg);\n return;\n }\n\n this._applyOtelSampler(envSampler, envSamplerArg);\n }\n\n private _applyMicrosoftSampler(envSampler: string, envSamplerArg?: string): void {\n if (envSamplerArg === undefined) {\n return;\n }\n\n const argValue = Number(envSamplerArg);\n if (isNaN(argValue)) {\n Logger.getInstance().warn(\"Invalid value for OTEL_TRACES_SAMPLER_ARG. It must be a number.\");\n return;\n }\n\n if (envSampler === RATE_LIMITED_SAMPLER) {\n this.tracesPerSecond = argValue;\n } else {\n this.samplingRatio = argValue;\n }\n }\n\n private _applyOtelSampler(envSampler: string, envSamplerArg?: string): void {\n switch (envSampler) {\n case ALWAYS_ON_SAMPLER:\n this.sampler = new AlwaysOnSampler();\n this.samplingRatio = 1;\n return;\n case ALWAYS_OFF_SAMPLER:\n this.sampler = new AlwaysOffSampler();\n this.samplingRatio = 0;\n return;\n case TRACE_ID_RATIO_SAMPLER: {\n const ratio = this._parseProbability(envSamplerArg);\n this.sampler = new TraceIdRatioBasedSampler(ratio);\n this.samplingRatio = ratio;\n return;\n }\n case PARENT_BASED_ALWAYS_ON_SAMPLER:\n this.sampler = new ParentBasedSampler({ root: new AlwaysOnSampler() });\n this.samplingRatio = 1;\n return;\n case PARENT_BASED_ALWAYS_OFF_SAMPLER:\n this.sampler = new ParentBasedSampler({ root: new AlwaysOffSampler() });\n this.samplingRatio = 0;\n return;\n case PARENT_BASED_TRACE_ID_RATIO_SAMPLER: {\n const ratio = this._parseProbability(envSamplerArg);\n this.sampler = new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(ratio) });\n this.samplingRatio = ratio;\n return;\n }\n default:\n Logger.getInstance().warn(\n `Unsupported value for OTEL_TRACES_SAMPLER: ${envSampler}. Supported values are: ${SUPPORTED_OTEL_SAMPLERS.join(\", \")}.`,\n );\n }\n }\n\n private _parseProbability(arg?: string): number {\n if (arg === undefined) {\n return 1;\n }\n\n if (arg === \"\") {\n Logger.getInstance().warn(\n \"Invalid value for OTEL_TRACES_SAMPLER_ARG. It should be a number in the range [0,1].\",\n );\n return 1;\n }\n\n const parsed = Number(arg);\n if (isNaN(parsed) || parsed < 0 || parsed > 1) {\n Logger.getInstance().warn(\n \"Invalid value for OTEL_TRACES_SAMPLER_ARG. It should be a number in the range [0,1].\",\n );\n return 1;\n }\n\n return parsed;\n }\n}\n"]}
1
+ {"version":3,"file":"envConfig.js","sourceRoot":"","sources":["../../../src/shared/envConfig.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureMonitorOpenTelemetryOptions } from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport {\n AlwaysOffSampler,\n AlwaysOnSampler,\n ParentBasedSampler,\n TraceIdRatioBasedSampler,\n} from \"@opentelemetry/sdk-trace-base\";\nimport { Logger } from \"./logging/index.js\";\nconst TRACES_SAMPLER = \"OTEL_TRACES_SAMPLER\";\nconst TRACES_SAMPLER_ARG = \"OTEL_TRACES_SAMPLER_ARG\";\nconst RATE_LIMITED_SAMPLER = \"microsoft.rate_limited\";\nconst FIXED_PERCENTAGE_SAMPLER = \"microsoft.fixed_percentage\";\nconst ALWAYS_ON_SAMPLER = \"always_on\";\nconst ALWAYS_OFF_SAMPLER = \"always_off\";\nconst TRACE_ID_RATIO_SAMPLER = \"trace_id_ratio\";\nconst PARENT_BASED_ALWAYS_ON_SAMPLER = \"parentbased_always_on\";\nconst PARENT_BASED_ALWAYS_OFF_SAMPLER = \"parentbased_always_off\";\nconst PARENT_BASED_TRACE_ID_RATIO_SAMPLER = \"parentbased_trace_id_ratio\";\nconst SUPPORTED_OTEL_SAMPLERS = [\n RATE_LIMITED_SAMPLER,\n FIXED_PERCENTAGE_SAMPLER,\n ALWAYS_ON_SAMPLER,\n ALWAYS_OFF_SAMPLER,\n TRACE_ID_RATIO_SAMPLER,\n PARENT_BASED_ALWAYS_ON_SAMPLER,\n PARENT_BASED_ALWAYS_OFF_SAMPLER,\n PARENT_BASED_TRACE_ID_RATIO_SAMPLER,\n];\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration through Env variables\n * @internal\n */\nexport class EnvConfig 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. (Default undefined)*/\n public tracesPerSecond?: number;\n /** Custom OpenTelemetry sampler derived from env configuration */\n public sampler?: Sampler;\n\n private static instance: EnvConfig;\n\n /** Get Singleton instance */\n public static getInstance(): EnvConfig {\n if (!EnvConfig.instance) {\n EnvConfig.instance = new EnvConfig();\n }\n return EnvConfig.instance;\n }\n\n /**\n * Initializes a new instance of the EnvConfig class.\n */\n constructor() {\n const envSampler = process.env[TRACES_SAMPLER]?.trim().toLowerCase();\n const envSamplerArg = process.env[TRACES_SAMPLER_ARG]?.trim();\n\n if (!envSampler) {\n return;\n }\n\n if (envSampler === RATE_LIMITED_SAMPLER || envSampler === FIXED_PERCENTAGE_SAMPLER) {\n this._applyMicrosoftSampler(envSampler, envSamplerArg);\n return;\n }\n\n this._applyOtelSampler(envSampler, envSamplerArg);\n }\n\n private _applyMicrosoftSampler(envSampler: string, envSamplerArg?: string): void {\n if (envSamplerArg === undefined) {\n return;\n }\n\n const argValue = Number(envSamplerArg);\n if (isNaN(argValue)) {\n Logger.getInstance().warn(\"Invalid value for OTEL_TRACES_SAMPLER_ARG. It must be a number.\");\n return;\n }\n\n if (envSampler === RATE_LIMITED_SAMPLER) {\n this.tracesPerSecond = argValue;\n } else {\n this.samplingRatio = argValue;\n }\n }\n\n private _applyOtelSampler(envSampler: string, envSamplerArg?: string): void {\n switch (envSampler) {\n case ALWAYS_ON_SAMPLER:\n this.sampler = new AlwaysOnSampler();\n this.samplingRatio = 1;\n return;\n case ALWAYS_OFF_SAMPLER:\n this.sampler = new AlwaysOffSampler();\n this.samplingRatio = 0;\n return;\n case TRACE_ID_RATIO_SAMPLER: {\n const ratio = this._parseProbability(envSamplerArg);\n this.sampler = new TraceIdRatioBasedSampler(ratio);\n this.samplingRatio = ratio;\n return;\n }\n case PARENT_BASED_ALWAYS_ON_SAMPLER:\n this.sampler = new ParentBasedSampler({ root: new AlwaysOnSampler() });\n this.samplingRatio = 1;\n return;\n case PARENT_BASED_ALWAYS_OFF_SAMPLER:\n this.sampler = new ParentBasedSampler({ root: new AlwaysOffSampler() });\n this.samplingRatio = 0;\n return;\n case PARENT_BASED_TRACE_ID_RATIO_SAMPLER: {\n const ratio = this._parseProbability(envSamplerArg);\n this.sampler = new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(ratio) });\n this.samplingRatio = ratio;\n return;\n }\n default:\n Logger.getInstance().warn(\n `Unsupported value for OTEL_TRACES_SAMPLER: ${envSampler}. Supported values are: ${SUPPORTED_OTEL_SAMPLERS.join(\", \")}.`,\n );\n }\n }\n\n private _parseProbability(arg?: string): number {\n if (arg === undefined) {\n return 1;\n }\n\n if (arg === \"\") {\n Logger.getInstance().warn(\n \"Invalid value for OTEL_TRACES_SAMPLER_ARG. It should be a number in the range [0,1].\",\n );\n return 1;\n }\n\n const parsed = Number(arg);\n if (isNaN(parsed) || parsed < 0 || parsed > 1) {\n Logger.getInstance().warn(\n \"Invalid value for OTEL_TRACES_SAMPLER_ARG. It should be a number in the range [0,1].\",\n );\n return 1;\n }\n\n return parsed;\n }\n}\n"]}