@azure/monitor-opentelemetry 1.18.0 → 1.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +5 -1
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/metrics/handler.d.ts.map +1 -1
- package/dist/commonjs/metrics/handler.js +2 -3
- package/dist/commonjs/metrics/handler.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/export/sender.d.ts +10 -1
- package/dist/commonjs/metrics/quickpulse/export/sender.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/export/sender.js +37 -15
- package/dist/commonjs/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/filtering/filter.js +2 -5
- package/dist/commonjs/metrics/quickpulse/filtering/filter.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts +4 -2
- package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/liveMetrics.js +71 -16
- package/dist/commonjs/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/redirectUtils.d.ts +28 -0
- package/dist/commonjs/metrics/quickpulse/redirectUtils.d.ts.map +1 -0
- package/dist/commonjs/metrics/quickpulse/redirectUtils.js +80 -0
- package/dist/commonjs/metrics/quickpulse/redirectUtils.js.map +1 -0
- package/dist/commonjs/metrics/quickpulse/utils.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/utils.js.map +1 -1
- package/dist/commonjs/metrics/standardMetrics.js.map +1 -1
- package/dist/commonjs/traces/handler.d.ts +12 -0
- package/dist/commonjs/traces/handler.d.ts.map +1 -1
- package/dist/commonjs/traces/handler.js +30 -1
- package/dist/commonjs/traces/handler.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/types.d.ts +1 -1
- package/dist/commonjs/types.js +1 -1
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/utils/azureSdkTracingBridge.d.ts +18 -0
- package/dist/commonjs/utils/azureSdkTracingBridge.d.ts.map +1 -0
- package/dist/commonjs/utils/azureSdkTracingBridge.js +35 -0
- package/dist/commonjs/utils/azureSdkTracingBridge.js.map +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/metrics/handler.d.ts.map +1 -1
- package/dist/esm/metrics/handler.js +2 -3
- package/dist/esm/metrics/handler.js.map +1 -1
- package/dist/esm/metrics/quickpulse/export/sender.d.ts +10 -1
- package/dist/esm/metrics/quickpulse/export/sender.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/export/sender.js +37 -15
- package/dist/esm/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist/esm/metrics/quickpulse/filtering/filter.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/filtering/filter.js +2 -5
- package/dist/esm/metrics/quickpulse/filtering/filter.js.map +1 -1
- package/dist/esm/metrics/quickpulse/liveMetrics.d.ts +4 -2
- package/dist/esm/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/liveMetrics.js +71 -16
- package/dist/esm/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/esm/metrics/quickpulse/redirectUtils.d.ts +28 -0
- package/dist/esm/metrics/quickpulse/redirectUtils.d.ts.map +1 -0
- package/dist/esm/metrics/quickpulse/redirectUtils.js +76 -0
- package/dist/esm/metrics/quickpulse/redirectUtils.js.map +1 -0
- package/dist/esm/metrics/quickpulse/utils.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/utils.js.map +1 -1
- package/dist/esm/metrics/standardMetrics.js.map +1 -1
- package/dist/esm/traces/handler.d.ts +12 -0
- package/dist/esm/traces/handler.d.ts.map +1 -1
- package/dist/esm/traces/handler.js +29 -1
- package/dist/esm/traces/handler.js.map +1 -1
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/types.js +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/azureSdkTracingBridge.d.ts +18 -0
- package/dist/esm/utils/azureSdkTracingBridge.d.ts.map +1 -0
- package/dist/esm/utils/azureSdkTracingBridge.js +34 -0
- package/dist/esm/utils/azureSdkTracingBridge.js.map +1 -0
- package/package.json +29 -20
|
@@ -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 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
|
+
{"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 key.startsWith(\"_MS.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any)\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.js","sourceRoot":"","sources":["../../../src/metrics/standardMetrics.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAG1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,OAAO,CAAiB;IACxB,mBAAmB,GAAG,KAAK,CAAC,CAAC,aAAa;IAC1C,cAAc,CAAgB;IAC9B,cAAc,CAA6B;IAC3C,aAAa,CAAgC;IAC7C,MAAM,CAAQ;IACd,iCAAiC,CAAY;IAC7C,iCAAiC,CAAY;IAC7C,kBAAkB,CAAU;IAC5B,cAAc,CAAU;IAEhC;;;;OAIG;IACH,YAAY,MAAsB,EAAE,OAAwC;QAC1E,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC/F,MAAM,mBAAmB,GAAyC;YAChE,QAAQ,EAAE,IAAI,CAAC,
|
|
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,\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"]}
|
|
@@ -34,5 +34,17 @@ export declare class TraceHandler {
|
|
|
34
34
|
* Start auto collection of telemetry
|
|
35
35
|
*/
|
|
36
36
|
private _initializeInstrumentations;
|
|
37
|
+
/**
|
|
38
|
+
* Wire the Azure SDK instrumenter into `@azure/core-tracing` directly.
|
|
39
|
+
*
|
|
40
|
+
* The Azure SDK instrumentation registers its instrumenter through an OpenTelemetry
|
|
41
|
+
* module-patch hook that only fires via `require`/`import`-in-the-middle. In ESM hosts
|
|
42
|
+
* where the OpenTelemetry loader cannot be registered up front (for example, Azure
|
|
43
|
+
* Functions, which controls the Node.js start command), that hook never runs, so Azure
|
|
44
|
+
* SDK dependency spans are missing. Because `@azure/core-tracing` resolves its
|
|
45
|
+
* instrumenter lazily at span-creation time from shared module-local state, applying
|
|
46
|
+
* the same patch directly here enables Azure SDK tracing regardless of module system.
|
|
47
|
+
*/
|
|
48
|
+
private _wireAzureSdkInstrumenter;
|
|
37
49
|
}
|
|
38
50
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/traces/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/traces/handler.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAgB,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAWnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AAIxC;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAU;IAE1B;;;;OAIG;gBACS,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IA2BzD,UAAU,IAAI,OAAO;IAIrB,qBAAqB,IAAI,kBAAkB;IAI3C,4BAA4B,IAAI,yBAAyB;IAIzD,mBAAmB,IAAI,eAAe,EAAE;IAI/C;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAwDnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,yBAAyB;CAiBlC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { createAzureSdkInstrumentation } from "@azure/opentelemetry-instrumentation-azure-sdk";
|
|
4
|
+
import * as coreTracing from "@azure/core-tracing";
|
|
4
5
|
import { AzureMonitorTraceExporter, RateLimitedSampler, } from "@azure/monitor-opentelemetry-exporter";
|
|
5
6
|
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
6
7
|
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
|
|
@@ -12,6 +13,7 @@ import { ignoreOutgoingRequestHook } from "../utils/common.js";
|
|
|
12
13
|
import { AzureMonitorSpanProcessor } from "./spanProcessor.js";
|
|
13
14
|
import { AzureFunctionsHook } from "./azureFnHook.js";
|
|
14
15
|
import { ApplicationInsightsSampler } from "./sampler.js";
|
|
16
|
+
import { Logger } from "../shared/logging/index.js";
|
|
15
17
|
/**
|
|
16
18
|
* Azure Monitor OpenTelemetry Trace Handler
|
|
17
19
|
*/
|
|
@@ -101,7 +103,9 @@ export class TraceHandler {
|
|
|
101
103
|
this._instrumentations.push(new HttpInstrumentation(this._config.instrumentationOptions.http));
|
|
102
104
|
}
|
|
103
105
|
if (this._config.instrumentationOptions.azureSdk?.enabled) {
|
|
104
|
-
|
|
106
|
+
const azureSdkInstrumentation = createAzureSdkInstrumentation(this._config.instrumentationOptions.azureSdk);
|
|
107
|
+
this._instrumentations.push(azureSdkInstrumentation);
|
|
108
|
+
this._wireAzureSdkInstrumenter(azureSdkInstrumentation);
|
|
105
109
|
}
|
|
106
110
|
if (this._config.instrumentationOptions.mongoDb?.enabled) {
|
|
107
111
|
this._instrumentations.push(new MongoDBInstrumentation(this._config.instrumentationOptions.mongoDb));
|
|
@@ -117,5 +121,29 @@ export class TraceHandler {
|
|
|
117
121
|
this._instrumentations.push(new RedisInstrumentation(this._config.instrumentationOptions.redis));
|
|
118
122
|
}
|
|
119
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Wire the Azure SDK instrumenter into `@azure/core-tracing` directly.
|
|
126
|
+
*
|
|
127
|
+
* The Azure SDK instrumentation registers its instrumenter through an OpenTelemetry
|
|
128
|
+
* module-patch hook that only fires via `require`/`import`-in-the-middle. In ESM hosts
|
|
129
|
+
* where the OpenTelemetry loader cannot be registered up front (for example, Azure
|
|
130
|
+
* Functions, which controls the Node.js start command), that hook never runs, so Azure
|
|
131
|
+
* SDK dependency spans are missing. Because `@azure/core-tracing` resolves its
|
|
132
|
+
* instrumenter lazily at span-creation time from shared module-local state, applying
|
|
133
|
+
* the same patch directly here enables Azure SDK tracing regardless of module system.
|
|
134
|
+
*/
|
|
135
|
+
_wireAzureSdkInstrumenter(instrumentation) {
|
|
136
|
+
try {
|
|
137
|
+
const moduleDefinitions = instrumentation.getModuleDefinitions?.() ?? [];
|
|
138
|
+
for (const moduleDefinition of moduleDefinitions) {
|
|
139
|
+
if (moduleDefinition.name === "@azure/core-tracing" && moduleDefinition.patch) {
|
|
140
|
+
moduleDefinition.patch(coreTracing);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
Logger.getInstance().warn("Failed to enable Azure SDK tracing for ESM applications", error);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
120
148
|
}
|
|
121
149
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/traces/handler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { RequestOptions } from \"node:http\";\nimport { createAzureSdkInstrumentation } from \"@azure/opentelemetry-instrumentation-azure-sdk\";\nimport {\n AzureMonitorTraceExporter,\n RateLimitedSampler,\n} from \"@azure/monitor-opentelemetry-exporter\";\nimport type { BufferConfig, Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport { BatchSpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport type {\n HttpInstrumentationConfig,\n IgnoreOutgoingRequestFunction,\n} from \"@opentelemetry/instrumentation-http\";\nimport { HttpInstrumentation } from \"@opentelemetry/instrumentation-http\";\nimport { MongoDBInstrumentation } from \"@opentelemetry/instrumentation-mongodb\";\nimport { MySQLInstrumentation } from \"@opentelemetry/instrumentation-mysql\";\nimport { PgInstrumentation } from \"@opentelemetry/instrumentation-pg\";\nimport { RedisInstrumentation } from \"@opentelemetry/instrumentation-redis\";\n\nimport type { InternalConfig } from \"../shared/config.js\";\nimport type { MetricHandler } from \"../metrics/handler.js\";\nimport { ignoreOutgoingRequestHook } from \"../utils/common.js\";\nimport { AzureMonitorSpanProcessor } from \"./spanProcessor.js\";\nimport { AzureFunctionsHook } from \"./azureFnHook.js\";\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport { ApplicationInsightsSampler } from \"./sampler.js\";\n\n/**\n * Azure Monitor OpenTelemetry Trace Handler\n */\nexport class TraceHandler {\n private _batchSpanProcessor: BatchSpanProcessor;\n private _azureSpanProcessor: AzureMonitorSpanProcessor;\n private _azureExporter: AzureMonitorTraceExporter;\n private _instrumentations: Instrumentation[];\n private _config: InternalConfig;\n private _metricHandler: MetricHandler;\n private _azureFunctionsHook: AzureFunctionsHook;\n private _sampler: Sampler;\n\n /**\n * Initializes a new instance of the TraceHandler class.\n * @param _config - Configuration.\n * @param _metricHandler - MetricHandler.\n */\n constructor(config: InternalConfig, metricHandler: MetricHandler) {\n this._config = config;\n this._metricHandler = metricHandler;\n this._instrumentations = [];\n // Check sampler precedence\n if (this._config.sampler) {\n this._sampler = this._config.sampler;\n } else if (this._config.tracesPerSecond && this._config.tracesPerSecond > 0) {\n // If tracesPerSecond is set to a positive number, use RateLimitedSampler\n this._sampler = new RateLimitedSampler(this._config.tracesPerSecond);\n } else {\n // Otherwise, use PercentageSampler with samplingRatio\n this._sampler = new ApplicationInsightsSampler(this._config.samplingRatio);\n }\n this._azureExporter = new AzureMonitorTraceExporter(this._config.azureMonitorExporterOptions);\n const bufferConfig: BufferConfig = {\n maxExportBatchSize: 512,\n scheduledDelayMillis: 5000,\n exportTimeoutMillis: 30000,\n maxQueueSize: 2048,\n };\n this._batchSpanProcessor = new BatchSpanProcessor(this._azureExporter, bufferConfig);\n this._azureSpanProcessor = new AzureMonitorSpanProcessor(this._metricHandler);\n this._azureFunctionsHook = new AzureFunctionsHook();\n this._initializeInstrumentations();\n }\n\n public getSampler(): Sampler {\n return this._sampler;\n }\n\n public getBatchSpanProcessor(): BatchSpanProcessor {\n return this._batchSpanProcessor;\n }\n\n public getAzureMonitorSpanProcessor(): AzureMonitorSpanProcessor {\n return this._azureSpanProcessor;\n }\n\n public getInstrumentations(): Instrumentation[] {\n return this._instrumentations;\n }\n\n /**\n * Shutdown handler\n */\n public async shutdown(): Promise<void> {\n this._azureFunctionsHook.shutdown();\n await this._batchSpanProcessor.shutdown();\n await this._azureSpanProcessor.shutdown();\n await this._azureExporter.shutdown();\n }\n\n /**\n * Start auto collection of telemetry\n */\n private _initializeInstrumentations(): void {\n if (this._config.instrumentationOptions.http?.enabled) {\n const httpinstrumentationOptions = this._config.instrumentationOptions\n .http as HttpInstrumentationConfig;\n const providedIgnoreOutgoingRequestHook =\n httpinstrumentationOptions.ignoreOutgoingRequestHook;\n const mergedIgnoreOutgoingRequestHook: IgnoreOutgoingRequestFunction = (\n request: RequestOptions,\n ) => {\n const result = ignoreOutgoingRequestHook(request);\n if (!result) {\n // Not internal call\n if (providedIgnoreOutgoingRequestHook) {\n // Provided hook in config\n return providedIgnoreOutgoingRequestHook(request);\n }\n }\n return result;\n };\n httpinstrumentationOptions.ignoreOutgoingRequestHook = mergedIgnoreOutgoingRequestHook;\n this._instrumentations.push(\n new HttpInstrumentation(this._config.instrumentationOptions.http),\n );\n }\n if (this._config.instrumentationOptions.azureSdk?.enabled) {\n this._instrumentations.push(\n createAzureSdkInstrumentation(this._config.instrumentationOptions.azureSdk),\n );\n }\n if (this._config.instrumentationOptions.mongoDb?.enabled) {\n this._instrumentations.push(\n new MongoDBInstrumentation(this._config.instrumentationOptions.mongoDb),\n );\n }\n if (this._config.instrumentationOptions.mySql?.enabled) {\n this._instrumentations.push(\n new MySQLInstrumentation(this._config.instrumentationOptions.mySql),\n );\n }\n if (this._config.instrumentationOptions.postgreSql?.enabled) {\n this._instrumentations.push(\n new PgInstrumentation(this._config.instrumentationOptions.postgreSql),\n );\n }\n if (\n this._config.instrumentationOptions.redis?.enabled ||\n this._config.instrumentationOptions.redis4?.enabled\n ) {\n this._instrumentations.push(\n new RedisInstrumentation(this._config.instrumentationOptions.redis),\n );\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/traces/handler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { RequestOptions } from \"node:http\";\nimport { createAzureSdkInstrumentation } from \"@azure/opentelemetry-instrumentation-azure-sdk\";\nimport * as coreTracing from \"@azure/core-tracing\";\nimport {\n AzureMonitorTraceExporter,\n RateLimitedSampler,\n} from \"@azure/monitor-opentelemetry-exporter\";\nimport type { BufferConfig, Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport { BatchSpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport type {\n HttpInstrumentationConfig,\n IgnoreOutgoingRequestFunction,\n} from \"@opentelemetry/instrumentation-http\";\nimport { HttpInstrumentation } from \"@opentelemetry/instrumentation-http\";\nimport { MongoDBInstrumentation } from \"@opentelemetry/instrumentation-mongodb\";\nimport { MySQLInstrumentation } from \"@opentelemetry/instrumentation-mysql\";\nimport { PgInstrumentation } from \"@opentelemetry/instrumentation-pg\";\nimport { RedisInstrumentation } from \"@opentelemetry/instrumentation-redis\";\n\nimport type { InternalConfig } from \"../shared/config.js\";\nimport type { MetricHandler } from \"../metrics/handler.js\";\nimport { ignoreOutgoingRequestHook } from \"../utils/common.js\";\nimport { AzureMonitorSpanProcessor } from \"./spanProcessor.js\";\nimport { AzureFunctionsHook } from \"./azureFnHook.js\";\nimport type {\n Instrumentation,\n InstrumentationModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\nimport { ApplicationInsightsSampler } from \"./sampler.js\";\nimport { Logger } from \"../shared/logging/index.js\";\n\n/**\n * Azure Monitor OpenTelemetry Trace Handler\n */\nexport class TraceHandler {\n private _batchSpanProcessor: BatchSpanProcessor;\n private _azureSpanProcessor: AzureMonitorSpanProcessor;\n private _azureExporter: AzureMonitorTraceExporter;\n private _instrumentations: Instrumentation[];\n private _config: InternalConfig;\n private _metricHandler: MetricHandler;\n private _azureFunctionsHook: AzureFunctionsHook;\n private _sampler: Sampler;\n\n /**\n * Initializes a new instance of the TraceHandler class.\n * @param _config - Configuration.\n * @param _metricHandler - MetricHandler.\n */\n constructor(config: InternalConfig, metricHandler: MetricHandler) {\n this._config = config;\n this._metricHandler = metricHandler;\n this._instrumentations = [];\n // Check sampler precedence\n if (this._config.sampler) {\n this._sampler = this._config.sampler;\n } else if (this._config.tracesPerSecond && this._config.tracesPerSecond > 0) {\n // If tracesPerSecond is set to a positive number, use RateLimitedSampler\n this._sampler = new RateLimitedSampler(this._config.tracesPerSecond);\n } else {\n // Otherwise, use PercentageSampler with samplingRatio\n this._sampler = new ApplicationInsightsSampler(this._config.samplingRatio);\n }\n this._azureExporter = new AzureMonitorTraceExporter(this._config.azureMonitorExporterOptions);\n const bufferConfig: BufferConfig = {\n maxExportBatchSize: 512,\n scheduledDelayMillis: 5000,\n exportTimeoutMillis: 30000,\n maxQueueSize: 2048,\n };\n this._batchSpanProcessor = new BatchSpanProcessor(this._azureExporter, bufferConfig);\n this._azureSpanProcessor = new AzureMonitorSpanProcessor(this._metricHandler);\n this._azureFunctionsHook = new AzureFunctionsHook();\n this._initializeInstrumentations();\n }\n\n public getSampler(): Sampler {\n return this._sampler;\n }\n\n public getBatchSpanProcessor(): BatchSpanProcessor {\n return this._batchSpanProcessor;\n }\n\n public getAzureMonitorSpanProcessor(): AzureMonitorSpanProcessor {\n return this._azureSpanProcessor;\n }\n\n public getInstrumentations(): Instrumentation[] {\n return this._instrumentations;\n }\n\n /**\n * Shutdown handler\n */\n public async shutdown(): Promise<void> {\n this._azureFunctionsHook.shutdown();\n await this._batchSpanProcessor.shutdown();\n await this._azureSpanProcessor.shutdown();\n await this._azureExporter.shutdown();\n }\n\n /**\n * Start auto collection of telemetry\n */\n private _initializeInstrumentations(): void {\n if (this._config.instrumentationOptions.http?.enabled) {\n const httpinstrumentationOptions = this._config.instrumentationOptions\n .http as HttpInstrumentationConfig;\n const providedIgnoreOutgoingRequestHook =\n httpinstrumentationOptions.ignoreOutgoingRequestHook;\n const mergedIgnoreOutgoingRequestHook: IgnoreOutgoingRequestFunction = (\n request: RequestOptions,\n ) => {\n const result = ignoreOutgoingRequestHook(request);\n if (!result) {\n // Not internal call\n if (providedIgnoreOutgoingRequestHook) {\n // Provided hook in config\n return providedIgnoreOutgoingRequestHook(request);\n }\n }\n return result;\n };\n httpinstrumentationOptions.ignoreOutgoingRequestHook = mergedIgnoreOutgoingRequestHook;\n this._instrumentations.push(\n new HttpInstrumentation(this._config.instrumentationOptions.http),\n );\n }\n if (this._config.instrumentationOptions.azureSdk?.enabled) {\n const azureSdkInstrumentation = createAzureSdkInstrumentation(\n this._config.instrumentationOptions.azureSdk,\n );\n this._instrumentations.push(azureSdkInstrumentation);\n this._wireAzureSdkInstrumenter(azureSdkInstrumentation);\n }\n if (this._config.instrumentationOptions.mongoDb?.enabled) {\n this._instrumentations.push(\n new MongoDBInstrumentation(this._config.instrumentationOptions.mongoDb),\n );\n }\n if (this._config.instrumentationOptions.mySql?.enabled) {\n this._instrumentations.push(\n new MySQLInstrumentation(this._config.instrumentationOptions.mySql),\n );\n }\n if (this._config.instrumentationOptions.postgreSql?.enabled) {\n this._instrumentations.push(\n new PgInstrumentation(this._config.instrumentationOptions.postgreSql),\n );\n }\n if (\n this._config.instrumentationOptions.redis?.enabled ||\n this._config.instrumentationOptions.redis4?.enabled\n ) {\n this._instrumentations.push(\n new RedisInstrumentation(this._config.instrumentationOptions.redis),\n );\n }\n }\n\n /**\n * Wire the Azure SDK instrumenter into `@azure/core-tracing` directly.\n *\n * The Azure SDK instrumentation registers its instrumenter through an OpenTelemetry\n * module-patch hook that only fires via `require`/`import`-in-the-middle. In ESM hosts\n * where the OpenTelemetry loader cannot be registered up front (for example, Azure\n * Functions, which controls the Node.js start command), that hook never runs, so Azure\n * SDK dependency spans are missing. Because `@azure/core-tracing` resolves its\n * instrumenter lazily at span-creation time from shared module-local state, applying\n * the same patch directly here enables Azure SDK tracing regardless of module system.\n */\n private _wireAzureSdkInstrumenter(instrumentation: Instrumentation): void {\n try {\n const moduleDefinitions =\n (\n instrumentation as Instrumentation & {\n getModuleDefinitions?: () => InstrumentationModuleDefinition[];\n }\n ).getModuleDefinitions?.() ?? [];\n for (const moduleDefinition of moduleDefinitions) {\n if (moduleDefinition.name === \"@azure/core-tracing\" && moduleDefinition.patch) {\n moduleDefinition.patch(coreTracing);\n }\n }\n } catch (error) {\n Logger.getInstance().warn(\"Failed to enable Azure SDK tracing for ESM applications\", error);\n }\n }\n}\n"]}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -140,7 +140,7 @@ export interface BrowserSdkLoaderOptions {
|
|
|
140
140
|
/** Browser SDK Loader Connection String */
|
|
141
141
|
connectionString?: string;
|
|
142
142
|
}
|
|
143
|
-
export declare const AZURE_MONITOR_OPENTELEMETRY_VERSION = "1.18.
|
|
143
|
+
export declare const AZURE_MONITOR_OPENTELEMETRY_VERSION = "1.18.2";
|
|
144
144
|
export declare const AZURE_MONITOR_STATSBEAT_FEATURES = "AZURE_MONITOR_STATSBEAT_FEATURES";
|
|
145
145
|
export declare const AZURE_MONITOR_PREFIX = "AZURE_MONITOR_PREFIX";
|
|
146
146
|
export declare const AZURE_MONITOR_AUTO_ATTACH = "AZURE_MONITOR_AUTO_ATTACH";
|
package/dist/esm/types.js
CHANGED
|
@@ -13,7 +13,7 @@ export const StatsbeatFeaturesMap = new Map([
|
|
|
13
13
|
["multiIkey", 128],
|
|
14
14
|
["aksResourceDetectorPopulation", 256],
|
|
15
15
|
]);
|
|
16
|
-
export const AZURE_MONITOR_OPENTELEMETRY_VERSION = "1.18.
|
|
16
|
+
export const AZURE_MONITOR_OPENTELEMETRY_VERSION = "1.18.2";
|
|
17
17
|
export const AZURE_MONITOR_STATSBEAT_FEATURES = "AZURE_MONITOR_STATSBEAT_FEATURES";
|
|
18
18
|
export const AZURE_MONITOR_PREFIX = "AZURE_MONITOR_PREFIX";
|
|
19
19
|
export const AZURE_MONITOR_AUTO_ATTACH = "AZURE_MONITOR_AUTO_ATTACH";
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { InstrumentationConfig } from \"@opentelemetry/instrumentation\";\nimport type { Resource } from \"@opentelemetry/resources\";\nimport type { LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport type { MetricReader, ViewOptions } from \"@opentelemetry/sdk-metrics\";\nimport type { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\n\n/**\n * Azure Monitor OpenTelemetry Options\n */\nexport interface AzureMonitorOpenTelemetryOptions {\n /** Azure Monitor Exporter Configuration */\n azureMonitorExporterOptions?: AzureMonitorExporterOptions;\n /** OpenTelemetry Resource */\n resource?: Resource;\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n samplingRatio?: number;\n /** The maximum number of traces to sample per second (Default 5). Set to 0 to use samplingRatio instead. */\n tracesPerSecond?: number;\n /** Enable Live Metrics feature (Default false)*/\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature (Default true)*/\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** OpenTelemetry Instrumentations options included as part of Azure Monitor. See {@link InstrumentationOptions} for the full set of supported instrumentations. */\n instrumentationOptions?: InstrumentationOptions;\n /** Application Insights Web Instrumentation options (enabled, connectionString, src, config)*/\n browserSdkLoaderOptions?: BrowserSdkLoaderOptions;\n /** An array of log record processors to register to the logger provider.*/\n logRecordProcessors?: LogRecordProcessor[];\n /** An array of span processors to register to the tracer provider.*/\n spanProcessors?: SpanProcessor[];\n /** An array of metric readers to register to the meter provider.*/\n metricReaders?: MetricReader[];\n /** An array of metric views to register to the meter provider.*/\n views?: ViewOptions[];\n}\n\n/**\n * OpenTelemetry Instrumentations Configuration interface\n */\nexport interface InstrumentationOptions {\n /** Azure SDK Instrumentation Config */\n azureSdk?: InstrumentationConfig;\n /** HTTP Instrumentation Config */\n http?: InstrumentationConfig;\n /** MongoDB Instrumentation Config */\n mongoDb?: InstrumentationConfig;\n /** MySQL Instrumentation Config */\n mySql?: InstrumentationConfig;\n /** PostgreSql Instrumentation Config */\n postgreSql?: InstrumentationConfig;\n /** Redis Instrumentation Config */\n redis?: InstrumentationConfig;\n /** Redis4 Instrumentation Config */\n redis4?: InstrumentationConfig;\n /** Bunyan Instrumentation Config */\n bunyan?: InstrumentationConfig;\n /** Winston Instrumentation Config */\n winston?: InstrumentationConfig;\n}\n\n/**\n * Statsbeat Features Configuration interface\n * @internal\n */\nexport interface StatsbeatFeatures {\n diskRetry?: boolean;\n aadHandling?: boolean;\n browserSdkLoader?: boolean;\n distro?: boolean;\n liveMetrics?: boolean;\n shim?: boolean;\n customerSdkStats?: boolean;\n multiIkey?: boolean;\n aksResourceDetectorPopulation?: boolean;\n}\n\n/**\n * Statsbeat Features Mapping\n * @internal\n */\nexport const StatsbeatFeaturesMap = new Map<string, number>([\n [\"diskRetry\", 1],\n [\"aadHandling\", 2],\n [\"browserSdkLoader\", 4],\n [\"distro\", 8],\n [\"liveMetrics\", 16],\n [\"shim\", 32],\n [\"customerSdkStats\", 64],\n [\"multiIkey\", 128],\n [\"aksResourceDetectorPopulation\", 256],\n]);\n\n/**\n * Statsbeat Instrumentations Configuration interface\n * @internal\n */\nexport interface StatsbeatInstrumentations {\n /** Azure Monitor Supported Instrumentations */\n azureSdk?: boolean;\n mongoDb?: boolean;\n mySql?: boolean;\n postgreSql?: boolean;\n redis?: boolean;\n bunyan?: boolean;\n winston?: boolean;\n /** OpenTelemetry Community Instrumentations */\n amqplib?: boolean;\n cucumber?: boolean;\n dataloader?: boolean;\n fs?: boolean;\n lruMemoizer?: boolean;\n mongoose?: boolean;\n runtimeNode?: boolean;\n socketIo?: boolean;\n tedious?: boolean;\n undici?: boolean;\n cassandra?: boolean;\n connect?: boolean;\n dns?: boolean;\n express?: boolean;\n fastify?: boolean;\n genericPool?: boolean;\n graphql?: boolean;\n hapi?: boolean;\n ioredis?: boolean;\n knex?: boolean;\n koa?: boolean;\n memcached?: boolean;\n mysql2?: boolean;\n nestjsCore?: boolean;\n net?: boolean;\n pino?: boolean;\n restify?: boolean;\n router?: boolean;\n}\n\n/**\n * Statsbeat Instrumentation and Feature Option interface\n * @internal\n */\nexport interface StatsbeatOption {\n option: string;\n value: boolean;\n}\n\n/**\n * Application Insights Web Instrumentation Configuration interface\n */\nexport interface BrowserSdkLoaderOptions {\n /** Browser SDK Loader Enable */\n enabled?: boolean;\n /** Browser SDK Loader Connection String */\n connectionString?: string;\n}\n\nexport const AZURE_MONITOR_OPENTELEMETRY_VERSION = \"1.18.0\";\nexport const AZURE_MONITOR_STATSBEAT_FEATURES = \"AZURE_MONITOR_STATSBEAT_FEATURES\";\nexport const AZURE_MONITOR_PREFIX = \"AZURE_MONITOR_PREFIX\";\nexport const AZURE_MONITOR_AUTO_ATTACH = \"AZURE_MONITOR_AUTO_ATTACH\";\nexport const APPLICATION_INSIGHTS_SHIM_VERSION = \"APPLICATION_INSIGHTS_SHIM_VERSION\";\n\nexport enum AttachTypePrefix {\n INTEGRATED_AUTO = \"i\",\n MANUAL = \"m\",\n}\n\n/**\n * Default Browser SDK Loader Source\n * @internal\n */\nexport const BROWSER_SDK_LOADER_DEFAULT_SOURCE = \"https://js.monitor.azure.com/scripts/b/ai\";\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://global.livediagnostics.monitor.azure.com\";\n\n/**\n * Internal attribute name for sample rate\n * @internal\n */\nexport const AzureMonitorSampleRate = \"microsoft.sample_rate\";\n\n/**\n * Disables customer-facing SDK Stats.\n * @internal\n */\nexport const APPLICATIONINSIGHTS_SDKSTATS_DISABLED = \"APPLICATIONINSIGHTS_SDKSTATS_DISABLED\";\n\nexport enum StatsbeatFeature {\n NONE = 0,\n DISK_RETRY = 1,\n AAD_HANDLING = 2,\n BROWSER_SDK_LOADER = 4,\n DISTRO = 8,\n LIVE_METRICS = 16,\n SHIM = 32,\n CUSTOMER_SDKSTATS = 64,\n MULTI_IKEY = 128,\n AKS_RESOURCE_DETECTOR_POPULATION = 256,\n}\n\nexport enum StatsbeatInstrumentation {\n /** Azure Monitor Supported Instrumentations */\n NONE = 0,\n AZURE_CORE_TRACING = 1,\n MONGODB = 2,\n MYSQL = 4,\n REDIS = 8,\n POSTGRES = 16,\n BUNYAN = 32,\n WINSTON = 64,\n /** OpenTelemetry Supported Instrumentations */\n // Console instrumentation is not supported here - occupies 128\n CUCUMBER = 256,\n DATALOADER = 512,\n FS = 1024,\n LRU_MEMOIZER = 2048,\n MONGOOSE = 4096,\n RUNTIME_NODE = 8192,\n SOCKET_IO = 16384,\n TEDIOUS = 32768,\n UNDICI = 65536,\n CASSANDRA = 131072,\n CONNECT = 262144,\n DNS = 524288,\n EXPRESS = 1048576,\n FASTIFY = 2097152,\n GENERIC_POOL = 4194304,\n GRAPHQL = 8388608,\n HAPI = 16777216,\n IOREDIS = 33554432,\n KNEX = 67108864,\n KOA = 134217728,\n MEMCACHED = 268435456,\n MYSQL2 = 536870912,\n NESTJS_CORE = 1073741824,\n NET = 2147483648,\n PINO = 4294967296,\n RESTIFY = 8589934592,\n ROUTER = 17179869184,\n AMQPLIB = 34359738368,\n}\n\n/**\n * Statsbeat Instrumentation Mapping\n * @internal\n */\nexport const StatsbeatInstrumentationMap = new Map<string, number>([\n [\"@opentelemetry/instrumentation-amqplib\", StatsbeatInstrumentation.AMQPLIB],\n [\"@opentelemetry/instrumentation-cucumber\", StatsbeatInstrumentation.CUCUMBER],\n [\"@opentelemetry/instrumentation-dataloader\", StatsbeatInstrumentation.DATALOADER],\n [\"@opentelemetry/instrumentation-fs\", StatsbeatInstrumentation.FS],\n [\"@opentelemetry/instrumentation-lru-memoizer\", StatsbeatInstrumentation.LRU_MEMOIZER],\n [\"@opentelemetry/instrumentation-mongoose\", StatsbeatInstrumentation.MONGOOSE],\n [\"@opentelemetry/instrumentation-runtime-node\", StatsbeatInstrumentation.RUNTIME_NODE],\n [\"@opentelemetry/instrumentation-socket.io\", StatsbeatInstrumentation.SOCKET_IO],\n [\"@opentelemetry/instrumentation-tedious\", StatsbeatInstrumentation.TEDIOUS],\n [\"@opentelemetry/instrumentation-undici\", StatsbeatInstrumentation.UNDICI],\n [\"@opentelemetry/instrumentation-cassandra-driver\", StatsbeatInstrumentation.CASSANDRA],\n [\"@opentelemetry/instrumentation-connect\", StatsbeatInstrumentation.CONNECT],\n [\"@opentelemetry/instrumentation-dns\", StatsbeatInstrumentation.DNS],\n [\"@opentelemetry/instrumentation-express\", StatsbeatInstrumentation.EXPRESS],\n [\"@opentelemetry/instrumentation-fastify\", StatsbeatInstrumentation.FASTIFY],\n [\"@opentelemetry/instrumentation-generic-pool\", StatsbeatInstrumentation.GENERIC_POOL],\n [\"@opentelemetry/instrumentation-graphql\", StatsbeatInstrumentation.GRAPHQL],\n [\"@opentelemetry/instrumentation-hapi\", StatsbeatInstrumentation.HAPI],\n [\"@opentelemetry/instrumentation-ioredis\", StatsbeatInstrumentation.IOREDIS],\n [\"@opentelemetry/instrumentation-knex\", StatsbeatInstrumentation.KNEX],\n [\"@opentelemetry/instrumentation-koa\", StatsbeatInstrumentation.KOA],\n [\"@opentelemetry/instrumentation-memcached\", StatsbeatInstrumentation.MEMCACHED],\n [\"@opentelemetry/instrumentation-mysql2\", StatsbeatInstrumentation.MYSQL2],\n [\"@opentelemetry/instrumentation-nestjs-core\", StatsbeatInstrumentation.NESTJS_CORE],\n [\"@opentelemetry/instrumentation-net\", StatsbeatInstrumentation.NET],\n [\"@opentelemetry/instrumentation-pino\", StatsbeatInstrumentation.PINO],\n [\"@opentelemetry/instrumentation-restify\", StatsbeatInstrumentation.RESTIFY],\n [\"@opentelemetry/instrumentation-router\", StatsbeatInstrumentation.ROUTER],\n]);\n\nexport interface StatsbeatEnvironmentConfig {\n instrumentation: StatsbeatInstrumentation;\n feature: StatsbeatFeature;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport type { InstrumentationConfig } from \"@opentelemetry/instrumentation\";\nimport type { Resource } from \"@opentelemetry/resources\";\nimport type { LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport type { MetricReader, ViewOptions } from \"@opentelemetry/sdk-metrics\";\nimport type { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\n\n/**\n * Azure Monitor OpenTelemetry Options\n */\nexport interface AzureMonitorOpenTelemetryOptions {\n /** Azure Monitor Exporter Configuration */\n azureMonitorExporterOptions?: AzureMonitorExporterOptions;\n /** OpenTelemetry Resource */\n resource?: Resource;\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n samplingRatio?: number;\n /** The maximum number of traces to sample per second (Default 5). Set to 0 to use samplingRatio instead. */\n tracesPerSecond?: number;\n /** Enable Live Metrics feature (Default false)*/\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature (Default true)*/\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** OpenTelemetry Instrumentations options included as part of Azure Monitor. See {@link InstrumentationOptions} for the full set of supported instrumentations. */\n instrumentationOptions?: InstrumentationOptions;\n /** Application Insights Web Instrumentation options (enabled, connectionString, src, config)*/\n browserSdkLoaderOptions?: BrowserSdkLoaderOptions;\n /** An array of log record processors to register to the logger provider.*/\n logRecordProcessors?: LogRecordProcessor[];\n /** An array of span processors to register to the tracer provider.*/\n spanProcessors?: SpanProcessor[];\n /** An array of metric readers to register to the meter provider.*/\n metricReaders?: MetricReader[];\n /** An array of metric views to register to the meter provider.*/\n views?: ViewOptions[];\n}\n\n/**\n * OpenTelemetry Instrumentations Configuration interface\n */\nexport interface InstrumentationOptions {\n /** Azure SDK Instrumentation Config */\n azureSdk?: InstrumentationConfig;\n /** HTTP Instrumentation Config */\n http?: InstrumentationConfig;\n /** MongoDB Instrumentation Config */\n mongoDb?: InstrumentationConfig;\n /** MySQL Instrumentation Config */\n mySql?: InstrumentationConfig;\n /** PostgreSql Instrumentation Config */\n postgreSql?: InstrumentationConfig;\n /** Redis Instrumentation Config */\n redis?: InstrumentationConfig;\n /** Redis4 Instrumentation Config */\n redis4?: InstrumentationConfig;\n /** Bunyan Instrumentation Config */\n bunyan?: InstrumentationConfig;\n /** Winston Instrumentation Config */\n winston?: InstrumentationConfig;\n}\n\n/**\n * Statsbeat Features Configuration interface\n * @internal\n */\nexport interface StatsbeatFeatures {\n diskRetry?: boolean;\n aadHandling?: boolean;\n browserSdkLoader?: boolean;\n distro?: boolean;\n liveMetrics?: boolean;\n shim?: boolean;\n customerSdkStats?: boolean;\n multiIkey?: boolean;\n aksResourceDetectorPopulation?: boolean;\n}\n\n/**\n * Statsbeat Features Mapping\n * @internal\n */\nexport const StatsbeatFeaturesMap = new Map<string, number>([\n [\"diskRetry\", 1],\n [\"aadHandling\", 2],\n [\"browserSdkLoader\", 4],\n [\"distro\", 8],\n [\"liveMetrics\", 16],\n [\"shim\", 32],\n [\"customerSdkStats\", 64],\n [\"multiIkey\", 128],\n [\"aksResourceDetectorPopulation\", 256],\n]);\n\n/**\n * Statsbeat Instrumentations Configuration interface\n * @internal\n */\nexport interface StatsbeatInstrumentations {\n /** Azure Monitor Supported Instrumentations */\n azureSdk?: boolean;\n mongoDb?: boolean;\n mySql?: boolean;\n postgreSql?: boolean;\n redis?: boolean;\n bunyan?: boolean;\n winston?: boolean;\n /** OpenTelemetry Community Instrumentations */\n amqplib?: boolean;\n cucumber?: boolean;\n dataloader?: boolean;\n fs?: boolean;\n lruMemoizer?: boolean;\n mongoose?: boolean;\n runtimeNode?: boolean;\n socketIo?: boolean;\n tedious?: boolean;\n undici?: boolean;\n cassandra?: boolean;\n connect?: boolean;\n dns?: boolean;\n express?: boolean;\n fastify?: boolean;\n genericPool?: boolean;\n graphql?: boolean;\n hapi?: boolean;\n ioredis?: boolean;\n knex?: boolean;\n koa?: boolean;\n memcached?: boolean;\n mysql2?: boolean;\n nestjsCore?: boolean;\n net?: boolean;\n pino?: boolean;\n restify?: boolean;\n router?: boolean;\n}\n\n/**\n * Statsbeat Instrumentation and Feature Option interface\n * @internal\n */\nexport interface StatsbeatOption {\n option: string;\n value: boolean;\n}\n\n/**\n * Application Insights Web Instrumentation Configuration interface\n */\nexport interface BrowserSdkLoaderOptions {\n /** Browser SDK Loader Enable */\n enabled?: boolean;\n /** Browser SDK Loader Connection String */\n connectionString?: string;\n}\n\nexport const AZURE_MONITOR_OPENTELEMETRY_VERSION = \"1.18.2\";\nexport const AZURE_MONITOR_STATSBEAT_FEATURES = \"AZURE_MONITOR_STATSBEAT_FEATURES\";\nexport const AZURE_MONITOR_PREFIX = \"AZURE_MONITOR_PREFIX\";\nexport const AZURE_MONITOR_AUTO_ATTACH = \"AZURE_MONITOR_AUTO_ATTACH\";\nexport const APPLICATION_INSIGHTS_SHIM_VERSION = \"APPLICATION_INSIGHTS_SHIM_VERSION\";\n\nexport enum AttachTypePrefix {\n INTEGRATED_AUTO = \"i\",\n MANUAL = \"m\",\n}\n\n/**\n * Default Browser SDK Loader Source\n * @internal\n */\nexport const BROWSER_SDK_LOADER_DEFAULT_SOURCE = \"https://js.monitor.azure.com/scripts/b/ai\";\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://global.livediagnostics.monitor.azure.com\";\n\n/**\n * Internal attribute name for sample rate\n * @internal\n */\nexport const AzureMonitorSampleRate = \"microsoft.sample_rate\";\n\n/**\n * Disables customer-facing SDK Stats.\n * @internal\n */\nexport const APPLICATIONINSIGHTS_SDKSTATS_DISABLED = \"APPLICATIONINSIGHTS_SDKSTATS_DISABLED\";\n\nexport enum StatsbeatFeature {\n NONE = 0,\n DISK_RETRY = 1,\n AAD_HANDLING = 2,\n BROWSER_SDK_LOADER = 4,\n DISTRO = 8,\n LIVE_METRICS = 16,\n SHIM = 32,\n CUSTOMER_SDKSTATS = 64,\n MULTI_IKEY = 128,\n AKS_RESOURCE_DETECTOR_POPULATION = 256,\n}\n\nexport enum StatsbeatInstrumentation {\n /** Azure Monitor Supported Instrumentations */\n NONE = 0,\n AZURE_CORE_TRACING = 1,\n MONGODB = 2,\n MYSQL = 4,\n REDIS = 8,\n POSTGRES = 16,\n BUNYAN = 32,\n WINSTON = 64,\n /** OpenTelemetry Supported Instrumentations */\n // Console instrumentation is not supported here - occupies 128\n CUCUMBER = 256,\n DATALOADER = 512,\n FS = 1024,\n LRU_MEMOIZER = 2048,\n MONGOOSE = 4096,\n RUNTIME_NODE = 8192,\n SOCKET_IO = 16384,\n TEDIOUS = 32768,\n UNDICI = 65536,\n CASSANDRA = 131072,\n CONNECT = 262144,\n DNS = 524288,\n EXPRESS = 1048576,\n FASTIFY = 2097152,\n GENERIC_POOL = 4194304,\n GRAPHQL = 8388608,\n HAPI = 16777216,\n IOREDIS = 33554432,\n KNEX = 67108864,\n KOA = 134217728,\n MEMCACHED = 268435456,\n MYSQL2 = 536870912,\n NESTJS_CORE = 1073741824,\n NET = 2147483648,\n PINO = 4294967296,\n RESTIFY = 8589934592,\n ROUTER = 17179869184,\n AMQPLIB = 34359738368,\n}\n\n/**\n * Statsbeat Instrumentation Mapping\n * @internal\n */\nexport const StatsbeatInstrumentationMap = new Map<string, number>([\n [\"@opentelemetry/instrumentation-amqplib\", StatsbeatInstrumentation.AMQPLIB],\n [\"@opentelemetry/instrumentation-cucumber\", StatsbeatInstrumentation.CUCUMBER],\n [\"@opentelemetry/instrumentation-dataloader\", StatsbeatInstrumentation.DATALOADER],\n [\"@opentelemetry/instrumentation-fs\", StatsbeatInstrumentation.FS],\n [\"@opentelemetry/instrumentation-lru-memoizer\", StatsbeatInstrumentation.LRU_MEMOIZER],\n [\"@opentelemetry/instrumentation-mongoose\", StatsbeatInstrumentation.MONGOOSE],\n [\"@opentelemetry/instrumentation-runtime-node\", StatsbeatInstrumentation.RUNTIME_NODE],\n [\"@opentelemetry/instrumentation-socket.io\", StatsbeatInstrumentation.SOCKET_IO],\n [\"@opentelemetry/instrumentation-tedious\", StatsbeatInstrumentation.TEDIOUS],\n [\"@opentelemetry/instrumentation-undici\", StatsbeatInstrumentation.UNDICI],\n [\"@opentelemetry/instrumentation-cassandra-driver\", StatsbeatInstrumentation.CASSANDRA],\n [\"@opentelemetry/instrumentation-connect\", StatsbeatInstrumentation.CONNECT],\n [\"@opentelemetry/instrumentation-dns\", StatsbeatInstrumentation.DNS],\n [\"@opentelemetry/instrumentation-express\", StatsbeatInstrumentation.EXPRESS],\n [\"@opentelemetry/instrumentation-fastify\", StatsbeatInstrumentation.FASTIFY],\n [\"@opentelemetry/instrumentation-generic-pool\", StatsbeatInstrumentation.GENERIC_POOL],\n [\"@opentelemetry/instrumentation-graphql\", StatsbeatInstrumentation.GRAPHQL],\n [\"@opentelemetry/instrumentation-hapi\", StatsbeatInstrumentation.HAPI],\n [\"@opentelemetry/instrumentation-ioredis\", StatsbeatInstrumentation.IOREDIS],\n [\"@opentelemetry/instrumentation-knex\", StatsbeatInstrumentation.KNEX],\n [\"@opentelemetry/instrumentation-koa\", StatsbeatInstrumentation.KOA],\n [\"@opentelemetry/instrumentation-memcached\", StatsbeatInstrumentation.MEMCACHED],\n [\"@opentelemetry/instrumentation-mysql2\", StatsbeatInstrumentation.MYSQL2],\n [\"@opentelemetry/instrumentation-nestjs-core\", StatsbeatInstrumentation.NESTJS_CORE],\n [\"@opentelemetry/instrumentation-net\", StatsbeatInstrumentation.NET],\n [\"@opentelemetry/instrumentation-pino\", StatsbeatInstrumentation.PINO],\n [\"@opentelemetry/instrumentation-restify\", StatsbeatInstrumentation.RESTIFY],\n [\"@opentelemetry/instrumentation-router\", StatsbeatInstrumentation.ROUTER],\n]);\n\nexport interface StatsbeatEnvironmentConfig {\n instrumentation: StatsbeatInstrumentation;\n feature: StatsbeatFeature;\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Eagerly installs the OpenTelemetry bridge for \@azure/core-tracing.
|
|
3
|
+
*
|
|
4
|
+
* The \@azure/opentelemetry-instrumentation-azure-sdk package normally installs
|
|
5
|
+
* the bridge via a require-in-the-middle (RITM) hook that intercepts future
|
|
6
|
+
* `require("@azure/core-tracing")` calls. However, if \@azure/core-tracing is
|
|
7
|
+
* already loaded before useAzureMonitor() is called (e.g. because the customer
|
|
8
|
+
* imported \@azure/ai-projects or any other Azure SDK package first), the hook
|
|
9
|
+
* never fires, and Azure SDK spans are silently dropped.
|
|
10
|
+
*
|
|
11
|
+
* This function works around the issue by directly calling useInstrumenter()
|
|
12
|
+
* with an instrumenter created via createOpenTelemetryInstrumenter(), which
|
|
13
|
+
* patches the already-loaded \@azure/core-tracing singleton state.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare function ensureAzureSdkTracingBridge(): void;
|
|
18
|
+
//# sourceMappingURL=azureSdkTracingBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureSdkTracingBridge.d.ts","sourceRoot":"","sources":["../../../src/utils/azureSdkTracingBridge.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAclD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { diag } from "@opentelemetry/api";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
5
|
+
/**
|
|
6
|
+
* Eagerly installs the OpenTelemetry bridge for \@azure/core-tracing.
|
|
7
|
+
*
|
|
8
|
+
* The \@azure/opentelemetry-instrumentation-azure-sdk package normally installs
|
|
9
|
+
* the bridge via a require-in-the-middle (RITM) hook that intercepts future
|
|
10
|
+
* `require("@azure/core-tracing")` calls. However, if \@azure/core-tracing is
|
|
11
|
+
* already loaded before useAzureMonitor() is called (e.g. because the customer
|
|
12
|
+
* imported \@azure/ai-projects or any other Azure SDK package first), the hook
|
|
13
|
+
* never fires, and Azure SDK spans are silently dropped.
|
|
14
|
+
*
|
|
15
|
+
* This function works around the issue by directly calling useInstrumenter()
|
|
16
|
+
* with an instrumenter created via createOpenTelemetryInstrumenter(), which
|
|
17
|
+
* patches the already-loaded \@azure/core-tracing singleton state.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export function ensureAzureSdkTracingBridge() {
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
24
|
+
// @ts-ignore ESM only output
|
|
25
|
+
const esmRequire = createRequire(import.meta.url);
|
|
26
|
+
const { useInstrumenter } = esmRequire("@azure/core-tracing");
|
|
27
|
+
const { createOpenTelemetryInstrumenter } = esmRequire("@azure/opentelemetry-instrumentation-azure-sdk");
|
|
28
|
+
useInstrumenter(createOpenTelemetryInstrumenter());
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
diag.warn("Failed to install Azure SDK tracing bridge", e);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=azureSdkTracingBridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureSdkTracingBridge.js","sourceRoot":"","sources":["../../../src/utils/azureSdkTracingBridge.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B;IACzC,IAAI,CAAC;QACH,6DAA6D;QAC7D,6BAA6B;QAC7B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,EAAE,+BAA+B,EAAE,GAAG,UAAU,CACpD,gDAAgD,CACjD,CAAC;QAEF,eAAe,CAAC,+BAA+B,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { diag } from \"@opentelemetry/api\";\nimport { createRequire } from \"node:module\";\n\n/**\n * Eagerly installs the OpenTelemetry bridge for \\@azure/core-tracing.\n *\n * The \\@azure/opentelemetry-instrumentation-azure-sdk package normally installs\n * the bridge via a require-in-the-middle (RITM) hook that intercepts future\n * `require(\"@azure/core-tracing\")` calls. However, if \\@azure/core-tracing is\n * already loaded before useAzureMonitor() is called (e.g. because the customer\n * imported \\@azure/ai-projects or any other Azure SDK package first), the hook\n * never fires, and Azure SDK spans are silently dropped.\n *\n * This function works around the issue by directly calling useInstrumenter()\n * with an instrumenter created via createOpenTelemetryInstrumenter(), which\n * patches the already-loaded \\@azure/core-tracing singleton state.\n *\n * @internal\n */\nexport function ensureAzureSdkTracingBridge(): void {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore ESM only output\n const esmRequire = createRequire(import.meta.url);\n const { useInstrumenter } = esmRequire(\"@azure/core-tracing\");\n const { createOpenTelemetryInstrumenter } = esmRequire(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n );\n\n useInstrumenter(createOpenTelemetryInstrumenter());\n } catch (e) {\n diag.warn(\"Failed to install Azure SDK tracing bridge\", e);\n }\n}\n"]}
|