@azure/monitor-opentelemetry 1.18.1 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -1
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +20 -3
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/logs/batchLogRecordProcessor.js +1 -1
- package/dist/commonjs/logs/batchLogRecordProcessor.js.map +1 -1
- package/dist/commonjs/logs/handler.d.ts +3 -0
- package/dist/commonjs/logs/handler.d.ts.map +1 -1
- package/dist/commonjs/logs/handler.js +22 -2
- package/dist/commonjs/logs/handler.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/credentialUtils.d.ts +16 -0
- package/dist/commonjs/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
- package/dist/commonjs/metrics/quickpulse/credentialUtils.js +48 -0
- package/dist/commonjs/metrics/quickpulse/credentialUtils.js.map +1 -0
- package/dist/commonjs/metrics/quickpulse/export/sender.d.ts +10 -0
- package/dist/commonjs/metrics/quickpulse/export/sender.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/export/sender.js +37 -8
- 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 +75 -18
- 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/shared/config.d.ts.map +1 -1
- package/dist/commonjs/shared/config.js +1 -0
- package/dist/commonjs/shared/config.js.map +1 -1
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts +1 -0
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.js +13 -12
- package/dist/commonjs/shared/logging/diagFileConsoleLogger.js.map +1 -1
- package/dist/commonjs/traces/handler.d.ts +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 +11 -1
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +47 -3
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/utils/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/commonjs/utils/common.d.ts +10 -0
- package/dist/commonjs/utils/common.d.ts.map +1 -1
- package/dist/commonjs/utils/common.js +16 -0
- package/dist/commonjs/utils/common.js.map +1 -1
- package/dist/commonjs/utils/logUtils.d.ts +5 -0
- package/dist/commonjs/utils/logUtils.d.ts.map +1 -1
- package/dist/commonjs/utils/logUtils.js +8 -0
- package/dist/commonjs/utils/logUtils.js.map +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js +3 -2
- package/dist/commonjs/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
- package/dist/commonjs/utils/statsbeat.d.ts.map +1 -1
- package/dist/commonjs/utils/statsbeat.js +35 -30
- package/dist/commonjs/utils/statsbeat.js.map +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +20 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/logs/batchLogRecordProcessor.js +1 -1
- package/dist/esm/logs/batchLogRecordProcessor.js.map +1 -1
- package/dist/esm/logs/handler.d.ts +3 -0
- package/dist/esm/logs/handler.d.ts.map +1 -1
- package/dist/esm/logs/handler.js +23 -3
- package/dist/esm/logs/handler.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/credentialUtils.d.ts +16 -0
- package/dist/esm/metrics/quickpulse/credentialUtils.d.ts.map +1 -0
- package/dist/esm/metrics/quickpulse/credentialUtils.js +45 -0
- package/dist/esm/metrics/quickpulse/credentialUtils.js.map +1 -0
- package/dist/esm/metrics/quickpulse/export/sender.d.ts +10 -0
- package/dist/esm/metrics/quickpulse/export/sender.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/export/sender.js +37 -8
- 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 +75 -18
- 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/shared/config.d.ts.map +1 -1
- package/dist/esm/shared/config.js +1 -0
- package/dist/esm/shared/config.js.map +1 -1
- package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts +1 -0
- package/dist/esm/shared/logging/diagFileConsoleLogger.d.ts.map +1 -1
- package/dist/esm/shared/logging/diagFileConsoleLogger.js +13 -12
- package/dist/esm/shared/logging/diagFileConsoleLogger.js.map +1 -1
- package/dist/esm/traces/handler.d.ts +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 +11 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +46 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/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/dist/esm/utils/common.d.ts +10 -0
- package/dist/esm/utils/common.d.ts.map +1 -1
- package/dist/esm/utils/common.js +14 -0
- package/dist/esm/utils/common.js.map +1 -1
- package/dist/esm/utils/logUtils.d.ts +5 -0
- package/dist/esm/utils/logUtils.d.ts.map +1 -1
- package/dist/esm/utils/logUtils.js +7 -0
- package/dist/esm/utils/logUtils.js.map +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.d.ts.map +1 -1
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js +3 -2
- package/dist/esm/utils/opentelemetryInstrumentationPatcher.js.map +1 -1
- package/dist/esm/utils/statsbeat.d.ts.map +1 -1
- package/dist/esm/utils/statsbeat.js +36 -31
- package/dist/esm/utils/statsbeat.js.map +1 -1
- package/package.json +41 -30
|
@@ -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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOlF,OAAO,KAAK,EACV,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAWzF;;GAEG;AACH,qBAAa,cAAe,YAAW,gCAAgC;IACrE,mFAAmF;IAC5E,aAAa,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAChC,2CAA2C;IACpC,2BAA2B,EAAE,2BAA2B,CAAC;IAChE;;OAEG;IACI,sBAAsB,EAAE,sBAAsB,CAAC;IACtD,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wDAAwD;IACxD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6CAA6C;IACtC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,8CAA8C;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,SAAS,CAA6B;IAE9C,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAOlF,OAAO,KAAK,EACV,uBAAuB,EACvB,gCAAgC,EAChC,sBAAsB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AAWzF;;GAEG;AACH,qBAAa,cAAe,YAAW,gCAAgC;IACrE,mFAAmF;IAC5E,aAAa,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IAChC,2CAA2C;IACpC,2BAA2B,EAAE,2BAA2B,CAAC;IAChE;;OAEG;IACI,sBAAsB,EAAE,sBAAsB,CAAC;IACtD,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,wDAAwD;IACxD,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yCAAyC;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6CAA6C;IACtC,0BAA0B,EAAE,MAAM,CAAC;IAC1C,8CAA8C;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,SAAS,CAA6B;IAE9C,IAAW,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAErC;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,uBAAuB,EAAE,uBAAuB,CAAC;IAExD;;OAEG;gBACS,OAAO,CAAC,EAAE,gCAAgC;IAoEtD,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAwB3B,6BAA6B,CAAC,OAAO,CAAC,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAmBvF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ResourceDetectionConfig, Resource } from \"@opentelemetry/resources\";\nimport {\n defaultResource,\n detectResources,\n emptyResource,\n envDetector,\n} from \"@opentelemetry/resources\";\nimport type {\n BrowserSdkLoaderOptions,\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n} from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration\n */\nexport class InternalConfig implements AzureMonitorOpenTelemetryOptions {\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n public samplingRatio: number;\n /** The maximum number of spans to sample per second. */\n public tracesPerSecond?: number;\n /** Azure Monitor Exporter Configuration */\n public azureMonitorExporterOptions: AzureMonitorExporterOptions;\n /**\n * OpenTelemetry Instrumentations configuration included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4)\n */\n public instrumentationOptions: InstrumentationOptions;\n /** Enable Live Metrics feature */\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature */\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** Metric export interval in milliseconds */\n public metricExportIntervalMillis: number;\n /** Custom OpenTelemetry sampler (env-only) */\n public sampler?: Sampler;\n\n private _resource: Resource = emptyResource();\n\n public set resource(resource: Resource) {\n this._resource = this._resource.merge(resource);\n }\n\n /**\n *Get OpenTelemetry Resource\n */\n public get resource(): Resource {\n return this._resource;\n }\n\n public browserSdkLoaderOptions: BrowserSdkLoaderOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.\n */\n constructor(options?: AzureMonitorOpenTelemetryOptions) {\n // Default values\n this.azureMonitorExporterOptions = {};\n this.samplingRatio = 1;\n this.tracesPerSecond = 5;\n this.enableLiveMetrics = true;\n this.enableStandardMetrics = true;\n this.enableTraceBasedSamplingForLogs = false;\n this.enablePerformanceCounters = true;\n this.metricExportIntervalMillis = this.calculateMetricExportInterval();\n this.instrumentationOptions = {\n http: { enabled: true },\n azureSdk: { enabled: true },\n mongoDb: { enabled: true },\n mySql: { enabled: true },\n postgreSql: { enabled: true },\n redis: { enabled: true },\n redis4: { enabled: true },\n };\n this._setDefaultResource();\n this.browserSdkLoaderOptions = {\n enabled: false,\n connectionString: \"\",\n };\n\n if (options) {\n // Merge default with provided options\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n options.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n options.instrumentationOptions,\n );\n this.resource = Object.assign(this.resource, options.resource);\n this.samplingRatio =\n options.samplingRatio !== undefined ? options.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n options.tracesPerSecond !== undefined ? options.tracesPerSecond : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n options.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n options.enableLiveMetrics !== undefined\n ? options.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n options.enableStandardMetrics !== undefined\n ? options.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n options.enableTraceBasedSamplingForLogs !== undefined\n ? options.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.enablePerformanceCounters =\n options.enablePerformanceCounters !== undefined\n ? options.enablePerformanceCounters\n : this.enablePerformanceCounters;\n }\n // JSON configuration will take precedence over options provided\n this._mergeJsonConfig();\n // ENV configuration will take precedence over other configurations\n this._mergeEnvConfig();\n }\n\n private _mergeEnvConfig(): void {\n const envConfig = EnvConfig.getInstance();\n this.samplingRatio =\n envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;\n this.sampler = envConfig.sampler ?? this.sampler;\n }\n\n private _mergeJsonConfig(): void {\n try {\n const jsonConfig = JsonConfig.getInstance();\n this.samplingRatio =\n jsonConfig.samplingRatio !== undefined ? jsonConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n jsonConfig.tracesPerSecond !== undefined\n ? jsonConfig.tracesPerSecond\n : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n jsonConfig.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n jsonConfig.enableLiveMetrics !== undefined\n ? jsonConfig.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n jsonConfig.enableStandardMetrics !== undefined\n ? jsonConfig.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n jsonConfig.enableTraceBasedSamplingForLogs !== undefined\n ? jsonConfig.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n jsonConfig.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n jsonConfig.instrumentationOptions,\n );\n } catch (error) {\n Logger.getInstance().error(\"Failed to load JSON config file values.\", error);\n }\n }\n\n private _setDefaultResource(): void {\n let resource = defaultResource();\n // Load resource attributes from env\n const detectResourceConfig: ResourceDetectionConfig = {\n detectors: [envDetector],\n };\n const envResource = detectResources(detectResourceConfig);\n resource = resource.merge(envResource);\n\n // Load resource attributes from Azure\n const azureResource: Resource = detectResources({\n detectors: [azureAksDetector, azureAppServiceDetector, azureFunctionsDetector],\n });\n this._resource = resource.merge(azureResource);\n\n // Handle VM resource detection asynchronously to avoid warnings\n // about accessing resource attributes before async attributes are settled\n this._initializeVmResourceAsync();\n }\n\n /**\n * Initialize VM resource detection asynchronously to avoid warnings\n * about accessing resource attributes before async attributes settle\n */\n private _initializeVmResourceAsync(): void {\n const vmResource = detectResources({\n detectors: [azureVmDetector],\n });\n\n // Don't wait for VM resource detection to complete during initialization\n // This prevents warnings about accessing resource attributes before async attributes are settled\n if (vmResource.asyncAttributesPending) {\n void vmResource\n .waitForAsyncAttributes?.()\n .then(() => {\n this._resource = this._resource.merge(vmResource);\n return;\n })\n .catch(() => {\n // Silently ignore VM detection errors to avoid unnecessary warnings\n // VM detection is optional and failures shouldn't impact core functionality\n });\n } else {\n // If VM detection completed synchronously, merge immediately\n this._resource = this._resource.merge(vmResource);\n }\n }\n\n public calculateMetricExportInterval(options?: { collectionInterval: number }): number {\n const defaultInterval = 60000; // 60 seconds\n\n // Prioritize OTEL_METRIC_EXPORT_INTERVAL env var\n if (process.env.OTEL_METRIC_EXPORT_INTERVAL) {\n const envInterval = parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL.trim(), 10);\n if (!isNaN(envInterval) && envInterval > 0) {\n return envInterval;\n }\n }\n\n // Then use options if provided\n if (options?.collectionInterval) {\n return options.collectionInterval;\n }\n\n // Default fallback\n return defaultInterval;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/shared/config.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ResourceDetectionConfig, Resource } from \"@opentelemetry/resources\";\nimport {\n defaultResource,\n detectResources,\n emptyResource,\n envDetector,\n} from \"@opentelemetry/resources\";\nimport type {\n BrowserSdkLoaderOptions,\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n} from \"../types.js\";\nimport type { Sampler } from \"@opentelemetry/sdk-trace-base\";\nimport type { AzureMonitorExporterOptions } from \"@azure/monitor-opentelemetry-exporter\";\nimport { EnvConfig } from \"./envConfig.js\";\nimport { JsonConfig } from \"./jsonConfig.js\";\nimport { Logger } from \"./logging/index.js\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\n/**\n * Azure Monitor OpenTelemetry Client Configuration\n */\nexport class InternalConfig implements AzureMonitorOpenTelemetryOptions {\n /** The rate of telemetry items tracked that should be transmitted (Default 1.0) */\n public samplingRatio: number;\n /** The maximum number of spans to sample per second. */\n public tracesPerSecond?: number;\n /** Azure Monitor Exporter Configuration */\n public azureMonitorExporterOptions: AzureMonitorExporterOptions;\n /**\n * OpenTelemetry Instrumentations configuration included as part of Azure Monitor (azureSdk, http, mongoDb, mySql, postgreSql, redis, redis4)\n */\n public instrumentationOptions: InstrumentationOptions;\n /** Enable Live Metrics feature */\n enableLiveMetrics?: boolean;\n /** Enable Standard Metrics feature */\n enableStandardMetrics?: boolean;\n /** Enable log sampling based on trace (Default true) */\n enableTraceBasedSamplingForLogs?: boolean;\n /** Enable Performance Counter feature */\n enablePerformanceCounters?: boolean;\n /** Metric export interval in milliseconds */\n public metricExportIntervalMillis: number;\n /** Custom OpenTelemetry sampler (env-only) */\n public sampler?: Sampler;\n\n private _resource: Resource = emptyResource();\n\n public set resource(resource: Resource) {\n this._resource = this._resource.merge(resource);\n }\n\n /**\n *Get OpenTelemetry Resource\n */\n public get resource(): Resource {\n return this._resource;\n }\n\n public browserSdkLoaderOptions: BrowserSdkLoaderOptions;\n\n /**\n * Initializes a new instance of the AzureMonitorOpenTelemetryOptions class.\n */\n constructor(options?: AzureMonitorOpenTelemetryOptions) {\n // Default values\n this.azureMonitorExporterOptions = {};\n this.samplingRatio = 1;\n this.tracesPerSecond = 5;\n this.enableLiveMetrics = true;\n this.enableStandardMetrics = true;\n this.enableTraceBasedSamplingForLogs = false;\n this.enablePerformanceCounters = true;\n this.metricExportIntervalMillis = this.calculateMetricExportInterval();\n this.instrumentationOptions = {\n http: { enabled: true },\n azureSdk: { enabled: true },\n mongoDb: { enabled: true },\n mySql: { enabled: true },\n postgreSql: { enabled: true },\n redis: { enabled: true },\n redis4: { enabled: true },\n console: { enabled: false },\n };\n this._setDefaultResource();\n this.browserSdkLoaderOptions = {\n enabled: false,\n connectionString: \"\",\n };\n\n if (options) {\n // Merge default with provided options\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n options.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n options.instrumentationOptions,\n );\n this.resource = Object.assign(this.resource, options.resource);\n this.samplingRatio =\n options.samplingRatio !== undefined ? options.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n options.tracesPerSecond !== undefined ? options.tracesPerSecond : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n options.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n options.enableLiveMetrics !== undefined\n ? options.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n options.enableStandardMetrics !== undefined\n ? options.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n options.enableTraceBasedSamplingForLogs !== undefined\n ? options.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.enablePerformanceCounters =\n options.enablePerformanceCounters !== undefined\n ? options.enablePerformanceCounters\n : this.enablePerformanceCounters;\n }\n // JSON configuration will take precedence over options provided\n this._mergeJsonConfig();\n // ENV configuration will take precedence over other configurations\n this._mergeEnvConfig();\n }\n\n private _mergeEnvConfig(): void {\n const envConfig = EnvConfig.getInstance();\n this.samplingRatio =\n envConfig.samplingRatio !== undefined ? envConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n envConfig.tracesPerSecond !== undefined ? envConfig.tracesPerSecond : this.tracesPerSecond;\n this.sampler = envConfig.sampler ?? this.sampler;\n }\n\n private _mergeJsonConfig(): void {\n try {\n const jsonConfig = JsonConfig.getInstance();\n this.samplingRatio =\n jsonConfig.samplingRatio !== undefined ? jsonConfig.samplingRatio : this.samplingRatio;\n this.tracesPerSecond =\n jsonConfig.tracesPerSecond !== undefined\n ? jsonConfig.tracesPerSecond\n : this.tracesPerSecond;\n this.browserSdkLoaderOptions = Object.assign(\n this.browserSdkLoaderOptions,\n jsonConfig.browserSdkLoaderOptions,\n );\n this.enableLiveMetrics =\n jsonConfig.enableLiveMetrics !== undefined\n ? jsonConfig.enableLiveMetrics\n : this.enableLiveMetrics;\n this.enableStandardMetrics =\n jsonConfig.enableStandardMetrics !== undefined\n ? jsonConfig.enableStandardMetrics\n : this.enableStandardMetrics;\n this.enableTraceBasedSamplingForLogs =\n jsonConfig.enableTraceBasedSamplingForLogs !== undefined\n ? jsonConfig.enableTraceBasedSamplingForLogs\n : this.enableTraceBasedSamplingForLogs;\n this.azureMonitorExporterOptions = Object.assign(\n this.azureMonitorExporterOptions,\n jsonConfig.azureMonitorExporterOptions,\n );\n this.instrumentationOptions = Object.assign(\n this.instrumentationOptions,\n jsonConfig.instrumentationOptions,\n );\n } catch (error) {\n Logger.getInstance().error(\"Failed to load JSON config file values.\", error);\n }\n }\n\n private _setDefaultResource(): void {\n let resource = defaultResource();\n // Load resource attributes from env\n const detectResourceConfig: ResourceDetectionConfig = {\n detectors: [envDetector],\n };\n const envResource = detectResources(detectResourceConfig);\n resource = resource.merge(envResource);\n\n // Load resource attributes from Azure\n const azureResource: Resource = detectResources({\n detectors: [azureAksDetector, azureAppServiceDetector, azureFunctionsDetector],\n });\n this._resource = resource.merge(azureResource);\n\n // Handle VM resource detection asynchronously to avoid warnings\n // about accessing resource attributes before async attributes are settled\n this._initializeVmResourceAsync();\n }\n\n /**\n * Initialize VM resource detection asynchronously to avoid warnings\n * about accessing resource attributes before async attributes settle\n */\n private _initializeVmResourceAsync(): void {\n const vmResource = detectResources({\n detectors: [azureVmDetector],\n });\n\n // Don't wait for VM resource detection to complete during initialization\n // This prevents warnings about accessing resource attributes before async attributes are settled\n if (vmResource.asyncAttributesPending) {\n void vmResource\n .waitForAsyncAttributes?.()\n .then(() => {\n this._resource = this._resource.merge(vmResource);\n return;\n })\n .catch(() => {\n // Silently ignore VM detection errors to avoid unnecessary warnings\n // VM detection is optional and failures shouldn't impact core functionality\n });\n } else {\n // If VM detection completed synchronously, merge immediately\n this._resource = this._resource.merge(vmResource);\n }\n }\n\n public calculateMetricExportInterval(options?: { collectionInterval: number }): number {\n const defaultInterval = 60000; // 60 seconds\n\n // Prioritize OTEL_METRIC_EXPORT_INTERVAL env var\n if (process.env.OTEL_METRIC_EXPORT_INTERVAL) {\n const envInterval = parseInt(process.env.OTEL_METRIC_EXPORT_INTERVAL.trim(), 10);\n if (!isNaN(envInterval) && envInterval > 0) {\n return envInterval;\n }\n }\n\n // Then use options if provided\n if (options?.collectionInterval) {\n return options.collectionInterval;\n }\n\n // Default fallback\n return defaultInterval;\n }\n}\n"]}
|
|
@@ -19,6 +19,7 @@ export declare class DiagFileConsoleLogger implements DiagLogger {
|
|
|
19
19
|
debug(message?: any, ...args: any[]): void;
|
|
20
20
|
verbose(message?: any, ...args: any[]): void;
|
|
21
21
|
logMessage(message?: any, ...optionalParams: any[]): Promise<void>;
|
|
22
|
+
private _writeToConsole;
|
|
22
23
|
/**
|
|
23
24
|
* Checks if the warning message should be filtered out to avoid showing
|
|
24
25
|
* non-actionable warnings to customers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagFileConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagFileConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAgBrD,qBAAa,qBAAsB,YAAW,UAAU;IACtD,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAqB;;IAyCrC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYzC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAY1C,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAYtC,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/E,OAAO,CAAC,eAAe;IAIvB;;;OAGG;IACH,OAAO,CAAC,qCAAqC;IA2C7C,OAAO,CAAC,wCAAwC;YAelC,YAAY;YAmCZ,iBAAiB;YAajB,gBAAgB;CAyB/B"}
|
|
@@ -4,6 +4,9 @@ import fs from "node:fs";
|
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { accessAsync, appendFileAsync, confirmDirExists, getShallowFileSize, readdirAsync, readFileAsync, writeFileAsync, unlinkAsync, } from "../../utils/index.js";
|
|
7
|
+
// Capture the unpatched sink to prevent recursive diagnostic collection.
|
|
8
|
+
// eslint-disable-next-line no-console
|
|
9
|
+
const originalConsoleLog = console.log.bind(console);
|
|
7
10
|
export class DiagFileConsoleLogger {
|
|
8
11
|
_TAG = "DiagFileConsoleLogger:";
|
|
9
12
|
_cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;
|
|
@@ -117,15 +120,17 @@ export class DiagFileConsoleLogger {
|
|
|
117
120
|
await this._storeToDisk(args);
|
|
118
121
|
}
|
|
119
122
|
if (this._logToConsole) {
|
|
120
|
-
|
|
121
|
-
console.log(...args);
|
|
123
|
+
this._writeToConsole(...args);
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
catch (err) {
|
|
125
|
-
|
|
126
|
-
console.log(this._TAG, `Failed to log to file: ${err && err.message}`);
|
|
127
|
+
this._writeToConsole(this._TAG, `Failed to log to file: ${err && err.message}`);
|
|
127
128
|
}
|
|
128
129
|
}
|
|
130
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
|
|
131
|
+
_writeToConsole(...args) {
|
|
132
|
+
originalConsoleLog(...args);
|
|
133
|
+
}
|
|
129
134
|
/**
|
|
130
135
|
* Checks if the warning message should be filtered out to avoid showing
|
|
131
136
|
* non-actionable warnings to customers
|
|
@@ -183,8 +188,7 @@ export class DiagFileConsoleLogger {
|
|
|
183
188
|
await confirmDirExists(this._tempDir);
|
|
184
189
|
}
|
|
185
190
|
catch (err) {
|
|
186
|
-
|
|
187
|
-
console.log(this._TAG, `Failed to create directory for log file: ${err && err.message}`);
|
|
191
|
+
this._writeToConsole(this._TAG, `Failed to create directory for log file: ${err && err.message}`);
|
|
188
192
|
return;
|
|
189
193
|
}
|
|
190
194
|
try {
|
|
@@ -196,8 +200,7 @@ export class DiagFileConsoleLogger {
|
|
|
196
200
|
await appendFileAsync(this._fileFullPath, data);
|
|
197
201
|
}
|
|
198
202
|
catch (appendError) {
|
|
199
|
-
|
|
200
|
-
console.log(this._TAG, `Failed to put log into file: ${appendError && appendError.message}`);
|
|
203
|
+
this._writeToConsole(this._TAG, `Failed to put log into file: ${appendError && appendError.message}`);
|
|
201
204
|
return;
|
|
202
205
|
}
|
|
203
206
|
}
|
|
@@ -217,8 +220,7 @@ export class DiagFileConsoleLogger {
|
|
|
217
220
|
await writeFileAsync(backupPath, buffer);
|
|
218
221
|
}
|
|
219
222
|
catch (err) {
|
|
220
|
-
|
|
221
|
-
console.log("Failed to generate backup log file", err);
|
|
223
|
+
this._writeToConsole(this._TAG, "Failed to generate backup log file", err);
|
|
222
224
|
}
|
|
223
225
|
finally {
|
|
224
226
|
// Store logs
|
|
@@ -249,8 +251,7 @@ export class DiagFileConsoleLogger {
|
|
|
249
251
|
}
|
|
250
252
|
}
|
|
251
253
|
catch (err) {
|
|
252
|
-
|
|
253
|
-
console.log(this._TAG, `Failed to cleanup log files: ${err && err.message}`);
|
|
254
|
+
this._writeToConsole(this._TAG, `Failed to cleanup log files: ${err && err.message}`);
|
|
254
255
|
}
|
|
255
256
|
}
|
|
256
257
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagFileConsoleLogger.js","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,MAAM,OAAO,qBAAqB;IACxB,IAAI,GAAG,wBAAwB,CAAC;IAChC,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,cAAc;IAChD,iBAAiB,GAA0B,IAAI,CAAC;IAChD,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,aAAa,CAAS;IACtB,iBAAiB,CAAS;IAC1B,UAAU,GAAG,KAAK,CAAC;IACnB,aAAa,GAAG,IAAI,CAAC;IACrB,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,eAAe,CAAqB;IAE5C;QACE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,0DAA0D;QAClI,IAAI,IAAI,CAAC,eAAe,KAAK,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,yBAAyB,CAAC;QAE9C,wGAAwG;QACxG,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,uCAAuC;QAEzF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;oBACxC,mEAAmE;oBACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACzB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,OAAa,EAAE,GAAG,IAAW;QACxC,IAAI,IAAI,CAAC,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,wCAAwC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6EAA6E;IACtE,IAAI,CAAC,OAAa,EAAE,GAAG,IAAW;QACvC,IAAI,IAAI,CAAC,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,wCAAwC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6EAA6E;IACtE,IAAI,CAAC,OAAa,EAAE,GAAG,IAAW;QACvC,IAAI,IAAI,CAAC,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,wCAAwC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,OAAa,EAAE,GAAG,IAAW;QACxC,IAAI,IAAI,CAAC,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,wCAAwC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6EAA6E;IACtE,OAAO,CAAC,OAAa,EAAE,GAAG,IAAW;QAC1C,IAAI,IAAI,CAAC,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,wCAAwC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QACD,mEAAmE;QACnE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,UAAU,CAAC,OAAa,EAAE,GAAG,cAAqB;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;YACrE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACvB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,qCAAqC,CAAC,OAAa,EAAE,IAAY;QACvE,MAAM,gBAAgB,GAAG;YACvB,+DAA+D;YAC/D,qEAAqE;YACrE,0BAA0B;YAC1B,8BAA8B;YAC9B,+DAA+D;YAC/D,kGAAkG;SACnG,CAAC;QAEF,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IACE,YAAY,CAAC,MAAM,IAAI,CAAC;gBACxB,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,WAAW;gBAC7C,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU;gBAC5C,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,YAAY,EAC9C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,wCAAwC,CAAC,OAAa;QAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAEzF,OAAO,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAS;QAClC,MAAM,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,4CAA4C,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,qBAAqB;YACrB,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,WAAgB,EAAE,CAAC;gBAC1B,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,IAAI,EACT,gCAAgC,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,CACrE,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QACD,aAAa;QACb,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC5F,MAAM,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,aAAa;YACb,MAAM,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC;YACH,IAAI,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,2BAA2B;YAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnF,wBAAwB;YACxB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;gBAClC,mBAAmB;gBACnB,MAAM,aAAa,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnF,MAAM,aAAa,GAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnF,IAAI,aAAa,GAAG,aAAa,EAAE,CAAC;oBAClC,OAAO,CAAC,CAAC,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,CAAC;gBACX,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,gCAAgC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport type { DiagLogger } from \"@opentelemetry/api\";\nimport {\n accessAsync,\n appendFileAsync,\n confirmDirExists,\n getShallowFileSize,\n readdirAsync,\n readFileAsync,\n writeFileAsync,\n unlinkAsync,\n} from \"../../utils/index.js\";\n\nexport class DiagFileConsoleLogger implements DiagLogger {\n private _TAG = \"DiagFileConsoleLogger:\";\n private _cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;\n private _fileCleanupTimer: NodeJS.Timeout | null = null;\n private _tempDir: string;\n private _logFileName: string;\n private _fileFullPath: string;\n private _backUpNameFormat: string;\n private _logToFile = false;\n private _logToConsole = true;\n private _maxHistory: number;\n private _maxSizeBytes: number;\n private _logDestination: string | undefined;\n\n constructor() {\n this._logDestination = process.env.APPLICATIONINSIGHTS_LOG_DESTINATION; // destination can be one of file, console or file+console\n if (this._logDestination === \"file+console\") {\n this._logToFile = true;\n }\n if (this._logDestination === \"file\") {\n this._logToFile = true;\n this._logToConsole = false;\n }\n this._maxSizeBytes = 50000;\n this._maxHistory = 1;\n this._logFileName = \"applicationinsights.log\";\n\n // If custom path not provided use temp folder, /tmp for *nix and USERDIR/AppData/Local/Temp for Windows\n const logFilePath = process.env.APPLICATIONINSIGHTS_LOGDIR;\n if (!logFilePath) {\n this._tempDir = path.join(os.tmpdir(), \"appInsights-node\");\n } else {\n if (path.isAbsolute(logFilePath)) {\n this._tempDir = logFilePath;\n } else {\n this._tempDir = path.join(process.cwd(), logFilePath);\n }\n }\n this._fileFullPath = path.join(this._tempDir, this._logFileName);\n this._backUpNameFormat = `.${this._logFileName}`; // {currentime}.applicationinsights.log\n\n if (this._logToFile) {\n if (!this._fileCleanupTimer) {\n this._fileCleanupTimer = setInterval(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._fileCleanupTask();\n }, this._cleanupTimeOut);\n this._fileCleanupTimer.unref();\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public error(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public warn(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public info(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public debug(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public verbose(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public async logMessage(message?: any, ...optionalParams: any[]): Promise<void> {\n try {\n const args = message ? [message, ...optionalParams] : optionalParams;\n if (this._logToFile) {\n await this._storeToDisk(args);\n }\n if (this._logToConsole) {\n // eslint-disable-next-line no-console\n console.log(...args);\n }\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(this._TAG, `Failed to log to file: ${err && err.message}`);\n }\n }\n\n /**\n * Checks if the warning message should be filtered out to avoid showing\n * non-actionable warnings to customers\n */\n private _shouldFilterResourceAttributeWarning(message?: any, args?: any[]): boolean {\n const messagesToFilter = [\n \"accessing resource attributes before async attributes settled\",\n \"resource attributes being accessed before async attributes finished\",\n \"async attributes settled\",\n \"unsettled resource attribute\",\n \"resource attributes accessed before async detection completed\",\n \"module @azure/core-tracing has been loaded before @azure/opentelemetry-instrumentation-azure-sdk\",\n ];\n\n const stringsToInspect: string[] = [];\n if (typeof message === \"string\") {\n stringsToInspect.push(message.toLowerCase());\n }\n if (args && Array.isArray(args)) {\n for (const arg of args) {\n if (typeof arg === \"string\") {\n stringsToInspect.push(arg.toLowerCase());\n }\n }\n }\n\n for (const text of stringsToInspect) {\n if (messagesToFilter.some((filterText) => text.includes(filterText))) {\n return true;\n }\n }\n\n if (typeof message === \"string\") {\n const messageParts = message.split(\" \");\n if (\n messageParts.length >= 3 &&\n messageParts[0].toLowerCase() === \"accessing\" &&\n messageParts[1].toLowerCase() === \"resource\" &&\n messageParts[2].toLowerCase() === \"attributes\"\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private _shouldFilterAzureMonitorExporterWarning(message?: any): boolean {\n if (typeof message !== \"string\") {\n return false;\n }\n\n const text = message.toLowerCase();\n if (!text.includes(\"otel_metrics_exporter\")) {\n return false;\n }\n\n const matchesUnsupportedValue = text.includes(\"unsupported otel_metrics_exporter value\");\n\n return matchesUnsupportedValue && text.includes(\"azure_monitor\");\n }\n\n private async _storeToDisk(args: any): Promise<void> {\n const data = `${args}\\r\\n`;\n\n try {\n await confirmDirExists(this._tempDir);\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(this._TAG, `Failed to create directory for log file: ${err && err.message}`);\n return;\n }\n try {\n await accessAsync(this._fileFullPath, fs.constants.F_OK);\n } catch (err: any) {\n // No file create one\n try {\n await appendFileAsync(this._fileFullPath, data);\n } catch (appendError: any) {\n // eslint-disable-next-line no-console\n console.log(\n this._TAG,\n `Failed to put log into file: ${appendError && appendError.message}`,\n );\n return;\n }\n }\n // Check size\n const size = await getShallowFileSize(this._fileFullPath);\n if (size && size > this._maxSizeBytes) {\n await this._createBackupFile(data);\n } else {\n await appendFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _createBackupFile(data: string): Promise<void> {\n try {\n const buffer = await readFileAsync(this._fileFullPath);\n const backupPath = path.join(this._tempDir, `${new Date().getTime()}.${this._logFileName}`);\n await writeFileAsync(backupPath, buffer);\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(\"Failed to generate backup log file\", err);\n } finally {\n // Store logs\n await writeFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _fileCleanupTask(): Promise<void> {\n try {\n let files = await readdirAsync(this._tempDir);\n // Filter only backup files\n files = files.filter((f) => path.basename(f).indexOf(this._backUpNameFormat) > -1);\n // Sort by creation date\n files.sort((a: string, b: string) => {\n // Check expiration\n const aCreationDate: Date = new Date(parseInt(a.split(this._backUpNameFormat)[0]));\n const bCreationDate: Date = new Date(parseInt(b.split(this._backUpNameFormat)[0]));\n if (aCreationDate < bCreationDate) {\n return -1;\n } else {\n return 1;\n }\n });\n const totalFiles = files.length;\n for (let i = 0; i < totalFiles - this._maxHistory; i++) {\n const pathToDelete = path.join(this._tempDir, files[i]);\n await unlinkAsync(pathToDelete);\n }\n } catch (err: any) {\n // eslint-disable-next-line no-console\n console.log(this._TAG, `Failed to cleanup log files: ${err && err.message}`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"diagFileConsoleLogger.js","sourceRoot":"","sources":["../../../../src/shared/logging/diagFileConsoleLogger.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport type { DiagLogger } from \"@opentelemetry/api\";\nimport {\n accessAsync,\n appendFileAsync,\n confirmDirExists,\n getShallowFileSize,\n readdirAsync,\n readFileAsync,\n writeFileAsync,\n unlinkAsync,\n} from \"../../utils/index.js\";\n\n// Capture the unpatched sink to prevent recursive diagnostic collection.\n// eslint-disable-next-line no-console\nconst originalConsoleLog: (...args: any[]) => void = console.log.bind(console);\n\nexport class DiagFileConsoleLogger implements DiagLogger {\n private _TAG = \"DiagFileConsoleLogger:\";\n private _cleanupTimeOut = 60 * 30 * 1000; // 30 minutes;\n private _fileCleanupTimer: NodeJS.Timeout | null = null;\n private _tempDir: string;\n private _logFileName: string;\n private _fileFullPath: string;\n private _backUpNameFormat: string;\n private _logToFile = false;\n private _logToConsole = true;\n private _maxHistory: number;\n private _maxSizeBytes: number;\n private _logDestination: string | undefined;\n\n constructor() {\n this._logDestination = process.env.APPLICATIONINSIGHTS_LOG_DESTINATION; // destination can be one of file, console or file+console\n if (this._logDestination === \"file+console\") {\n this._logToFile = true;\n }\n if (this._logDestination === \"file\") {\n this._logToFile = true;\n this._logToConsole = false;\n }\n this._maxSizeBytes = 50000;\n this._maxHistory = 1;\n this._logFileName = \"applicationinsights.log\";\n\n // If custom path not provided use temp folder, /tmp for *nix and USERDIR/AppData/Local/Temp for Windows\n const logFilePath = process.env.APPLICATIONINSIGHTS_LOGDIR;\n if (!logFilePath) {\n this._tempDir = path.join(os.tmpdir(), \"appInsights-node\");\n } else {\n if (path.isAbsolute(logFilePath)) {\n this._tempDir = logFilePath;\n } else {\n this._tempDir = path.join(process.cwd(), logFilePath);\n }\n }\n this._fileFullPath = path.join(this._tempDir, this._logFileName);\n this._backUpNameFormat = `.${this._logFileName}`; // {currentime}.applicationinsights.log\n\n if (this._logToFile) {\n if (!this._fileCleanupTimer) {\n this._fileCleanupTimer = setInterval(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._fileCleanupTask();\n }, this._cleanupTimeOut);\n this._fileCleanupTimer.unref();\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public error(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public warn(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public info(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public debug(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public verbose(message?: any, ...args: any[]): void {\n if (this._shouldFilterResourceAttributeWarning(message, args)) {\n return;\n }\n if (this._shouldFilterAzureMonitorExporterWarning(message)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.logMessage(message, args);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n public async logMessage(message?: any, ...optionalParams: any[]): Promise<void> {\n try {\n const args = message ? [message, ...optionalParams] : optionalParams;\n if (this._logToFile) {\n await this._storeToDisk(args);\n }\n if (this._logToConsole) {\n this._writeToConsole(...args);\n }\n } catch (err: any) {\n this._writeToConsole(this._TAG, `Failed to log to file: ${err && err.message}`);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n private _writeToConsole(...args: any[]): void {\n originalConsoleLog(...args);\n }\n\n /**\n * Checks if the warning message should be filtered out to avoid showing\n * non-actionable warnings to customers\n */\n private _shouldFilterResourceAttributeWarning(message?: any, args?: any[]): boolean {\n const messagesToFilter = [\n \"accessing resource attributes before async attributes settled\",\n \"resource attributes being accessed before async attributes finished\",\n \"async attributes settled\",\n \"unsettled resource attribute\",\n \"resource attributes accessed before async detection completed\",\n \"module @azure/core-tracing has been loaded before @azure/opentelemetry-instrumentation-azure-sdk\",\n ];\n\n const stringsToInspect: string[] = [];\n if (typeof message === \"string\") {\n stringsToInspect.push(message.toLowerCase());\n }\n if (args && Array.isArray(args)) {\n for (const arg of args) {\n if (typeof arg === \"string\") {\n stringsToInspect.push(arg.toLowerCase());\n }\n }\n }\n\n for (const text of stringsToInspect) {\n if (messagesToFilter.some((filterText) => text.includes(filterText))) {\n return true;\n }\n }\n\n if (typeof message === \"string\") {\n const messageParts = message.split(\" \");\n if (\n messageParts.length >= 3 &&\n messageParts[0].toLowerCase() === \"accessing\" &&\n messageParts[1].toLowerCase() === \"resource\" &&\n messageParts[2].toLowerCase() === \"attributes\"\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private _shouldFilterAzureMonitorExporterWarning(message?: any): boolean {\n if (typeof message !== \"string\") {\n return false;\n }\n\n const text = message.toLowerCase();\n if (!text.includes(\"otel_metrics_exporter\")) {\n return false;\n }\n\n const matchesUnsupportedValue = text.includes(\"unsupported otel_metrics_exporter value\");\n\n return matchesUnsupportedValue && text.includes(\"azure_monitor\");\n }\n\n private async _storeToDisk(args: any): Promise<void> {\n const data = `${args}\\r\\n`;\n\n try {\n await confirmDirExists(this._tempDir);\n } catch (err: any) {\n this._writeToConsole(\n this._TAG,\n `Failed to create directory for log file: ${err && err.message}`,\n );\n return;\n }\n try {\n await accessAsync(this._fileFullPath, fs.constants.F_OK);\n } catch (err: any) {\n // No file create one\n try {\n await appendFileAsync(this._fileFullPath, data);\n } catch (appendError: any) {\n this._writeToConsole(\n this._TAG,\n `Failed to put log into file: ${appendError && appendError.message}`,\n );\n return;\n }\n }\n // Check size\n const size = await getShallowFileSize(this._fileFullPath);\n if (size && size > this._maxSizeBytes) {\n await this._createBackupFile(data);\n } else {\n await appendFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _createBackupFile(data: string): Promise<void> {\n try {\n const buffer = await readFileAsync(this._fileFullPath);\n const backupPath = path.join(this._tempDir, `${new Date().getTime()}.${this._logFileName}`);\n await writeFileAsync(backupPath, buffer);\n } catch (err: any) {\n this._writeToConsole(this._TAG, \"Failed to generate backup log file\", err);\n } finally {\n // Store logs\n await writeFileAsync(this._fileFullPath, data);\n }\n }\n\n private async _fileCleanupTask(): Promise<void> {\n try {\n let files = await readdirAsync(this._tempDir);\n // Filter only backup files\n files = files.filter((f) => path.basename(f).indexOf(this._backUpNameFormat) > -1);\n // Sort by creation date\n files.sort((a: string, b: string) => {\n // Check expiration\n const aCreationDate: Date = new Date(parseInt(a.split(this._backUpNameFormat)[0]));\n const bCreationDate: Date = new Date(parseInt(b.split(this._backUpNameFormat)[0]));\n if (aCreationDate < bCreationDate) {\n return -1;\n } else {\n return 1;\n }\n });\n const totalFiles = files.length;\n for (let i = 0; i < totalFiles - this._maxHistory; i++) {\n const pathToDelete = path.join(this._tempDir, files[i]);\n await unlinkAsync(pathToDelete);\n }\n } catch (err: any) {\n this._writeToConsole(this._TAG, `Failed to cleanup log files: ${err && err.message}`);\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
|