@azure/monitor-opentelemetry-exporter 1.0.0-beta.30 → 1.0.0-beta.32
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 +4 -4
- package/dist/commonjs/Declarations/Constants.d.ts +1 -1
- package/dist/commonjs/Declarations/Constants.d.ts.map +1 -1
- package/dist/commonjs/Declarations/Constants.js +1 -1
- package/dist/commonjs/Declarations/Constants.js.map +1 -1
- package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.d.ts +7 -7
- package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.d.ts.map +1 -1
- package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.js +35 -20
- package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.js.map +1 -1
- package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.d.ts +6 -1
- package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.d.ts.map +1 -1
- package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.js +71 -30
- package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.js.map +1 -1
- package/dist/commonjs/generated/applicationInsightsClient.js +1 -1
- package/dist/commonjs/generated/applicationInsightsClient.js.map +1 -1
- package/dist/commonjs/platform/nodejs/baseSender.d.ts.map +1 -1
- package/dist/commonjs/platform/nodejs/baseSender.js +48 -22
- package/dist/commonjs/platform/nodejs/baseSender.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/types.d.ts +16 -5
- package/dist/commonjs/types.d.ts.map +1 -1
- package/dist/commonjs/types.js +17 -3
- package/dist/commonjs/types.js.map +1 -1
- package/dist/commonjs/utils/common.d.ts +2 -1
- package/dist/commonjs/utils/common.d.ts.map +1 -1
- package/dist/commonjs/utils/common.js +5 -0
- package/dist/commonjs/utils/common.js.map +1 -1
- package/dist/commonjs/utils/connectionStringParser.d.ts.map +1 -1
- package/dist/commonjs/utils/connectionStringParser.js +3 -3
- package/dist/commonjs/utils/connectionStringParser.js.map +1 -1
- package/dist/commonjs/utils/constants/applicationinsights.d.ts +1 -1
- package/dist/commonjs/utils/constants/applicationinsights.js +1 -1
- package/dist/commonjs/utils/constants/applicationinsights.js.map +1 -1
- package/dist/commonjs/utils/logUtils.d.ts.map +1 -1
- package/dist/commonjs/utils/logUtils.js +3 -0
- package/dist/commonjs/utils/logUtils.js.map +1 -1
- package/dist/commonjs/utils/metricUtils.d.ts.map +1 -1
- package/dist/commonjs/utils/metricUtils.js +9 -1
- package/dist/commonjs/utils/metricUtils.js.map +1 -1
- package/dist/commonjs/utils/spanUtils.d.ts.map +1 -1
- package/dist/commonjs/utils/spanUtils.js +9 -6
- package/dist/commonjs/utils/spanUtils.js.map +1 -1
- package/dist/esm/Declarations/Constants.d.ts +1 -1
- package/dist/esm/Declarations/Constants.d.ts.map +1 -1
- package/dist/esm/Declarations/Constants.js +1 -1
- package/dist/esm/Declarations/Constants.js.map +1 -1
- package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.d.ts +7 -7
- package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.d.ts.map +1 -1
- package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.js +34 -20
- package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.js.map +1 -1
- package/dist/esm/export/statsbeat/networkStatsbeatMetrics.d.ts +6 -1
- package/dist/esm/export/statsbeat/networkStatsbeatMetrics.d.ts.map +1 -1
- package/dist/esm/export/statsbeat/networkStatsbeatMetrics.js +71 -30
- package/dist/esm/export/statsbeat/networkStatsbeatMetrics.js.map +1 -1
- package/dist/esm/generated/applicationInsightsClient.js +1 -1
- package/dist/esm/generated/applicationInsightsClient.js.map +1 -1
- package/dist/esm/platform/nodejs/baseSender.d.ts.map +1 -1
- package/dist/esm/platform/nodejs/baseSender.js +49 -23
- package/dist/esm/platform/nodejs/baseSender.js.map +1 -1
- package/dist/esm/types.d.ts +16 -5
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +17 -3
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/common.d.ts +2 -1
- package/dist/esm/utils/common.d.ts.map +1 -1
- package/dist/esm/utils/common.js +4 -0
- package/dist/esm/utils/common.js.map +1 -1
- package/dist/esm/utils/connectionStringParser.d.ts.map +1 -1
- package/dist/esm/utils/connectionStringParser.js +3 -3
- package/dist/esm/utils/connectionStringParser.js.map +1 -1
- package/dist/esm/utils/constants/applicationinsights.d.ts +1 -1
- package/dist/esm/utils/constants/applicationinsights.js +1 -1
- package/dist/esm/utils/constants/applicationinsights.js.map +1 -1
- package/dist/esm/utils/logUtils.d.ts.map +1 -1
- package/dist/esm/utils/logUtils.js +4 -1
- package/dist/esm/utils/logUtils.js.map +1 -1
- package/dist/esm/utils/metricUtils.d.ts.map +1 -1
- package/dist/esm/utils/metricUtils.js +9 -1
- package/dist/esm/utils/metricUtils.js.map +1 -1
- package/dist/esm/utils/spanUtils.d.ts.map +1 -1
- package/dist/esm/utils/spanUtils.js +10 -7
- package/dist/esm/utils/spanUtils.js.map +1 -1
- package/package.json +16 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spanUtils.js","sourceRoot":"","sources":["../../../src/utils/spanUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport type { Link, Attributes, AttributeValue } from \"@opentelemetry/api\";\nimport { diag, SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport {\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 SEMATTRS_DB_SYSTEM,\n SEMATTRS_ENDUSER_ID,\n SEMATTRS_EXCEPTION_ESCAPED,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_EXCEPTION_TYPE,\n SEMATTRS_HTTP_CLIENT_IP,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_NET_PEER_IP,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMATTRS_RPC_SYSTEM,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_CLIENT_ADDRESS,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_USER_AGENT_ORIGINAL,\n ATTR_HTTP_ROUTE,\n ATTR_URL_FULL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_SCHEME,\n ATTR_URL_SCHEME,\n SEMATTRS_HTTP_TARGET,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_SERVER_ADDRESS,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_NET_PEER_NAME,\n ATTR_CLIENT_PORT,\n ATTR_SERVER_PORT,\n SEMATTRS_NET_PEER_PORT,\n} from \"@opentelemetry/semantic-conventions\";\n\nimport {\n createTagsFromResource,\n getDependencyTarget,\n getUrl,\n hrTimeToDate,\n isSqlDB,\n serializeAttribute,\n} from \"./common.js\";\nimport type { Tags, Properties, MSLink, Measurements } from \"../types.js\";\nimport {\n httpSemanticValues,\n internalMicrosoftAttributes,\n legacySemanticValues,\n MaxPropertyLengths,\n} from \"../types.js\";\nimport { parseEventHubSpan } from \"./eventhub.js\";\nimport {\n AzureMonitorSampleRate,\n DependencyTypes,\n MS_LINKS,\n} from \"./constants/applicationinsights.js\";\nimport { AzNamespace, MicrosoftEventHub } from \"./constants/span/azAttributes.js\";\nimport type {\n TelemetryExceptionData,\n MessageData,\n RemoteDependencyData,\n RequestData,\n TelemetryItem as Envelope,\n TelemetryExceptionDetails,\n} from \"../generated/index.js\";\nimport { KnownContextTagKeys } from \"../generated/index.js\";\nimport { msToTimeSpan } from \"./breezeUtils.js\";\n\nfunction createTagsFromSpan(span: ReadableSpan): Tags {\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n if (span.parentSpanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = span.parentSpanId;\n }\n const endUserId = span.attributes[SEMATTRS_ENDUSER_ID];\n if (endUserId) {\n tags[KnownContextTagKeys.AiUserId] = String(endUserId);\n }\n const httpUserAgent = getUserAgent(span.attributes);\n if (httpUserAgent) {\n // TODO: Not exposed in Swagger, need to update def\n tags[\"ai.user.userAgent\"] = String(httpUserAgent);\n }\n if (span.kind === SpanKind.SERVER) {\n const httpMethod = getHttpMethod(span.attributes);\n getLocationIp(tags, span.attributes);\n if (httpMethod) {\n const httpRoute = span.attributes[ATTR_HTTP_ROUTE];\n const httpUrl = getHttpUrl(span.attributes);\n tags[KnownContextTagKeys.AiOperationName] = span.name; // Default\n if (httpRoute) {\n // AiOperationName max length is 1024\n // https://github.com/MohanGsk/ApplicationInsights-Home/blob/master/EndpointSpecs/Schemas/Bond/ContextTagKeys.bond\n tags[KnownContextTagKeys.AiOperationName] = String(\n `${httpMethod as string} ${httpRoute as string}`,\n ).substring(0, MaxPropertyLengths.TEN_BIT);\n } else if (httpUrl) {\n try {\n const url = new URL(String(httpUrl));\n tags[KnownContextTagKeys.AiOperationName] = String(\n `${httpMethod} ${url.pathname}`,\n ).substring(0, MaxPropertyLengths.TEN_BIT);\n } catch {\n /* no-op */\n }\n }\n } else {\n tags[KnownContextTagKeys.AiOperationName] = span.name;\n }\n } else {\n if (span.attributes[KnownContextTagKeys.AiOperationName]) {\n tags[KnownContextTagKeys.AiOperationName] = span.attributes[\n KnownContextTagKeys.AiOperationName\n ] as string;\n }\n }\n // TODO: Location IP TBD for non server spans\n\n return tags;\n}\n\nfunction createPropertiesFromSpanAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n // Avoid duplication ignoring fields already mapped.\n if (\n // We need to not ignore the _MS.ProcessedByMetricExtractors key as it's used to identify standard metrics\n !(\n (key.startsWith(\"_MS.\") && !internalMicrosoftAttributes.includes(key as any)) ||\n key.startsWith(\"microsoft.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any) ||\n key === (KnownContextTagKeys.AiOperationName as string)\n )\n ) {\n properties[key] = serializeAttribute(attributes[key]);\n }\n }\n }\n return properties;\n}\n\nfunction createPropertiesFromSpan(span: ReadableSpan): [Properties, Measurements] {\n const properties: Properties = createPropertiesFromSpanAttributes(span.attributes);\n const measurements: Measurements = {};\n\n const links: MSLink[] = span.links.map((link: Link) => ({\n operation_Id: link.context.traceId,\n id: link.context.spanId,\n }));\n if (links.length > 0) {\n properties[MS_LINKS] = JSON.stringify(links);\n }\n return [properties, measurements];\n}\n\nfunction createDependencyData(span: ReadableSpan): RemoteDependencyData {\n const remoteDependencyData: RemoteDependencyData = {\n name: span.name, // Default\n id: `${span.spanContext().spanId}`,\n success: span.status?.code !== SpanStatusCode.ERROR,\n resultCode: \"0\",\n type: \"Dependency\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n };\n if (span.kind === SpanKind.PRODUCER) {\n remoteDependencyData.type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanId) {\n remoteDependencyData.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 try {\n const dependencyUrl = new URL(String(httpUrl));\n remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;\n } catch {\n /* no-op */\n }\n }\n remoteDependencyData.type = DependencyTypes.Http;\n remoteDependencyData.data = getUrl(span.attributes);\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n remoteDependencyData.resultCode = String(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 {\n /* no-op */\n }\n remoteDependencyData.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 remoteDependencyData.type = \"mysql\";\n } else if (String(dbSystem) === DBSYSTEMVALUES_POSTGRESQL) {\n remoteDependencyData.type = \"postgresql\";\n } else if (String(dbSystem) === DBSYSTEMVALUES_MONGODB) {\n remoteDependencyData.type = \"mongodb\";\n } else if (String(dbSystem) === DBSYSTEMVALUES_REDIS) {\n remoteDependencyData.type = \"redis\";\n } else if (isSqlDB(String(dbSystem))) {\n remoteDependencyData.type = \"SQL\";\n } else {\n remoteDependencyData.type = String(dbSystem);\n }\n const dbStatement = span.attributes[SEMATTRS_DB_STATEMENT];\n const dbOperation = span.attributes[SEMATTRS_DB_OPERATION];\n if (dbStatement) {\n remoteDependencyData.data = String(dbStatement);\n } else if (dbOperation) {\n remoteDependencyData.data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SEMATTRS_DB_NAME];\n if (target) {\n remoteDependencyData.target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n remoteDependencyData.target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n // grpc Dependency\n else if (rpcSystem) {\n if (rpcSystem === DependencyTypes.Wcf) {\n remoteDependencyData.type = DependencyTypes.Wcf;\n } else {\n remoteDependencyData.type = DependencyTypes.Grpc;\n }\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n remoteDependencyData.resultCode = String(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n remoteDependencyData.target = `${target}`;\n } else if (rpcSystem) {\n remoteDependencyData.target = String(rpcSystem);\n }\n }\n return remoteDependencyData;\n}\n\nfunction createRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n id: `${span.spanContext().spanId}`,\n success:\n span.status.code !== SpanStatusCode.ERROR &&\n (Number(getHttpStatusCode(span.attributes)) || 0) < 400,\n responseCode: \"0\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n source: undefined,\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 const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n requestData.responseCode = String(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.responseCode = String(grpcStatusCode);\n }\n return requestData;\n}\n\n/**\n * Span to Azure envelope parsing.\n * @internal\n */\nexport function readableSpanToEnvelope(span: ReadableSpan, ikey: string): Envelope {\n let name: string;\n let baseType: \"RemoteDependencyData\" | \"RequestData\";\n let baseData: RemoteDependencyData | RequestData;\n\n const time = hrTimeToDate(span.startTime);\n const instrumentationKey = ikey;\n const tags = createTagsFromSpan(span);\n const [properties, measurements] = createPropertiesFromSpan(span);\n switch (span.kind) {\n case SpanKind.CLIENT:\n case SpanKind.PRODUCER:\n case SpanKind.INTERNAL:\n name = \"Microsoft.ApplicationInsights.RemoteDependency\";\n baseType = \"RemoteDependencyData\";\n baseData = createDependencyData(span);\n break;\n case SpanKind.SERVER:\n case SpanKind.CONSUMER:\n name = \"Microsoft.ApplicationInsights.Request\";\n baseType = \"RequestData\";\n baseData = createRequestData(span);\n baseData.name = tags[KnownContextTagKeys.AiOperationName];\n break;\n default:\n // never\n diag.error(`Unsupported span kind ${span.kind}`);\n throw new Error(`Unsupported span kind ${span.kind}`);\n }\n\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n\n // Azure SDK\n if (span.attributes[AzNamespace]) {\n if (span.kind === SpanKind.INTERNAL) {\n baseData.type = `${DependencyTypes.InProc} | ${span.attributes[AzNamespace]}`;\n }\n if (span.attributes[AzNamespace] === MicrosoftEventHub) {\n parseEventHubSpan(span, baseData);\n }\n }\n\n // Truncate properties\n if (baseData.id) {\n baseData.id = baseData.id.substring(0, MaxPropertyLengths.NINE_BIT);\n }\n if (baseData.name) {\n baseData.name = baseData.name.substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.resultCode) {\n baseData.resultCode = String(baseData.resultCode).substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.data) {\n baseData.data = String(baseData.data).substring(0, MaxPropertyLengths.THIRTEEN_BIT);\n }\n if (baseData.type) {\n baseData.type = String(baseData.type).substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.target) {\n baseData.target = String(baseData.target).substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.properties) {\n for (const key of Object.keys(baseData.properties)) {\n baseData.properties[key] = baseData.properties[key].substring(\n 0,\n MaxPropertyLengths.THIRTEEN_BIT,\n );\n }\n }\n\n return {\n name,\n sampleRate,\n time,\n instrumentationKey,\n tags,\n version: 1,\n data: {\n baseType,\n baseData: {\n ...baseData,\n properties,\n measurements,\n },\n },\n };\n}\n\n/**\n * Span Events to Azure envelopes parsing.\n * @internal\n */\nexport function spanEventsToEnvelopes(span: ReadableSpan, ikey: string): Envelope[] {\n const envelopes: Envelope[] = [];\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n let baseType: \"ExceptionData\" | \"MessageData\";\n const time = hrTimeToDate(event.time);\n let name = \"\";\n let baseData: TelemetryExceptionData | MessageData;\n const properties = createPropertiesFromSpanAttributes(event.attributes);\n\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n const spanId = span.spanContext()?.spanId;\n if (spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = spanId;\n }\n\n // Only generate exception telemetry for incoming requests\n if (event.name === \"exception\") {\n name = \"Microsoft.ApplicationInsights.Exception\";\n baseType = \"ExceptionData\";\n let typeName = \"\";\n let message = \"Exception\";\n let stack = \"\";\n let hasFullStack = false;\n if (event.attributes) {\n typeName = String(event.attributes[SEMATTRS_EXCEPTION_TYPE]);\n stack = String(event.attributes[SEMATTRS_EXCEPTION_STACKTRACE]);\n if (stack) {\n hasFullStack = true;\n }\n const exceptionMsg = event.attributes[SEMATTRS_EXCEPTION_MESSAGE];\n if (exceptionMsg) {\n message = String(exceptionMsg);\n }\n const escaped = event.attributes[SEMATTRS_EXCEPTION_ESCAPED];\n if (escaped !== undefined) {\n properties[SEMATTRS_EXCEPTION_ESCAPED] = String(escaped);\n }\n }\n const exceptionDetails: TelemetryExceptionDetails = {\n typeName: typeName,\n message: message,\n stack: stack,\n hasFullStack: hasFullStack,\n };\n const exceptionData: TelemetryExceptionData = {\n exceptions: [exceptionDetails],\n version: 2,\n properties: properties,\n };\n baseData = exceptionData;\n } else {\n name = \"Microsoft.ApplicationInsights.Message\";\n baseType = \"MessageData\";\n const messageData: MessageData = {\n message: event.name,\n version: 2,\n properties: properties,\n };\n baseData = messageData;\n }\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n // Truncate properties\n if (baseData.message) {\n baseData.message = String(baseData.message).substring(0, MaxPropertyLengths.FIFTEEN_BIT);\n }\n if (baseData.properties) {\n for (const key of Object.keys(baseData.properties)) {\n baseData.properties[key] = baseData.properties[key].substring(\n 0,\n MaxPropertyLengths.THIRTEEN_BIT,\n );\n }\n }\n const env: Envelope = {\n name: name,\n time: time,\n instrumentationKey: ikey,\n version: 1,\n sampleRate: sampleRate,\n data: {\n baseType: baseType,\n baseData: baseData,\n },\n tags: tags,\n };\n envelopes.push(env);\n });\n }\n return envelopes;\n}\n\nexport function getPeerIp(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_NETWORK_PEER_ADDRESS] || attributes[SEMATTRS_NET_PEER_IP];\n }\n return;\n}\n\nexport function getLocationIp(tags: Tags, attributes: Attributes): void {\n if (attributes) {\n const httpClientIp = getHttpClientIp(attributes);\n const netPeerIp = getPeerIp(attributes);\n if (httpClientIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(httpClientIp);\n } else if (netPeerIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(netPeerIp);\n }\n }\n}\n\nexport function getHttpClientIp(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_HTTP_CLIENT_IP];\n }\n return;\n}\n\nexport function getUserAgent(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_USER_AGENT_ORIGINAL] || attributes[SEMATTRS_HTTP_USER_AGENT];\n }\n return;\n}\n\nexport function getHttpUrl(attributes: Attributes): AttributeValue | undefined {\n // Stable sem conv only supports populating url from `url.full`\n if (attributes) {\n return attributes[ATTR_URL_FULL] || attributes[SEMATTRS_HTTP_URL];\n }\n return;\n}\n\nexport function getHttpMethod(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n }\n return;\n}\n\nexport function getHttpStatusCode(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n }\n return;\n}\n\nexport function getHttpScheme(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_URL_SCHEME] || attributes[SEMATTRS_HTTP_SCHEME];\n }\n return;\n}\n\nexport function getHttpTarget(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n if (attributes[ATTR_URL_PATH]) {\n return attributes[ATTR_URL_PATH];\n }\n if (attributes[ATTR_URL_QUERY]) {\n return attributes[ATTR_URL_QUERY];\n }\n return attributes[SEMATTRS_HTTP_TARGET];\n }\n return;\n}\n\nexport function getHttpHost(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_SERVER_ADDRESS] || attributes[SEMATTRS_HTTP_HOST];\n }\n return;\n}\n\nexport function getNetPeerName(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_NET_PEER_NAME];\n }\n return;\n}\n\nexport function getNetPeerPort(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return (\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":"spanUtils.js","sourceRoot":"","sources":["../../../src/utils/spanUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport type { Link, Attributes, AttributeValue } from \"@opentelemetry/api\";\nimport { diag, SpanKind, SpanStatusCode } from \"@opentelemetry/api\";\nimport {\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 SEMATTRS_DB_SYSTEM,\n SEMATTRS_ENDUSER_ID,\n SEMATTRS_EXCEPTION_ESCAPED,\n SEMATTRS_EXCEPTION_MESSAGE,\n SEMATTRS_EXCEPTION_STACKTRACE,\n SEMATTRS_EXCEPTION_TYPE,\n SEMATTRS_HTTP_CLIENT_IP,\n SEMATTRS_HTTP_METHOD,\n SEMATTRS_HTTP_STATUS_CODE,\n SEMATTRS_HTTP_URL,\n SEMATTRS_HTTP_USER_AGENT,\n SEMATTRS_NET_PEER_IP,\n SEMATTRS_RPC_GRPC_STATUS_CODE,\n SEMATTRS_RPC_SYSTEM,\n ATTR_HTTP_REQUEST_METHOD,\n ATTR_CLIENT_ADDRESS,\n ATTR_NETWORK_PEER_ADDRESS,\n ATTR_USER_AGENT_ORIGINAL,\n ATTR_HTTP_ROUTE,\n ATTR_URL_FULL,\n ATTR_HTTP_RESPONSE_STATUS_CODE,\n SEMATTRS_HTTP_SCHEME,\n ATTR_URL_SCHEME,\n SEMATTRS_HTTP_TARGET,\n ATTR_URL_PATH,\n ATTR_URL_QUERY,\n ATTR_SERVER_ADDRESS,\n SEMATTRS_HTTP_HOST,\n SEMATTRS_NET_PEER_NAME,\n ATTR_CLIENT_PORT,\n ATTR_SERVER_PORT,\n SEMATTRS_NET_PEER_PORT,\n} from \"@opentelemetry/semantic-conventions\";\n\nimport {\n createTagsFromResource,\n getDependencyTarget,\n getUrl,\n hrTimeToDate,\n isSqlDB,\n isSyntheticSource,\n serializeAttribute,\n} from \"./common.js\";\nimport type { Tags, Properties, MSLink, Measurements } from \"../types.js\";\nimport {\n httpSemanticValues,\n internalMicrosoftAttributes,\n legacySemanticValues,\n MaxPropertyLengths,\n} from \"../types.js\";\nimport { parseEventHubSpan } from \"./eventhub.js\";\nimport {\n AzureMonitorSampleRate,\n DependencyTypes,\n MS_LINKS,\n} from \"./constants/applicationinsights.js\";\nimport { AzNamespace, MicrosoftEventHub } from \"./constants/span/azAttributes.js\";\nimport type {\n TelemetryExceptionData,\n MessageData,\n RemoteDependencyData,\n RequestData,\n TelemetryItem as Envelope,\n TelemetryExceptionDetails,\n} from \"../generated/index.js\";\nimport { KnownContextTagKeys } from \"../generated/index.js\";\nimport { msToTimeSpan } from \"./breezeUtils.js\";\n\nfunction createTagsFromSpan(span: ReadableSpan): Tags {\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n if (span.parentSpanContext?.spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = span.parentSpanContext.spanId;\n }\n const endUserId = span.attributes[SEMATTRS_ENDUSER_ID];\n if (endUserId) {\n tags[KnownContextTagKeys.AiUserId] = String(endUserId);\n }\n const httpUserAgent = getUserAgent(span.attributes);\n if (httpUserAgent) {\n // TODO: Not exposed in Swagger, need to update def\n tags[\"ai.user.userAgent\"] = String(httpUserAgent);\n }\n if (isSyntheticSource(span.attributes)) {\n tags[KnownContextTagKeys.AiOperationSyntheticSource] = \"True\";\n }\n if (span.kind === SpanKind.SERVER) {\n const httpMethod = getHttpMethod(span.attributes);\n getLocationIp(tags, span.attributes);\n if (httpMethod) {\n const httpRoute = span.attributes[ATTR_HTTP_ROUTE];\n const httpUrl = getHttpUrl(span.attributes);\n tags[KnownContextTagKeys.AiOperationName] = span.name; // Default\n if (httpRoute) {\n // AiOperationName max length is 1024\n // https://github.com/MohanGsk/ApplicationInsights-Home/blob/master/EndpointSpecs/Schemas/Bond/ContextTagKeys.bond\n tags[KnownContextTagKeys.AiOperationName] = String(\n `${httpMethod as string} ${httpRoute as string}`,\n ).substring(0, MaxPropertyLengths.TEN_BIT);\n } else if (httpUrl) {\n try {\n const url = new URL(String(httpUrl));\n tags[KnownContextTagKeys.AiOperationName] = String(\n `${httpMethod} ${url.pathname}`,\n ).substring(0, MaxPropertyLengths.TEN_BIT);\n } catch {\n /* no-op */\n }\n }\n } else {\n tags[KnownContextTagKeys.AiOperationName] = span.name;\n }\n } else {\n if (span.attributes[KnownContextTagKeys.AiOperationName]) {\n tags[KnownContextTagKeys.AiOperationName] = span.attributes[\n KnownContextTagKeys.AiOperationName\n ] as string;\n }\n }\n // TODO: Location IP TBD for non server spans\n\n return tags;\n}\n\nfunction createPropertiesFromSpanAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n // Avoid duplication ignoring fields already mapped.\n if (\n // We need to not ignore the _MS.ProcessedByMetricExtractors key as it's used to identify standard metrics\n !(\n (key.startsWith(\"_MS.\") && !internalMicrosoftAttributes.includes(key as any)) ||\n key.startsWith(\"microsoft.\") ||\n legacySemanticValues.includes(key) ||\n httpSemanticValues.includes(key as any) ||\n key === (KnownContextTagKeys.AiOperationName as string)\n )\n ) {\n properties[key] = serializeAttribute(attributes[key]);\n }\n }\n }\n return properties;\n}\n\nfunction createPropertiesFromSpan(span: ReadableSpan): [Properties, Measurements] {\n const properties: Properties = createPropertiesFromSpanAttributes(span.attributes);\n const measurements: Measurements = {};\n\n const links: MSLink[] = span.links.map((link: Link) => ({\n operation_Id: link.context.traceId,\n id: link.context.spanId,\n }));\n if (links.length > 0) {\n properties[MS_LINKS] = JSON.stringify(links);\n }\n return [properties, measurements];\n}\n\nfunction createDependencyData(span: ReadableSpan): RemoteDependencyData {\n const remoteDependencyData: RemoteDependencyData = {\n name: span.name, // Default\n id: `${span.spanContext().spanId}`,\n success: span.status?.code !== SpanStatusCode.ERROR,\n resultCode: \"0\",\n type: \"Dependency\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n };\n if (span.kind === SpanKind.PRODUCER) {\n remoteDependencyData.type = DependencyTypes.QueueMessage;\n }\n if (span.kind === SpanKind.INTERNAL && span.parentSpanContext) {\n remoteDependencyData.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 try {\n const dependencyUrl = new URL(String(httpUrl));\n remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;\n } catch {\n /* no-op */\n }\n }\n remoteDependencyData.type = DependencyTypes.Http;\n remoteDependencyData.data = getUrl(span.attributes);\n const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n remoteDependencyData.resultCode = String(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 {\n /* no-op */\n }\n remoteDependencyData.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 remoteDependencyData.type = \"mysql\";\n } else if (String(dbSystem) === DBSYSTEMVALUES_POSTGRESQL) {\n remoteDependencyData.type = \"postgresql\";\n } else if (String(dbSystem) === DBSYSTEMVALUES_MONGODB) {\n remoteDependencyData.type = \"mongodb\";\n } else if (String(dbSystem) === DBSYSTEMVALUES_REDIS) {\n remoteDependencyData.type = \"redis\";\n } else if (isSqlDB(String(dbSystem))) {\n remoteDependencyData.type = \"SQL\";\n } else {\n remoteDependencyData.type = String(dbSystem);\n }\n const dbStatement = span.attributes[SEMATTRS_DB_STATEMENT];\n const dbOperation = span.attributes[SEMATTRS_DB_OPERATION];\n if (dbStatement) {\n remoteDependencyData.data = String(dbStatement);\n } else if (dbOperation) {\n remoteDependencyData.data = String(dbOperation);\n }\n const target = getDependencyTarget(span.attributes);\n const dbName = span.attributes[SEMATTRS_DB_NAME];\n if (target) {\n remoteDependencyData.target = dbName ? `${target}|${dbName}` : `${target}`;\n } else {\n remoteDependencyData.target = dbName ? `${dbName}` : `${dbSystem}`;\n }\n }\n // grpc Dependency\n else if (rpcSystem) {\n if (rpcSystem === DependencyTypes.Wcf) {\n remoteDependencyData.type = DependencyTypes.Wcf;\n } else {\n remoteDependencyData.type = DependencyTypes.Grpc;\n }\n const grpcStatusCode = span.attributes[SEMATTRS_RPC_GRPC_STATUS_CODE];\n if (grpcStatusCode) {\n remoteDependencyData.resultCode = String(grpcStatusCode);\n }\n const target = getDependencyTarget(span.attributes);\n if (target) {\n remoteDependencyData.target = `${target}`;\n } else if (rpcSystem) {\n remoteDependencyData.target = String(rpcSystem);\n }\n }\n return remoteDependencyData;\n}\n\nfunction createRequestData(span: ReadableSpan): RequestData {\n const requestData: RequestData = {\n id: `${span.spanContext().spanId}`,\n success:\n span.status.code !== SpanStatusCode.ERROR &&\n (Number(getHttpStatusCode(span.attributes)) || 0) < 400,\n responseCode: \"0\",\n duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),\n version: 2,\n source: undefined,\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 const httpStatusCode = getHttpStatusCode(span.attributes);\n if (httpStatusCode) {\n requestData.responseCode = String(httpStatusCode);\n }\n } else if (grpcStatusCode) {\n requestData.responseCode = String(grpcStatusCode);\n }\n return requestData;\n}\n\n/**\n * Span to Azure envelope parsing.\n * @internal\n */\nexport function readableSpanToEnvelope(span: ReadableSpan, ikey: string): Envelope {\n let name: string;\n let baseType: \"RemoteDependencyData\" | \"RequestData\";\n let baseData: RemoteDependencyData | RequestData;\n\n const time = hrTimeToDate(span.startTime);\n const instrumentationKey = ikey;\n const tags = createTagsFromSpan(span);\n const [properties, measurements] = createPropertiesFromSpan(span);\n switch (span.kind) {\n case SpanKind.CLIENT:\n case SpanKind.PRODUCER:\n case SpanKind.INTERNAL:\n name = \"Microsoft.ApplicationInsights.RemoteDependency\";\n baseType = \"RemoteDependencyData\";\n baseData = createDependencyData(span);\n break;\n case SpanKind.SERVER:\n case SpanKind.CONSUMER:\n name = \"Microsoft.ApplicationInsights.Request\";\n baseType = \"RequestData\";\n baseData = createRequestData(span);\n baseData.name = tags[KnownContextTagKeys.AiOperationName];\n break;\n default:\n // never\n diag.error(`Unsupported span kind ${span.kind}`);\n throw new Error(`Unsupported span kind ${span.kind}`);\n }\n\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n\n // Azure SDK\n if (span.attributes[AzNamespace]) {\n if (span.kind === SpanKind.INTERNAL) {\n baseData.type = `${DependencyTypes.InProc} | ${span.attributes[AzNamespace]}`;\n }\n if (span.attributes[AzNamespace] === MicrosoftEventHub) {\n parseEventHubSpan(span, baseData);\n }\n }\n\n // Truncate properties\n if (baseData.id) {\n baseData.id = baseData.id.substring(0, MaxPropertyLengths.NINE_BIT);\n }\n if (baseData.name) {\n baseData.name = baseData.name.substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.resultCode) {\n baseData.resultCode = String(baseData.resultCode).substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.data) {\n baseData.data = String(baseData.data).substring(0, MaxPropertyLengths.THIRTEEN_BIT);\n }\n if (baseData.type) {\n baseData.type = String(baseData.type).substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.target) {\n baseData.target = String(baseData.target).substring(0, MaxPropertyLengths.TEN_BIT);\n }\n if (baseData.properties) {\n for (const key of Object.keys(baseData.properties)) {\n baseData.properties[key] = baseData.properties[key].substring(\n 0,\n MaxPropertyLengths.THIRTEEN_BIT,\n );\n }\n }\n\n return {\n name,\n sampleRate,\n time,\n instrumentationKey,\n tags,\n version: 1,\n data: {\n baseType,\n baseData: {\n ...baseData,\n properties,\n measurements,\n },\n },\n };\n}\n\n/**\n * Span Events to Azure envelopes parsing.\n * @internal\n */\nexport function spanEventsToEnvelopes(span: ReadableSpan, ikey: string): Envelope[] {\n const envelopes: Envelope[] = [];\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n let baseType: \"ExceptionData\" | \"MessageData\";\n const time = hrTimeToDate(event.time);\n let name = \"\";\n let baseData: TelemetryExceptionData | MessageData;\n const properties = createPropertiesFromSpanAttributes(event.attributes);\n\n const tags: Tags = createTagsFromResource(span.resource);\n tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;\n const spanId = span.spanContext().spanId;\n if (spanId) {\n tags[KnownContextTagKeys.AiOperationParentId] = spanId;\n }\n\n // Only generate exception telemetry for incoming requests\n if (event.name === \"exception\") {\n name = \"Microsoft.ApplicationInsights.Exception\";\n baseType = \"ExceptionData\";\n let typeName = \"\";\n let message = \"Exception\";\n let stack = \"\";\n let hasFullStack = false;\n if (event.attributes) {\n typeName = String(event.attributes[SEMATTRS_EXCEPTION_TYPE]);\n stack = String(event.attributes[SEMATTRS_EXCEPTION_STACKTRACE]);\n if (stack) {\n hasFullStack = true;\n }\n const exceptionMsg = event.attributes[SEMATTRS_EXCEPTION_MESSAGE];\n if (exceptionMsg) {\n message = String(exceptionMsg);\n }\n const escaped = event.attributes[SEMATTRS_EXCEPTION_ESCAPED];\n if (escaped !== undefined) {\n properties[SEMATTRS_EXCEPTION_ESCAPED] = String(escaped);\n }\n }\n const exceptionDetails: TelemetryExceptionDetails = {\n typeName: typeName,\n message: message,\n stack: stack,\n hasFullStack: hasFullStack,\n };\n const exceptionData: TelemetryExceptionData = {\n exceptions: [exceptionDetails],\n version: 2,\n properties: properties,\n };\n baseData = exceptionData;\n } else {\n name = \"Microsoft.ApplicationInsights.Message\";\n baseType = \"MessageData\";\n const messageData: MessageData = {\n message: event.name,\n version: 2,\n properties: properties,\n };\n baseData = messageData;\n }\n let sampleRate = 100;\n if (span.attributes[AzureMonitorSampleRate]) {\n sampleRate = Number(span.attributes[AzureMonitorSampleRate]);\n }\n // Truncate properties\n if (baseData.message) {\n baseData.message = String(baseData.message).substring(0, MaxPropertyLengths.FIFTEEN_BIT);\n }\n if (baseData.properties) {\n for (const key of Object.keys(baseData.properties)) {\n baseData.properties[key] = baseData.properties[key].substring(\n 0,\n MaxPropertyLengths.THIRTEEN_BIT,\n );\n }\n }\n const env: Envelope = {\n name: name,\n time: time,\n instrumentationKey: ikey,\n version: 1,\n sampleRate: sampleRate,\n data: {\n baseType: baseType,\n baseData: baseData,\n },\n tags: tags,\n };\n envelopes.push(env);\n });\n }\n return envelopes;\n}\n\nexport function getPeerIp(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_NETWORK_PEER_ADDRESS] || attributes[SEMATTRS_NET_PEER_IP];\n }\n return;\n}\n\nexport function getLocationIp(tags: Tags, attributes: Attributes): void {\n if (attributes) {\n const httpClientIp = getHttpClientIp(attributes);\n const netPeerIp = getPeerIp(attributes);\n if (httpClientIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(httpClientIp);\n } else if (netPeerIp) {\n tags[KnownContextTagKeys.AiLocationIp] = String(netPeerIp);\n }\n }\n}\n\nexport function getHttpClientIp(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_HTTP_CLIENT_IP];\n }\n return;\n}\n\nexport function getUserAgent(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_USER_AGENT_ORIGINAL] || attributes[SEMATTRS_HTTP_USER_AGENT];\n }\n return;\n}\n\nexport function getHttpUrl(attributes: Attributes): AttributeValue | undefined {\n // Stable sem conv only supports populating url from `url.full`\n if (attributes) {\n return attributes[ATTR_URL_FULL] || attributes[SEMATTRS_HTTP_URL];\n }\n return;\n}\n\nexport function getHttpMethod(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_HTTP_REQUEST_METHOD] || attributes[SEMATTRS_HTTP_METHOD];\n }\n return;\n}\n\nexport function getHttpStatusCode(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_HTTP_RESPONSE_STATUS_CODE] || attributes[SEMATTRS_HTTP_STATUS_CODE];\n }\n return;\n}\n\nexport function getHttpScheme(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_URL_SCHEME] || attributes[SEMATTRS_HTTP_SCHEME];\n }\n return;\n}\n\nexport function getHttpTarget(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n if (attributes[ATTR_URL_PATH]) {\n return attributes[ATTR_URL_PATH];\n }\n if (attributes[ATTR_URL_QUERY]) {\n return attributes[ATTR_URL_QUERY];\n }\n return attributes[SEMATTRS_HTTP_TARGET];\n }\n return;\n}\n\nexport function getHttpHost(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_SERVER_ADDRESS] || attributes[SEMATTRS_HTTP_HOST];\n }\n return;\n}\n\nexport function getNetPeerName(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return attributes[ATTR_CLIENT_ADDRESS] || attributes[SEMATTRS_NET_PEER_NAME];\n }\n return;\n}\n\nexport function getNetPeerPort(attributes: Attributes): AttributeValue | undefined {\n if (attributes) {\n return (\n attributes[ATTR_CLIENT_PORT] ||\n attributes[ATTR_SERVER_PORT] ||\n attributes[SEMATTRS_NET_PEER_PORT]\n );\n }\n return;\n}\n"]}
|
|
@@ -122,7 +122,7 @@ export declare enum PerformanceCounter {
|
|
|
122
122
|
PRIVATE_BYTES = "\\Process(??APP_WIN32_PROC??)\\Private Bytes",
|
|
123
123
|
AVAILABLE_BYTES = "\\Memory\\Available Bytes",
|
|
124
124
|
PROCESSOR_TIME = "\\Processor(_Total)\\% Processor Time",
|
|
125
|
-
|
|
125
|
+
PROCESS_TIME_STANDARD = "\\Process(??APP_WIN32_PROC??)\\% Processor Time",
|
|
126
126
|
PROCESS_TIME_NORMALIZED = "\\Process(??APP_WIN32_PROC??)\\% Processor Time Normalized",
|
|
127
127
|
REQUEST_RATE = "\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Requests/Sec",
|
|
128
128
|
REQUEST_DURATION = "\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Request Execution Time",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../src/Declarations/Constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,EAAE,uBAAuB;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAC9E;;;GAGG;AACH,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;AACnF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,0CAA0C,CAAC;AAC7E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AACxE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,2CAA2C,CAAC;AAC9E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAChF;;;GAGG;AACH,eAAO,MAAM,0CAA0C,+DACO,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,wCAAwC,CAAC;AAC/E;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE;;;GAGG;AACH,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AACzE;;;GAGG;AACH,eAAO,MAAM,uDAAuD,wDACb,CAAC;AAExD;;;GAGG;AACH,oBAAY,uBAAuB;IACjC,kBAAkB,uBAAuB;IACzC,kBAAkB,cAAc;CACjC;AACD;;;GAGG;AACH,eAAO,MAAM,oCAAoC,sCAAsC,CAAC;AACxF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E;;;GAGG;AACH,oBAAY,iBAAiB;IAE3B,eAAe,8BAA8B;IAG7C,cAAc,0CAA0C;IAGxD,YAAY,wCAAwC;IACpD,oBAAoB,+CAA+C;IACnE,gBAAgB,4CAA4C;IAG5D,eAAe,gDAAgD;IAC/D,uBAAuB,uDAAuD;IAC9E,mBAAmB,oDAAoD;IAGvE,cAAc,0CAA0C;CACzD;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAE5B,aAAa,iDAAiD;IAC9D,eAAe,8BAA8B;IAG7C,cAAc,0CAA0C;IACxD,
|
|
1
|
+
{"version":3,"file":"Constants.d.ts","sourceRoot":"","sources":["../../../src/Declarations/Constants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,iBAAiB;IAC3B;;OAEG;IACH,EAAE,uBAAuB;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,yCAAyC,CAAC;AAC9E;;;GAGG;AACH,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,4BAA4B,yCAAyC,CAAC;AACnF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,0CAA0C,CAAC;AAC7E;;;GAGG;AACH,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AACxE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,2CAA2C,CAAC;AAC9E;;;GAGG;AACH,eAAO,MAAM,4BAA4B,sCAAsC,CAAC;AAChF;;;GAGG;AACH,eAAO,MAAM,0CAA0C,+DACO,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,wCAAwC,CAAC;AAC/E;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE;;;GAGG;AACH,eAAO,MAAM,6BAA6B,8BAA8B,CAAC;AACzE;;;GAGG;AACH,eAAO,MAAM,uDAAuD,wDACb,CAAC;AAExD;;;GAGG;AACH,oBAAY,uBAAuB;IACjC,kBAAkB,uBAAuB;IACzC,kBAAkB,cAAc;CACjC;AACD;;;GAGG;AACH,eAAO,MAAM,oCAAoC,sCAAsC,CAAC;AACxF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,gCAAgC,iCAAiC,CAAC;AAE/E;;;GAGG;AACH,oBAAY,iBAAiB;IAE3B,eAAe,8BAA8B;IAG7C,cAAc,0CAA0C;IAGxD,YAAY,wCAAwC;IACpD,oBAAoB,+CAA+C;IACnE,gBAAgB,4CAA4C;IAG5D,eAAe,gDAAgD;IAC/D,uBAAuB,uDAAuD;IAC9E,mBAAmB,oDAAoD;IAGvE,cAAc,0CAA0C;CACzD;AAED;;;GAGG;AACH,oBAAY,kBAAkB;IAE5B,aAAa,iDAAiD;IAC9D,eAAe,8BAA8B;IAG7C,cAAc,0CAA0C;IACxD,qBAAqB,oDAAoD;IACzE,uBAAuB,+DAA+D;IAGtF,YAAY,6DAA6D;IACzE,gBAAgB,uEAAuE;IAGvF,cAAc,sEAAsE;IAEpF,OAAO,qDAAqD;CAC7D;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;CAY9E,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,WAAW,GACX,OAAO,GACP,QAAQ,GACR,SAAS,GACT,kBAAkB,GAClB,cAAc,CAAC;AACnB;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,4BAA4B,GAC5B,wBAAwB,GACxB,yBAAyB,GACzB,0BAA0B,GAC1B,6BAA6B,GAC7B,+BAA+B,CAAC"}
|
|
@@ -135,7 +135,7 @@ export var PerformanceCounter;
|
|
|
135
135
|
PerformanceCounter["AVAILABLE_BYTES"] = "\\Memory\\Available Bytes";
|
|
136
136
|
// CPU
|
|
137
137
|
PerformanceCounter["PROCESSOR_TIME"] = "\\Processor(_Total)\\% Processor Time";
|
|
138
|
-
PerformanceCounter["
|
|
138
|
+
PerformanceCounter["PROCESS_TIME_STANDARD"] = "\\Process(??APP_WIN32_PROC??)\\% Processor Time";
|
|
139
139
|
PerformanceCounter["PROCESS_TIME_NORMALIZED"] = "\\Process(??APP_WIN32_PROC??)\\% Processor Time Normalized";
|
|
140
140
|
// Requests
|
|
141
141
|
PerformanceCounter["REQUEST_RATE"] = "\\ASP.NET Applications(??APP_W3SVC_PROC??)\\Requests/Sec";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../src/Declarations/Constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAN,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,8CAAyB,CAAA;AAC3B,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAC;AAC9E;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,EAAE,CAAC;AAC/D;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sCAAsC,CAAC;AACnF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,8BAA8B,CAAC;AACvE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uCAAuC,CAAC;AAC7E;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gCAAgC,CAAC;AACxE;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,wCAAwC,CAAC;AAC9E;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,mCAAmC,CAAC;AAChF;;;GAGG;AACH,MAAM,CAAC,MAAM,0CAA0C,GACrD,4DAA4D,CAAC;AAC/D;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qCAAqC,CAAC;AAC/E;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AACjE;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AACzE;;;GAGG;AACH,MAAM,CAAC,MAAM,uDAAuD,GAClE,qDAAqD,CAAC;AAExD;;;GAGG;AACH,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,oEAAyC,CAAA;IACzC,2DAAgC,CAAA;AAClC,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC;AACD;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,mCAAmC,CAAC;AACxF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAC/D;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAE/E;;;GAGG;AACH,MAAM,CAAN,IAAY,iBAmBX;AAnBD,WAAY,iBAAiB;IAC3B,SAAS;IACT,kEAA6C,CAAA;IAE7C,MAAM;IACN,6EAAwD,CAAA;IAExD,UAAU;IACV,yEAAoD,CAAA;IACpD,wFAAmE,CAAA;IACnE,iFAA4D,CAAA;IAE5D,aAAa;IACb,oFAA+D,CAAA;IAC/D,mGAA8E,CAAA;IAC9E,4FAAuE,CAAA;IAEvE,YAAY;IACZ,6EAAwD,CAAA;AAC1D,CAAC,EAnBW,iBAAiB,KAAjB,iBAAiB,QAmB5B;AAED;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAkBX;AAlBD,WAAY,kBAAkB;IAC5B,SAAS;IACT,oFAA8D,CAAA;IAC9D,mEAA6C,CAAA;IAE7C,MAAM;IACN,8EAAwD,CAAA;IACxD,
|
|
1
|
+
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../../src/Declarations/Constants.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Azure service API version.\n */\nexport enum ServiceApiVersion {\n /**\n * V2 Version\n */\n V2 = \"2020-09-15_Preview\",\n}\n\n/**\n * Operation Name attribute name.\n */\nexport const AI_OPERATION_NAME = \"ai.operation.name\";\n\n/**\n * Default Breeze endpoint.\n * @internal\n */\nexport const DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\n/**\n * Default Breeze API version.\n * @internal\n */\nexport const DEFAULT_BREEZE_API_VERSION = ServiceApiVersion.V2;\n/**\n * Default Live Metrics endpoint.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_ENDPOINT = \"https://rt.services.visualstudio.com\";\n/**\n * Default Live Metrics host.\n * @internal\n */\nexport const DEFAULT_LIVEMETRICS_HOST = \"rt.services.visualstudio.com\";\n/**\n * Connection string environment variable name.\n * @internal\n */\nexport const ENV_CONNECTION_STRING = \"APPLICATIONINSIGHTS_CONNECTION_STRING\";\n/**\n * Instrumentation key environment variable name.\n * @internal\n */\nexport const ENV_INSTRUMENTATION_KEY = \"APPINSIGHTS_INSTRUMENTATIONKEY\";\n/**\n * Disable Statsbeat environment variable name.\n * @internal\n */\nexport const ENV_DISABLE_STATSBEAT = \"APPLICATIONINSIGHTS_STATSBEAT_DISABLED\";\n/**\n * Legacy disable Statsbeat environment variable name.\n * @internal\n */\nexport const LEGACY_ENV_DISABLE_STATSBEAT = \"APPLICATION_INSIGHTS_NO_STATSBEAT\";\n/**\n * Disable OpenTelemetry Resource Metric.\n * @internal\n */\nexport const ENV_OPENTELEMETRY_RESOURCE_METRIC_DISABLED =\n \"APPLICATIONINSIGHTS_OPENTELEMETRY_RESOURCE_METRIC_DISABLED\";\n/**\n * OTLP Metrics Endpoint.\n * @internal\n */\nexport const ENV_OTLP_METRICS_ENDPOINT = \"OTEL_EXPORTER_OTLP_METRICS_ENDPOINT\";\n/**\n * OTel Metrics Exporter.\n * @internal\n */\nexport const ENV_OTEL_METRICS_EXPORTER = \"OTEL_METRICS_EXPORTER\";\n/**\n * Determine if exporter was initialized in an auto-attach scenario.\n * @internal\n */\nexport const ENV_AZURE_MONITOR_AUTO_ATTACH = \"AZURE_MONITOR_AUTO_ATTACH\";\n/**\n * Determines if custom metrics should be sent to Breeze.\n * @internal\n */\nexport const ENV_APPLICATIONINSIGHTS_METRICS_TO_LOGANALYTICS_ENABLED =\n \"APPLICATIONINSIGHTS_METRICS_TO_LOGANALYTICS_ENABLED\";\n\n/**\n * REST error types for failed requests that can be retried.\n * @internal\n */\nexport enum RetriableRestErrorTypes {\n REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\",\n DNS_LOOKUP_TIMEOUT = \"EAI_AGAIN\",\n}\n/**\n * Application Insights shim version.\n * @internal\n */\nexport const ENV_APPLICATIONINSIGHTS_SHIM_VERSION = \"APPLICATION_INSIGHTS_SHIM_VERSION\";\n/**\n * Azure Monitor version prefix.\n * @internal\n */\nexport const ENV_AZURE_MONITOR_PREFIX = \"AZURE_MONITOR_PREFIX\";\n/**\n * Azure Monitor Distro version.\n * @internal\n */\nexport const ENV_AZURE_MONITOR_DISTRO_VERSION = \"AZURE_MONITOR_DISTRO_VERSION\";\n\n/**\n * QuickPulse metric counter names.\n * @internal\n */\nexport enum QuickPulseCounter {\n // Memory\n COMMITTED_BYTES = \"\\\\Memory\\\\Committed Bytes\",\n\n // CPU\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n\n // Request\n REQUEST_RATE = \"\\\\ApplicationInsights\\\\Requests/Sec\",\n REQUEST_FAILURE_RATE = \"\\\\ApplicationInsights\\\\Requests Failed/Sec\",\n REQUEST_DURATION = \"\\\\ApplicationInsights\\\\Request Duration\",\n\n // Dependency\n DEPENDENCY_RATE = \"\\\\ApplicationInsights\\\\Dependency Calls/Sec\",\n DEPENDENCY_FAILURE_RATE = \"\\\\ApplicationInsights\\\\Dependency Calls Failed/Sec\",\n DEPENDENCY_DURATION = \"\\\\ApplicationInsights\\\\Dependency Call Duration\",\n\n // Exception\n EXCEPTION_RATE = \"\\\\ApplicationInsights\\\\Exceptions/Sec\",\n}\n\n/**\n * Performance metric counter names.\n * @internal\n */\nexport enum PerformanceCounter {\n // Memory\n PRIVATE_BYTES = \"\\\\Process(??APP_WIN32_PROC??)\\\\Private Bytes\",\n AVAILABLE_BYTES = \"\\\\Memory\\\\Available Bytes\",\n\n // CPU\n PROCESSOR_TIME = \"\\\\Processor(_Total)\\\\% Processor Time\",\n PROCESS_TIME_STANDARD = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time\",\n PROCESS_TIME_NORMALIZED = \"\\\\Process(??APP_WIN32_PROC??)\\\\% Processor Time Normalized\",\n\n // Requests\n REQUEST_RATE = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Requests/Sec\",\n REQUEST_DURATION = \"\\\\ASP.NET Applications(??APP_W3SVC_PROC??)\\\\Request Execution Time\",\n\n // Exception\n EXCEPTION_RATE = \"\\\\.NET CLR Exceptions(??APP_CLR_PROC??)\\\\# of Exceps Thrown / sec\",\n // I/O\n IO_RATE = \"\\\\Process(??APP_WIN32_PROC??)\\\\IO Data Bytes/sec\",\n}\n\n/**\n * Map a PerformanceCounter/QuickPulseCounter to a QuickPulseCounter. If no mapping exists, mapping is *undefined*\n * @internal\n */\nexport const PerformanceToQuickPulseCounter: { [key: string]: QuickPulseCounter } = {\n [PerformanceCounter.PROCESSOR_TIME]: QuickPulseCounter.PROCESSOR_TIME,\n [PerformanceCounter.REQUEST_RATE]: QuickPulseCounter.REQUEST_RATE,\n [PerformanceCounter.REQUEST_DURATION]: QuickPulseCounter.REQUEST_DURATION,\n\n // Remap quick pulse only counters\n [QuickPulseCounter.COMMITTED_BYTES]: QuickPulseCounter.COMMITTED_BYTES,\n [QuickPulseCounter.REQUEST_FAILURE_RATE]: QuickPulseCounter.REQUEST_FAILURE_RATE,\n [QuickPulseCounter.DEPENDENCY_RATE]: QuickPulseCounter.DEPENDENCY_RATE,\n [QuickPulseCounter.DEPENDENCY_FAILURE_RATE]: QuickPulseCounter.DEPENDENCY_FAILURE_RATE,\n [QuickPulseCounter.DEPENDENCY_DURATION]: QuickPulseCounter.DEPENDENCY_DURATION,\n [QuickPulseCounter.EXCEPTION_RATE]: QuickPulseCounter.EXCEPTION_RATE,\n};\n\n/**\n * QuickPulse document types.\n * @internal\n */\nexport type QuickPulseDocumentType =\n | \"Event\"\n | \"Exception\"\n | \"Trace\"\n | \"Metric\"\n | \"Request\"\n | \"RemoteDependency\"\n | \"Availability\";\n/**\n * QuickPulse telemetry types.\n * @internal\n */\nexport type QuickPulseType =\n | \"EventTelemetryDocument\"\n | \"ExceptionTelemetryDocument\"\n | \"TraceTelemetryDocument\"\n | \"MetricTelemetryDocument\"\n | \"RequestTelemetryDocument\"\n | \"DependencyTelemetryDocument\"\n | \"AvailabilityTelemetryDocument\";\n"]}
|
|
@@ -4,7 +4,8 @@ import type { StatsbeatOptions } from "./types.js";
|
|
|
4
4
|
* Long Interval Statsbeat Metrics
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
declare class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
7
|
+
export declare class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
8
|
+
private static instance;
|
|
8
9
|
private statsCollectionLongInterval;
|
|
9
10
|
private cikey;
|
|
10
11
|
private runtimeVersion;
|
|
@@ -29,11 +30,10 @@ declare class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
29
30
|
private setFeatures;
|
|
30
31
|
private attachCallback;
|
|
31
32
|
shutdown(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Singleton LongIntervalStatsbeatMetrics instance.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
static getInstance(options: StatsbeatOptions): LongIntervalStatsbeatMetrics;
|
|
32
38
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Singleton LongIntervalStatsbeatMetrics instance.
|
|
35
|
-
* @internal
|
|
36
|
-
*/
|
|
37
|
-
export declare function getInstance(options: StatsbeatOptions): LongIntervalStatsbeatMetrics;
|
|
38
|
-
export {};
|
|
39
39
|
//# sourceMappingURL=longIntervalStatsbeatMetrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"longIntervalStatsbeatMetrics.d.ts","sourceRoot":"","sources":["../../../../src/export/statsbeat/longIntervalStatsbeatMetrics.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"longIntervalStatsbeatMetrics.d.ts","sourceRoot":"","sources":["../../../../src/export/statsbeat/longIntervalStatsbeatMetrics.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAKpB;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,gBAAgB;IAChE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6C;IACpE,OAAO,CAAC,2BAA2B,CAAoB;IAEvD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,eAAe,CAAa;IAEpC,OAAO,CAAC,kCAAkC,CAAgB;IAC1D,OAAO,CAAC,yBAAyB,CAAgC;IACjE,OAAO,CAAC,wBAAwB,CAAgC;IAChE,OAAO,CAAC,0BAA0B,CAAQ;IAG1C,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,qBAAqB,CAAkB;IAC/C,OAAO,CAAC,oBAAoB,CAAkB;IAEvC,aAAa,EAAE,OAAO,CAAS;gBAE1B,OAAO,EAAE,gBAAgB;YA0DvB,UAAU;IAsCxB,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,cAAc;IAKf,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAGhC;;;OAGG;WACW,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,4BAA4B;CAMnF"}
|
|
@@ -8,12 +8,11 @@ import { StatsbeatMetrics } from "./statsbeatMetrics.js";
|
|
|
8
8
|
import { StatsbeatCounter, STATSBEAT_LANGUAGE, StatsbeatFeatureType } from "./types.js";
|
|
9
9
|
import { AzureMonitorStatsbeatExporter } from "./statsbeatExporter.js";
|
|
10
10
|
import { getAttachType } from "../../utils/metricUtils.js";
|
|
11
|
-
let instance = null;
|
|
12
11
|
/**
|
|
13
12
|
* Long Interval Statsbeat Metrics
|
|
14
13
|
* @internal
|
|
15
14
|
*/
|
|
16
|
-
class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
15
|
+
export class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
17
16
|
constructor(options) {
|
|
18
17
|
super();
|
|
19
18
|
this.statsCollectionLongInterval = 86400000; // 1 day
|
|
@@ -27,7 +26,6 @@ class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
27
26
|
disableOfflineStorage: options.disableOfflineStorage,
|
|
28
27
|
};
|
|
29
28
|
this.setFeatures();
|
|
30
|
-
this.longIntervalStatsbeatMeterProvider = new MeterProvider();
|
|
31
29
|
this.longIntervalAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);
|
|
32
30
|
// Export Long Interval Statsbeats every day
|
|
33
31
|
const longIntervalMetricReaderOptions = {
|
|
@@ -35,7 +33,9 @@ class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
35
33
|
exportIntervalMillis: Number(process.env.LONG_INTERVAL_EXPORT_MILLIS) || this.statsCollectionLongInterval, // 1 day
|
|
36
34
|
};
|
|
37
35
|
this.longIntervalMetricReader = new PeriodicExportingMetricReader(longIntervalMetricReaderOptions);
|
|
38
|
-
this.longIntervalStatsbeatMeterProvider
|
|
36
|
+
this.longIntervalStatsbeatMeterProvider = new MeterProvider({
|
|
37
|
+
readers: [this.longIntervalMetricReader],
|
|
38
|
+
});
|
|
39
39
|
this.longIntervalStatsbeatMeter = this.longIntervalStatsbeatMeterProvider.getMeter("Azure Monitor Long Interval Statsbeat");
|
|
40
40
|
// Assign Common Properties
|
|
41
41
|
this.runtimeVersion = process.version;
|
|
@@ -67,11 +67,22 @@ class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
67
67
|
this.longIntervalStatsbeatMeter.addBatchObservableCallback(this.getEnvironmentStatus.bind(this), [this.featureStatsbeatGauge]);
|
|
68
68
|
// Export Feature/Attach Statsbeat once upon app initialization after 15 second delay
|
|
69
69
|
setTimeout(async () => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
try {
|
|
71
|
+
const collectionResult = await this.longIntervalMetricReader.collect();
|
|
72
|
+
if (collectionResult) {
|
|
73
|
+
this.longIntervalAzureExporter.export(collectionResult.resourceMetrics, (result) => {
|
|
74
|
+
if (result.code !== ExportResultCode.SUCCESS) {
|
|
75
|
+
diag.debug(`LongIntervalStatsbeat: metrics export failed (error ${result.error})`);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
73
78
|
}
|
|
74
|
-
|
|
79
|
+
else {
|
|
80
|
+
diag.debug("LongIntervalStatsbeat: No metrics collected");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
diag.debug(`LongIntervalStatsbeat: Error collecting metrics: ${error}`);
|
|
85
|
+
}
|
|
75
86
|
}, 15000); // 15 seconds
|
|
76
87
|
}
|
|
77
88
|
catch (error) {
|
|
@@ -81,11 +92,13 @@ class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
81
92
|
getEnvironmentStatus(observableResult) {
|
|
82
93
|
this.setFeatures();
|
|
83
94
|
let attributes;
|
|
84
|
-
|
|
95
|
+
// Only send instrumentation statsbeat if value is greater than zero
|
|
96
|
+
if (this.instrumentation > 0) {
|
|
85
97
|
attributes = Object.assign(Object.assign({}, this.commonProperties), { feature: this.instrumentation, type: StatsbeatFeatureType.INSTRUMENTATION });
|
|
86
98
|
observableResult.observe(this.featureStatsbeatGauge, 1, Object.assign({}, attributes));
|
|
87
99
|
}
|
|
88
|
-
|
|
100
|
+
// Only send feature statsbeat if value is greater than zero
|
|
101
|
+
if (this.feature > 0) {
|
|
89
102
|
attributes = Object.assign(Object.assign({}, this.commonProperties), { feature: this.feature, type: StatsbeatFeatureType.FEATURE });
|
|
90
103
|
observableResult.observe(this.featureStatsbeatGauge, 1, Object.assign({}, attributes));
|
|
91
104
|
}
|
|
@@ -98,7 +111,7 @@ class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
98
111
|
this.instrumentation = JSON.parse(statsbeatFeatures).instrumentation;
|
|
99
112
|
}
|
|
100
113
|
catch (error) {
|
|
101
|
-
diag.
|
|
114
|
+
diag.debug(`LongIntervalStatsbeat: Failed to parse features/instrumentations (error ${error})`);
|
|
102
115
|
}
|
|
103
116
|
}
|
|
104
117
|
}
|
|
@@ -109,15 +122,16 @@ class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
109
122
|
shutdown() {
|
|
110
123
|
return this.longIntervalStatsbeatMeterProvider.shutdown();
|
|
111
124
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
125
|
+
/**
|
|
126
|
+
* Singleton LongIntervalStatsbeatMetrics instance.
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
129
|
+
static getInstance(options) {
|
|
130
|
+
if (!LongIntervalStatsbeatMetrics.instance) {
|
|
131
|
+
LongIntervalStatsbeatMetrics.instance = new LongIntervalStatsbeatMetrics(options);
|
|
132
|
+
}
|
|
133
|
+
return LongIntervalStatsbeatMetrics.instance;
|
|
120
134
|
}
|
|
121
|
-
return instance;
|
|
122
135
|
}
|
|
136
|
+
LongIntervalStatsbeatMetrics.instance = null;
|
|
123
137
|
//# sourceMappingURL=longIntervalStatsbeatMetrics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"longIntervalStatsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/longIntervalStatsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n BatchObservableResult,\n ObservableGauge,\n ObservableResult,\n Meter,\n} from \"@opentelemetry/api\";\nimport { diag } from \"@opentelemetry/api\";\nimport type { ExportResult } from \"@opentelemetry/core\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport type { PeriodicExportingMetricReaderOptions } from \"@opentelemetry/sdk-metrics\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { AzureMonitorExporterOptions } from \"../../index.js\";\nimport * as ai from \"../../utils/constants/applicationinsights.js\";\nimport { StatsbeatMetrics } from \"./statsbeatMetrics.js\";\nimport type {\n CommonStatsbeatProperties,\n AttachStatsbeatProperties,\n StatsbeatOptions,\n} from \"./types.js\";\nimport { StatsbeatCounter, STATSBEAT_LANGUAGE, StatsbeatFeatureType } from \"./types.js\";\nimport { AzureMonitorStatsbeatExporter } from \"./statsbeatExporter.js\";\nimport { getAttachType } from \"../../utils/metricUtils.js\";\n\nlet instance: LongIntervalStatsbeatMetrics | null = null;\n\n/**\n * Long Interval Statsbeat Metrics\n * @internal\n */\nclass LongIntervalStatsbeatMetrics extends StatsbeatMetrics {\n private statsCollectionLongInterval: number = 86400000; // 1 day\n // Custom dimensions\n private cikey: string;\n private runtimeVersion: string;\n private language: string;\n private version: string;\n private attach: string = getAttachType();\n\n private commonProperties: CommonStatsbeatProperties;\n private attachProperties: AttachStatsbeatProperties;\n\n private feature: number = 0;\n private instrumentation: number = 0;\n\n private longIntervalStatsbeatMeterProvider: MeterProvider;\n private longIntervalAzureExporter: AzureMonitorStatsbeatExporter;\n private longIntervalMetricReader: PeriodicExportingMetricReader;\n private longIntervalStatsbeatMeter: Meter;\n\n // Network Attributes\n private connectionString: string;\n\n // Observable Gauges\n private featureStatsbeatGauge: ObservableGauge;\n private attachStatsbeatGauge: ObservableGauge;\n\n public isInitialized: boolean = false;\n\n constructor(options: StatsbeatOptions) {\n super();\n this.connectionString = super.getConnectionString(options.endpointUrl);\n const exporterConfig: AzureMonitorExporterOptions = {\n connectionString: this.connectionString,\n disableOfflineStorage: options.disableOfflineStorage,\n };\n\n this.setFeatures();\n\n this.longIntervalStatsbeatMeterProvider = new MeterProvider();\n this.longIntervalAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);\n\n // Export Long Interval Statsbeats every day\n const longIntervalMetricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.longIntervalAzureExporter,\n exportIntervalMillis:\n Number(process.env.LONG_INTERVAL_EXPORT_MILLIS) || this.statsCollectionLongInterval, // 1 day\n };\n\n this.longIntervalMetricReader = new PeriodicExportingMetricReader(\n longIntervalMetricReaderOptions,\n );\n this.longIntervalStatsbeatMeterProvider.addMetricReader(this.longIntervalMetricReader);\n this.longIntervalStatsbeatMeter = this.longIntervalStatsbeatMeterProvider.getMeter(\n \"Azure Monitor Long Interval Statsbeat\",\n );\n\n // Assign Common Properties\n this.runtimeVersion = process.version;\n this.language = STATSBEAT_LANGUAGE;\n this.version = ai.packageVersion;\n this.cikey = options.instrumentationKey;\n\n this.featureStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.FEATURE,\n );\n this.attachStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.ATTACH,\n );\n this.isInitialized = true;\n this.initialize();\n\n this.commonProperties = {\n os: this.os,\n rp: this.resourceProvider,\n cikey: this.cikey,\n runtimeVersion: this.runtimeVersion,\n language: this.language,\n version: this.version,\n attach: this.attach,\n };\n\n this.attachProperties = {\n rpId: this.resourceIdentifier,\n };\n }\n\n private async initialize(): Promise<void> {\n try {\n await this.getResourceProvider();\n\n // Add long interval observable callbacks\n this.attachStatsbeatGauge.addCallback(this.attachCallback.bind(this));\n this.longIntervalStatsbeatMeter.addBatchObservableCallback(\n this.getEnvironmentStatus.bind(this),\n [this.featureStatsbeatGauge],\n );\n\n // Export Feature/Attach Statsbeat once upon app initialization after 15 second delay\n setTimeout(async () => {\n this.longIntervalAzureExporter.export(\n (await this.longIntervalMetricReader.collect()).resourceMetrics,\n (result: ExportResult) => {\n if (result.code !== ExportResultCode.SUCCESS) {\n diag.error(`LongIntervalStatsbeat: metrics export failed (error ${result.error})`);\n }\n },\n );\n }, 15000); // 15 seconds\n } catch (error) {\n diag.debug(\"Call to get the resource provider failed.\");\n }\n }\n\n private getEnvironmentStatus(observableResult: BatchObservableResult): void {\n this.setFeatures();\n let attributes;\n if (this.instrumentation) {\n attributes = {\n ...this.commonProperties,\n feature: this.instrumentation,\n type: StatsbeatFeatureType.INSTRUMENTATION,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n\n if (this.feature) {\n attributes = {\n ...this.commonProperties,\n feature: this.feature,\n type: StatsbeatFeatureType.FEATURE,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n }\n\n private setFeatures(): void {\n const statsbeatFeatures = process.env.AZURE_MONITOR_STATSBEAT_FEATURES;\n if (statsbeatFeatures) {\n try {\n this.feature = JSON.parse(statsbeatFeatures).feature;\n this.instrumentation = JSON.parse(statsbeatFeatures).instrumentation;\n } catch (error: any) {\n diag.error(\n `LongIntervalStatsbeat: Failed to parse features/instrumentations (error ${error})`,\n );\n }\n }\n }\n\n private attachCallback(observableResult: ObservableResult): void {\n const attributes = { ...this.commonProperties, ...this.attachProperties };\n observableResult.observe(1, attributes);\n }\n\n public shutdown(): Promise<void> {\n return this.longIntervalStatsbeatMeterProvider.shutdown();\n }\n}\n\n/**\n * Singleton LongIntervalStatsbeatMetrics instance.\n * @internal\n */\nexport function getInstance(options: StatsbeatOptions): LongIntervalStatsbeatMetrics {\n if (!instance) {\n instance = new LongIntervalStatsbeatMetrics(options);\n }\n return instance;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"longIntervalStatsbeatMetrics.js","sourceRoot":"","sources":["../../../../src/export/statsbeat/longIntervalStatsbeatMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n BatchObservableResult,\n ObservableGauge,\n ObservableResult,\n Meter,\n} from \"@opentelemetry/api\";\nimport { diag } from \"@opentelemetry/api\";\nimport type { ExportResult } from \"@opentelemetry/core\";\nimport { ExportResultCode } from \"@opentelemetry/core\";\nimport type { PeriodicExportingMetricReaderOptions } from \"@opentelemetry/sdk-metrics\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport type { AzureMonitorExporterOptions } from \"../../index.js\";\nimport * as ai from \"../../utils/constants/applicationinsights.js\";\nimport { StatsbeatMetrics } from \"./statsbeatMetrics.js\";\nimport type {\n CommonStatsbeatProperties,\n AttachStatsbeatProperties,\n StatsbeatOptions,\n} from \"./types.js\";\nimport { StatsbeatCounter, STATSBEAT_LANGUAGE, StatsbeatFeatureType } from \"./types.js\";\nimport { AzureMonitorStatsbeatExporter } from \"./statsbeatExporter.js\";\nimport { getAttachType } from \"../../utils/metricUtils.js\";\n\n/**\n * Long Interval Statsbeat Metrics\n * @internal\n */\nexport class LongIntervalStatsbeatMetrics extends StatsbeatMetrics {\n private static instance: LongIntervalStatsbeatMetrics | null = null;\n private statsCollectionLongInterval: number = 86400000; // 1 day\n // Custom dimensions\n private cikey: string;\n private runtimeVersion: string;\n private language: string;\n private version: string;\n private attach: string = getAttachType();\n\n private commonProperties: CommonStatsbeatProperties;\n private attachProperties: AttachStatsbeatProperties;\n\n private feature: number = 0;\n private instrumentation: number = 0;\n\n private longIntervalStatsbeatMeterProvider: MeterProvider;\n private longIntervalAzureExporter: AzureMonitorStatsbeatExporter;\n private longIntervalMetricReader: PeriodicExportingMetricReader;\n private longIntervalStatsbeatMeter: Meter;\n\n // Network Attributes\n private connectionString: string;\n\n // Observable Gauges\n private featureStatsbeatGauge: ObservableGauge;\n private attachStatsbeatGauge: ObservableGauge;\n\n public isInitialized: boolean = false;\n\n constructor(options: StatsbeatOptions) {\n super();\n this.connectionString = super.getConnectionString(options.endpointUrl);\n const exporterConfig: AzureMonitorExporterOptions = {\n connectionString: this.connectionString,\n disableOfflineStorage: options.disableOfflineStorage,\n };\n\n this.setFeatures();\n\n this.longIntervalAzureExporter = new AzureMonitorStatsbeatExporter(exporterConfig);\n // Export Long Interval Statsbeats every day\n const longIntervalMetricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.longIntervalAzureExporter,\n exportIntervalMillis:\n Number(process.env.LONG_INTERVAL_EXPORT_MILLIS) || this.statsCollectionLongInterval, // 1 day\n };\n\n this.longIntervalMetricReader = new PeriodicExportingMetricReader(\n longIntervalMetricReaderOptions,\n );\n this.longIntervalStatsbeatMeterProvider = new MeterProvider({\n readers: [this.longIntervalMetricReader],\n });\n this.longIntervalStatsbeatMeter = this.longIntervalStatsbeatMeterProvider.getMeter(\n \"Azure Monitor Long Interval Statsbeat\",\n );\n\n // Assign Common Properties\n this.runtimeVersion = process.version;\n this.language = STATSBEAT_LANGUAGE;\n this.version = ai.packageVersion;\n this.cikey = options.instrumentationKey;\n\n this.featureStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.FEATURE,\n );\n this.attachStatsbeatGauge = this.longIntervalStatsbeatMeter.createObservableGauge(\n StatsbeatCounter.ATTACH,\n );\n this.isInitialized = true;\n this.initialize();\n\n this.commonProperties = {\n os: this.os,\n rp: this.resourceProvider,\n cikey: this.cikey,\n runtimeVersion: this.runtimeVersion,\n language: this.language,\n version: this.version,\n attach: this.attach,\n };\n\n this.attachProperties = {\n rpId: this.resourceIdentifier,\n };\n }\n\n private async initialize(): Promise<void> {\n try {\n await this.getResourceProvider();\n\n // Add long interval observable callbacks\n this.attachStatsbeatGauge.addCallback(this.attachCallback.bind(this));\n this.longIntervalStatsbeatMeter.addBatchObservableCallback(\n this.getEnvironmentStatus.bind(this),\n [this.featureStatsbeatGauge],\n );\n\n // Export Feature/Attach Statsbeat once upon app initialization after 15 second delay\n setTimeout(async () => {\n try {\n const collectionResult = await this.longIntervalMetricReader.collect();\n if (collectionResult) {\n this.longIntervalAzureExporter.export(\n collectionResult.resourceMetrics,\n (result: ExportResult) => {\n if (result.code !== ExportResultCode.SUCCESS) {\n diag.debug(\n `LongIntervalStatsbeat: metrics export failed (error ${result.error})`,\n );\n }\n },\n );\n } else {\n diag.debug(\"LongIntervalStatsbeat: No metrics collected\");\n }\n } catch (error) {\n diag.debug(`LongIntervalStatsbeat: Error collecting metrics: ${error}`);\n }\n }, 15000); // 15 seconds\n } catch (error) {\n diag.debug(\"Call to get the resource provider failed.\");\n }\n }\n\n private getEnvironmentStatus(observableResult: BatchObservableResult): void {\n this.setFeatures();\n let attributes;\n // Only send instrumentation statsbeat if value is greater than zero\n if (this.instrumentation > 0) {\n attributes = {\n ...this.commonProperties,\n feature: this.instrumentation,\n type: StatsbeatFeatureType.INSTRUMENTATION,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n\n // Only send feature statsbeat if value is greater than zero\n if (this.feature > 0) {\n attributes = {\n ...this.commonProperties,\n feature: this.feature,\n type: StatsbeatFeatureType.FEATURE,\n };\n observableResult.observe(this.featureStatsbeatGauge, 1, { ...attributes });\n }\n }\n\n private setFeatures(): void {\n const statsbeatFeatures = process.env.AZURE_MONITOR_STATSBEAT_FEATURES;\n if (statsbeatFeatures) {\n try {\n this.feature = JSON.parse(statsbeatFeatures).feature;\n this.instrumentation = JSON.parse(statsbeatFeatures).instrumentation;\n } catch (error: any) {\n diag.debug(\n `LongIntervalStatsbeat: Failed to parse features/instrumentations (error ${error})`,\n );\n }\n }\n }\n\n private attachCallback(observableResult: ObservableResult): void {\n const attributes = { ...this.commonProperties, ...this.attachProperties };\n observableResult.observe(1, attributes);\n }\n\n public shutdown(): Promise<void> {\n return this.longIntervalStatsbeatMeterProvider.shutdown();\n }\n /**\n * Singleton LongIntervalStatsbeatMetrics instance.\n * @internal\n */\n public static getInstance(options: StatsbeatOptions): LongIntervalStatsbeatMetrics {\n if (!LongIntervalStatsbeatMetrics.instance) {\n LongIntervalStatsbeatMetrics.instance = new LongIntervalStatsbeatMetrics(options);\n }\n return LongIntervalStatsbeatMetrics.instance;\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StatsbeatMetrics } from "./statsbeatMetrics.js";
|
|
2
2
|
import type { StatsbeatOptions } from "./types.js";
|
|
3
3
|
export declare class NetworkStatsbeatMetrics extends StatsbeatMetrics {
|
|
4
|
+
private static instance;
|
|
4
5
|
private disableNonEssentialStatsbeat;
|
|
5
6
|
private commonProperties;
|
|
6
7
|
private networkProperties;
|
|
@@ -10,7 +11,6 @@ export declare class NetworkStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
10
11
|
private networkStatsbeatMeter;
|
|
11
12
|
private networkStatsbeatMeterProvider;
|
|
12
13
|
private networkAzureExporter;
|
|
13
|
-
private networkMetricReader;
|
|
14
14
|
private cikey;
|
|
15
15
|
private runtimeVersion;
|
|
16
16
|
private language;
|
|
@@ -47,5 +47,10 @@ export declare class NetworkStatsbeatMetrics extends StatsbeatMetrics {
|
|
|
47
47
|
countException(exceptionType: Error): void;
|
|
48
48
|
private getNetworkStatsbeatCounter;
|
|
49
49
|
private getShortHost;
|
|
50
|
+
/**
|
|
51
|
+
* Singleton Network Statsbeat Metrics instance.
|
|
52
|
+
* @internal
|
|
53
|
+
*/
|
|
54
|
+
static getInstance(options: StatsbeatOptions): NetworkStatsbeatMetrics;
|
|
50
55
|
}
|
|
51
56
|
//# sourceMappingURL=networkStatsbeatMetrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networkStatsbeatMetrics.d.ts","sourceRoot":"","sources":["../../../../src/export/statsbeat/networkStatsbeatMetrics.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAMpB,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,4BAA4B,CAAiD;IACrF,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,4BAA4B,CAAkB;IAEtD,OAAO,CAAC,0BAA0B,CAA+B;IACjE,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,6BAA6B,CAAgB;IACrD,OAAO,CAAC,oBAAoB,CAAgC;
|
|
1
|
+
{"version":3,"file":"networkStatsbeatMetrics.d.ts","sourceRoot":"","sources":["../../../../src/export/statsbeat/networkStatsbeatMetrics.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAMpB,qBAAa,uBAAwB,SAAQ,gBAAgB;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwC;IAC/D,OAAO,CAAC,4BAA4B,CAAiD;IACrF,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,4BAA4B,CAAkB;IAEtD,OAAO,CAAC,0BAA0B,CAA+B;IACjE,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,6BAA6B,CAAgB;IACrD,OAAO,CAAC,oBAAoB,CAAgC;IAG5D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAA2B;IAGzC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,oBAAoB,CAAkB;IAE9C,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,iBAAiB,CAA8B;IAGvD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,gBAAgB;IA0E9B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAIlB,UAAU;IA6BxB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,oBAAoB;IAWrB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUpC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAmBxD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBpC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAgBvC,gBAAgB,IAAI,IAAI;IAQxB,iBAAiB,IAAI,IAAI;IAQzB,cAAc,CAAC,aAAa,EAAE,KAAK,GAAG,IAAI;IAgBjD,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,YAAY;IAepB;;;OAGG;WACW,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,uBAAuB;CAM9E"}
|