@azure/monitor-opentelemetry 1.18.2 → 1.20.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 +12 -1
- package/dist/commonjs/browserSdkLoader/browserSdkLoaderHelper.d.ts.map +1 -1
- package/dist/commonjs/browserSdkLoader/browserSdkLoaderHelper.js +1 -2
- package/dist/commonjs/browserSdkLoader/browserSdkLoaderHelper.js.map +1 -1
- package/dist/commonjs/index.d.ts +2 -2
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +19 -15
- 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 +23 -2
- package/dist/commonjs/logs/handler.js.map +1 -1
- package/dist/commonjs/metrics/performanceCounters.d.ts +3 -0
- package/dist/commonjs/metrics/performanceCounters.d.ts.map +1 -1
- package/dist/commonjs/metrics/performanceCounters.js +26 -26
- package/dist/commonjs/metrics/performanceCounters.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.map +1 -1
- package/dist/commonjs/metrics/quickpulse/export/sender.js +8 -7
- package/dist/commonjs/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist/commonjs/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/commonjs/metrics/quickpulse/liveMetrics.js +4 -2
- package/dist/commonjs/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/commonjs/package.json +6 -1
- package/dist/commonjs/shared/config.d.ts +7 -0
- package/dist/commonjs/shared/config.d.ts.map +1 -1
- package/dist/commonjs/shared/config.js +28 -6
- 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.map +1 -1
- package/dist/commonjs/traces/handler.js +1 -7
- package/dist/commonjs/traces/handler.js.map +1 -1
- package/dist/commonjs/traces/sampler.js +1 -1
- package/dist/commonjs/traces/sampler.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/types.d.ts +20 -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/common.d.ts +34 -0
- package/dist/commonjs/utils/common.d.ts.map +1 -1
- package/dist/commonjs/utils/common.js +63 -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 +38 -31
- package/dist/commonjs/utils/statsbeat.js.map +1 -1
- package/dist/esm/browserSdkLoader/browserSdkLoaderHelper.d.ts.map +1 -1
- package/dist/esm/browserSdkLoader/browserSdkLoaderHelper.js +1 -2
- package/dist/esm/browserSdkLoader/browserSdkLoaderHelper.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -15
- 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 +24 -3
- package/dist/esm/logs/handler.js.map +1 -1
- package/dist/esm/metrics/performanceCounters.d.ts +3 -0
- package/dist/esm/metrics/performanceCounters.d.ts.map +1 -1
- package/dist/esm/metrics/performanceCounters.js +26 -26
- package/dist/esm/metrics/performanceCounters.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.map +1 -1
- package/dist/esm/metrics/quickpulse/export/sender.js +8 -7
- package/dist/esm/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist/esm/metrics/quickpulse/liveMetrics.d.ts.map +1 -1
- package/dist/esm/metrics/quickpulse/liveMetrics.js +4 -2
- package/dist/esm/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist/esm/package.json +6 -1
- package/dist/esm/shared/config.d.ts +7 -0
- package/dist/esm/shared/config.d.ts.map +1 -1
- package/dist/esm/shared/config.js +29 -7
- 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.map +1 -1
- package/dist/esm/traces/handler.js +1 -7
- package/dist/esm/traces/handler.js.map +1 -1
- package/dist/esm/traces/sampler.js +1 -1
- package/dist/esm/traces/sampler.js.map +1 -1
- package/dist/esm/types.d.ts +20 -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/common.d.ts +34 -0
- package/dist/esm/utils/common.d.ts.map +1 -1
- package/dist/esm/utils/common.js +59 -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 +39 -32
- package/dist/esm/utils/statsbeat.js.map +1 -1
- package/package.json +31 -29
|
@@ -1,12 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getResourceProvider = exports.isAks = exports.isFunctionApp = exports.isAppService = exports.getOsPrefix = exports.isDarwin = exports.isLinux = exports.isWindows = void 0;
|
|
4
|
+
exports.hasNumberFlag = hasNumberFlag;
|
|
5
|
+
exports.addNumberFlag = addNumberFlag;
|
|
6
|
+
exports.removeNumberFlag = removeNumberFlag;
|
|
4
7
|
exports.ignoreOutgoingRequestHook = ignoreOutgoingRequestHook;
|
|
8
|
+
exports.isAksResourceDetectorPopulated = isAksResourceDetectorPopulated;
|
|
5
9
|
exports.msToTimeSpan = msToTimeSpan;
|
|
6
10
|
exports.parseResourceDetectorsFromEnvVar = parseResourceDetectorsFromEnvVar;
|
|
7
11
|
const resources_1 = require("@opentelemetry/resources");
|
|
8
12
|
const api_1 = require("@opentelemetry/api");
|
|
9
13
|
const resource_detector_azure_1 = require("@opentelemetry/resource-detector-azure");
|
|
14
|
+
/**
|
|
15
|
+
* Resource attribute holding the ARM resource ID of the AKS cluster, populated by the AKS
|
|
16
|
+
* resource detector. Declared locally because it is an unstable semantic convention that the
|
|
17
|
+
* detector package does not export.
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
const CLOUD_RESOURCE_ID_ATTRIBUTE = "cloud.resource_id";
|
|
21
|
+
/**
|
|
22
|
+
* Matches the full ARM resource ID of an AKS managed cluster, for example
|
|
23
|
+
* `/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerService/managedClusters/{name}`.
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
const AKS_MANAGED_CLUSTER_RESOURCE_ID_REGEX = /^\/subscriptions\/[^/\s]+\/resourceGroups\/[^/\s]+\/providers\/Microsoft\.ContainerService\/managedClusters\/[^/\s]+\/?$/i;
|
|
27
|
+
/**
|
|
28
|
+
* Tests a flag without 32-bit coercion.
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
function hasNumberFlag(mask, flag) {
|
|
32
|
+
return flag > 0 && Math.floor(mask / flag) % 2 === 1;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sets a flag without 32-bit coercion.
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
function addNumberFlag(mask, flag) {
|
|
39
|
+
return flag > 0 && !hasNumberFlag(mask, flag) ? mask + flag : mask;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Clears a flag without 32-bit coercion.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
function removeNumberFlag(mask, flag) {
|
|
46
|
+
return hasNumberFlag(mask, flag) ? mask - flag : mask;
|
|
47
|
+
}
|
|
10
48
|
function ignoreOutgoingRequestHook(request) {
|
|
11
49
|
if (request && request.headers && !Array.isArray(request.headers)) {
|
|
12
50
|
const outgoingHeaders = request.headers;
|
|
@@ -63,6 +101,31 @@ const isAks = () => {
|
|
|
63
101
|
return process.env.AKS_ARM_NAMESPACE_ID || process.env.KUBERNETES_SERVICE_HOST ? true : false;
|
|
64
102
|
};
|
|
65
103
|
exports.isAks = isAks;
|
|
104
|
+
/**
|
|
105
|
+
* Determines whether the AKS resource detector was actually able to populate the AKS cluster
|
|
106
|
+
* attributes, based on the attributes that detector - and only that detector - produced.
|
|
107
|
+
*
|
|
108
|
+
* This is only the case when the customer is running in AKS *and* has correctly wired up access
|
|
109
|
+
* to the `aks-cluster-metadata` ConfigMap in the `kube-public` namespace (RBAC role and role
|
|
110
|
+
* binding, surfaced either through the `CLUSTER_RESOURCE_ID` environment variable or through the
|
|
111
|
+
* mounted ConfigMap file).
|
|
112
|
+
*
|
|
113
|
+
* The merged resource is deliberately not inspected, because `k8s.cluster.name` and
|
|
114
|
+
* `cloud.resource_id` can also be contributed by other sources - the App Service, Functions and
|
|
115
|
+
* VM detectors all set `cloud.resource_id`, and both attributes can be supplied by the customer
|
|
116
|
+
* through `OTEL_RESOURCE_ATTRIBUTES` or a custom resource - none of which indicate that the AKS
|
|
117
|
+
* resource detector is working. The cluster resource ID is additionally validated to be a full
|
|
118
|
+
* AKS managed cluster ARM ID, since the detector does not validate the value it reads.
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
function isAksResourceDetectorPopulated(attributes = {}) {
|
|
122
|
+
if (!(0, exports.isAks)()) {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
const clusterResourceId = attributes[CLOUD_RESOURCE_ID_ATTRIBUTE];
|
|
126
|
+
return (typeof clusterResourceId === "string" &&
|
|
127
|
+
AKS_MANAGED_CLUSTER_RESOURCE_ID_REGEX.test(clusterResourceId.trim()));
|
|
128
|
+
}
|
|
66
129
|
/**
|
|
67
130
|
* Get prefix resource provider, vm will considered as "unknown RP"
|
|
68
131
|
* Web App: "a"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type http from \"node:http\";\nimport type { ResourceDetector } from \"@opentelemetry/resources\";\nimport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from \"@opentelemetry/resources\";\nimport { diag } from \"@opentelemetry/api\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\nexport function ignoreOutgoingRequestHook(request: http.RequestOptions): boolean {\n if (request && request.headers && !Array.isArray(request.headers)) {\n const outgoingHeaders = request.headers as http.OutgoingHttpHeaders;\n if (\n (outgoingHeaders[\"User-Agent\"] &&\n outgoingHeaders[\"User-Agent\"]\n .toString()\n .indexOf(\"azsdk-js-monitor-opentelemetry-exporter\") > -1) ||\n (outgoingHeaders[\"user-agent\"] &&\n outgoingHeaders[\"user-agent\"]\n .toString()\n .indexOf(\"azsdk-js-monitor-opentelemetry-exporter\") > -1)\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport const isWindows = (): boolean => {\n return process.platform === \"win32\";\n};\n\nexport const isLinux = (): boolean => {\n return process.platform === \"linux\";\n};\n\nexport const isDarwin = (): boolean => {\n return process.platform === \"darwin\";\n};\n\n/**\n * Get prefix for OS\n * Windows system: \"w\"\n * Linux system: \"l\"\n * non-Windows and non-Linux system: \"u\" (unknown)\n */\nexport const getOsPrefix = (): string => {\n return isWindows() ? \"w\" : isLinux() ? \"l\" : \"u\";\n};\n\n/**\n * Get prefix resource provider, vm will considered as \"unknown RP\"\n * Web App: \"a\"\n * Function App: \"f\"\n * non-Web and non-Function APP: \"u\" (unknown)\n */\nexport const isAppService = (): boolean => {\n return process.env.WEBSITE_SITE_NAME && !process.env.FUNCTIONS_WORKER_RUNTIME ? true : false;\n};\n\nexport const isFunctionApp = (): boolean => {\n return process.env.FUNCTIONS_WORKER_RUNTIME ? true : false;\n};\n\nexport const isAks = (): boolean => {\n return process.env.AKS_ARM_NAMESPACE_ID || process.env.KUBERNETES_SERVICE_HOST ? true : false;\n};\n\n/**\n * Get prefix resource provider, vm will considered as \"unknown RP\"\n * Web App: \"a\"\n * Function App: \"f\"\n * AKS: \"k\"\n * non-Web and non-Function APP: \"u\" (unknown)\n */\nexport const getResourceProvider = (): string => {\n if (isAppService()) {\n return \"a\";\n }\n if (isFunctionApp()) {\n return \"f\";\n }\n if (isAks()) {\n return \"k\";\n }\n return \"u\";\n};\n\n/**\n * Convert milliseconds to Breeze expected time.\n * @internal\n */\nexport function msToTimeSpan(ms: number): string {\n let totalms = ms;\n if (Number.isNaN(totalms) || totalms < 0 || !Number.isFinite(ms)) {\n totalms = 0;\n }\n\n let sec = ((totalms / 1000) % 60).toFixed(7).replace(/0{0,4}$/, \"\");\n let min = `${Math.floor(totalms / (1000 * 60)) % 60}`;\n let hour = `${Math.floor(totalms / (1000 * 60 * 60)) % 24}`;\n const days = Math.floor(totalms / (1000 * 60 * 60 * 24));\n\n sec = sec.indexOf(\".\") < 2 ? `0${sec}` : sec;\n min = min.length < 2 ? `0${min}` : min;\n hour = hour.length < 2 ? `0${hour}` : hour;\n const daysText = days > 0 ? `${days}.` : \"\";\n\n return `${daysText + hour}:${min}:${sec}`;\n}\n\n// This function is a slight modification of an upstream otel util function -\n// mainly for prioritizing the resource detectors customer may specify over\n// env var & not enabling process detector by default.\nexport function parseResourceDetectorsFromEnvVar(): Array<ResourceDetector> {\n const resourceDetectors = new Map<string, ResourceDetector>([\n [\"env\", envDetector],\n [\"host\", hostDetector],\n [\"os\", osDetector],\n [\"process\", processDetector],\n [\"serviceinstance\", serviceInstanceIdDetector],\n [\"azure_aks\", azureAksDetector],\n [\"azure_app_service\", azureAppServiceDetector],\n [\"azure_functions\", azureFunctionsDetector],\n [\"azure_vm\", azureVmDetector],\n ]);\n\n if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) {\n const resourceDetectorsFromEnv = process.env.OTEL_NODE_RESOURCE_DETECTORS?.split(\",\") ?? [\n \"env\",\n \"host\",\n \"os\",\n ];\n\n if (resourceDetectorsFromEnv.includes(\"all\")) {\n return [...resourceDetectors.values()];\n }\n\n if (resourceDetectorsFromEnv.includes(\"none\")) {\n return [];\n }\n\n return resourceDetectorsFromEnv.flatMap((detector) => {\n const resourceDetector = resourceDetectors.get(detector);\n if (!resourceDetector) {\n diag.error(\n `Invalid resource detector \"${detector}\" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`,\n );\n return [];\n }\n return [resourceDetector];\n });\n } else {\n // leaving out the process detector as that can add many resource attributes\n // with large values. Also not enabling service instance attributes by default\n // as this is still experimental.\n return [envDetector, hostDetector, osDetector];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type http from \"node:http\";\nimport type { Attributes } from \"@opentelemetry/api\";\nimport type { ResourceDetector } from \"@opentelemetry/resources\";\nimport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n serviceInstanceIdDetector,\n} from \"@opentelemetry/resources\";\nimport { diag } from \"@opentelemetry/api\";\nimport {\n azureAksDetector,\n azureAppServiceDetector,\n azureFunctionsDetector,\n azureVmDetector,\n} from \"@opentelemetry/resource-detector-azure\";\n\n/**\n * Resource attribute holding the ARM resource ID of the AKS cluster, populated by the AKS\n * resource detector. Declared locally because it is an unstable semantic convention that the\n * detector package does not export.\n * @internal\n */\nconst CLOUD_RESOURCE_ID_ATTRIBUTE = \"cloud.resource_id\";\n\n/**\n * Matches the full ARM resource ID of an AKS managed cluster, for example\n * `/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerService/managedClusters/{name}`.\n * @internal\n */\nconst AKS_MANAGED_CLUSTER_RESOURCE_ID_REGEX =\n /^\\/subscriptions\\/[^/\\s]+\\/resourceGroups\\/[^/\\s]+\\/providers\\/Microsoft\\.ContainerService\\/managedClusters\\/[^/\\s]+\\/?$/i;\n\n/**\n * Tests a flag without 32-bit coercion.\n * @internal\n */\nexport function hasNumberFlag(mask: number, flag: number): boolean {\n return flag > 0 && Math.floor(mask / flag) % 2 === 1;\n}\n\n/**\n * Sets a flag without 32-bit coercion.\n * @internal\n */\nexport function addNumberFlag(mask: number, flag: number): number {\n return flag > 0 && !hasNumberFlag(mask, flag) ? mask + flag : mask;\n}\n\n/**\n * Clears a flag without 32-bit coercion.\n * @internal\n */\nexport function removeNumberFlag(mask: number, flag: number): number {\n return hasNumberFlag(mask, flag) ? mask - flag : mask;\n}\n\nexport function ignoreOutgoingRequestHook(request: http.RequestOptions): boolean {\n if (request && request.headers && !Array.isArray(request.headers)) {\n const outgoingHeaders = request.headers as http.OutgoingHttpHeaders;\n if (\n (outgoingHeaders[\"User-Agent\"] &&\n outgoingHeaders[\"User-Agent\"]\n .toString()\n .indexOf(\"azsdk-js-monitor-opentelemetry-exporter\") > -1) ||\n (outgoingHeaders[\"user-agent\"] &&\n outgoingHeaders[\"user-agent\"]\n .toString()\n .indexOf(\"azsdk-js-monitor-opentelemetry-exporter\") > -1)\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport const isWindows = (): boolean => {\n return process.platform === \"win32\";\n};\n\nexport const isLinux = (): boolean => {\n return process.platform === \"linux\";\n};\n\nexport const isDarwin = (): boolean => {\n return process.platform === \"darwin\";\n};\n\n/**\n * Get prefix for OS\n * Windows system: \"w\"\n * Linux system: \"l\"\n * non-Windows and non-Linux system: \"u\" (unknown)\n */\nexport const getOsPrefix = (): string => {\n return isWindows() ? \"w\" : isLinux() ? \"l\" : \"u\";\n};\n\n/**\n * Get prefix resource provider, vm will considered as \"unknown RP\"\n * Web App: \"a\"\n * Function App: \"f\"\n * non-Web and non-Function APP: \"u\" (unknown)\n */\nexport const isAppService = (): boolean => {\n return process.env.WEBSITE_SITE_NAME && !process.env.FUNCTIONS_WORKER_RUNTIME ? true : false;\n};\n\nexport const isFunctionApp = (): boolean => {\n return process.env.FUNCTIONS_WORKER_RUNTIME ? true : false;\n};\n\nexport const isAks = (): boolean => {\n return process.env.AKS_ARM_NAMESPACE_ID || process.env.KUBERNETES_SERVICE_HOST ? true : false;\n};\n\n/**\n * Determines whether the AKS resource detector was actually able to populate the AKS cluster\n * attributes, based on the attributes that detector - and only that detector - produced.\n *\n * This is only the case when the customer is running in AKS *and* has correctly wired up access\n * to the `aks-cluster-metadata` ConfigMap in the `kube-public` namespace (RBAC role and role\n * binding, surfaced either through the `CLUSTER_RESOURCE_ID` environment variable or through the\n * mounted ConfigMap file).\n *\n * The merged resource is deliberately not inspected, because `k8s.cluster.name` and\n * `cloud.resource_id` can also be contributed by other sources - the App Service, Functions and\n * VM detectors all set `cloud.resource_id`, and both attributes can be supplied by the customer\n * through `OTEL_RESOURCE_ATTRIBUTES` or a custom resource - none of which indicate that the AKS\n * resource detector is working. The cluster resource ID is additionally validated to be a full\n * AKS managed cluster ARM ID, since the detector does not validate the value it reads.\n * @internal\n */\nexport function isAksResourceDetectorPopulated(attributes: Attributes = {}): boolean {\n if (!isAks()) {\n return false;\n }\n const clusterResourceId = attributes[CLOUD_RESOURCE_ID_ATTRIBUTE];\n return (\n typeof clusterResourceId === \"string\" &&\n AKS_MANAGED_CLUSTER_RESOURCE_ID_REGEX.test(clusterResourceId.trim())\n );\n}\n\n/**\n * Get prefix resource provider, vm will considered as \"unknown RP\"\n * Web App: \"a\"\n * Function App: \"f\"\n * AKS: \"k\"\n * non-Web and non-Function APP: \"u\" (unknown)\n */\nexport const getResourceProvider = (): string => {\n if (isAppService()) {\n return \"a\";\n }\n if (isFunctionApp()) {\n return \"f\";\n }\n if (isAks()) {\n return \"k\";\n }\n return \"u\";\n};\n\n/**\n * Convert milliseconds to Breeze expected time.\n * @internal\n */\nexport function msToTimeSpan(ms: number): string {\n let totalms = ms;\n if (Number.isNaN(totalms) || totalms < 0 || !Number.isFinite(ms)) {\n totalms = 0;\n }\n\n let sec = ((totalms / 1000) % 60).toFixed(7).replace(/0{0,4}$/, \"\");\n let min = `${Math.floor(totalms / (1000 * 60)) % 60}`;\n let hour = `${Math.floor(totalms / (1000 * 60 * 60)) % 24}`;\n const days = Math.floor(totalms / (1000 * 60 * 60 * 24));\n\n sec = sec.indexOf(\".\") < 2 ? `0${sec}` : sec;\n min = min.length < 2 ? `0${min}` : min;\n hour = hour.length < 2 ? `0${hour}` : hour;\n const daysText = days > 0 ? `${days}.` : \"\";\n\n return `${daysText + hour}:${min}:${sec}`;\n}\n\n// This function is a slight modification of an upstream otel util function -\n// mainly for prioritizing the resource detectors customer may specify over\n// env var & not enabling process detector by default.\nexport function parseResourceDetectorsFromEnvVar(): Array<ResourceDetector> {\n const resourceDetectors = new Map<string, ResourceDetector>([\n [\"env\", envDetector],\n [\"host\", hostDetector],\n [\"os\", osDetector],\n [\"process\", processDetector],\n [\"serviceinstance\", serviceInstanceIdDetector],\n [\"azure_aks\", azureAksDetector],\n [\"azure_app_service\", azureAppServiceDetector],\n [\"azure_functions\", azureFunctionsDetector],\n [\"azure_vm\", azureVmDetector],\n ]);\n\n if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) {\n const resourceDetectorsFromEnv = process.env.OTEL_NODE_RESOURCE_DETECTORS?.split(\",\") ?? [\n \"env\",\n \"host\",\n \"os\",\n ];\n\n if (resourceDetectorsFromEnv.includes(\"all\")) {\n return [...resourceDetectors.values()];\n }\n\n if (resourceDetectorsFromEnv.includes(\"none\")) {\n return [];\n }\n\n return resourceDetectorsFromEnv.flatMap((detector) => {\n const resourceDetector = resourceDetectors.get(detector);\n if (!resourceDetector) {\n diag.error(\n `Invalid resource detector \"${detector}\" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`,\n );\n return [];\n }\n return [resourceDetector];\n });\n } else {\n // leaving out the process detector as that can add many resource attributes\n // with large values. Also not enabling service instance attributes by default\n // as this is still experimental.\n return [envDetector, hostDetector, osDetector];\n }\n}\n"]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { SeverityNumber } from "@opentelemetry/api-logs";
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether the instrumentation logging level disables collection.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function isLogCollectionDisabled(): boolean;
|
|
2
7
|
/**
|
|
3
8
|
* Convert log level to severity number.
|
|
4
9
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuBzE"}
|
|
1
|
+
{"version":3,"file":"logUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuBzE"}
|
|
@@ -2,8 +2,16 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.isLogCollectionDisabled = isLogCollectionDisabled;
|
|
5
6
|
exports.logLevelToSeverityNumber = logLevelToSeverityNumber;
|
|
6
7
|
const api_logs_1 = require("@opentelemetry/api-logs");
|
|
8
|
+
/**
|
|
9
|
+
* Checks whether the instrumentation logging level disables collection.
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
function isLogCollectionDisabled() {
|
|
13
|
+
return process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL === "NONE";
|
|
14
|
+
}
|
|
7
15
|
/**
|
|
8
16
|
* Convert log level to severity number.
|
|
9
17
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logUtils.js","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAQlC,4DAuBC;
|
|
1
|
+
{"version":3,"file":"logUtils.js","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAQlC,0DAEC;AAMD,4DAuBC;AArCD,sDAAyD;AAEzD;;;GAGG;AACH,SAAgB,uBAAuB;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,iDAAiD,KAAK,MAAM,CAAC;AAClF,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,QAAgB;IACvD,IAAI,cAAc,GAAG,yBAAc,CAAC,WAAW,CAAC;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,cAAc,GAAG,yBAAc,CAAC,WAAW,CAAC;YAC5C,MAAM;QACR,KAAK,OAAO;YACV,cAAc,GAAG,yBAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,OAAO;YACV,cAAc,GAAG,yBAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,cAAc,GAAG,yBAAc,CAAC,IAAI,CAAC;YACrC,MAAM;QACR,KAAK,SAAS;YACZ,cAAc,GAAG,yBAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,cAAc,GAAG,yBAAc,CAAC,IAAI,CAAC;YACrC,MAAM;IACV,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { SeverityNumber } from \"@opentelemetry/api-logs\";\n\n/**\n * Checks whether the instrumentation logging level disables collection.\n * @internal\n */\nexport function isLogCollectionDisabled(): boolean {\n return process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL === \"NONE\";\n}\n\n/**\n * Convert log level to severity number.\n * @internal\n */\nexport function logLevelToSeverityNumber(logLevel: string): SeverityNumber {\n let severityNumber = SeverityNumber.UNSPECIFIED;\n switch (logLevel) {\n case \"ALL\":\n severityNumber = SeverityNumber.UNSPECIFIED;\n break;\n case \"DEBUG\":\n severityNumber = SeverityNumber.DEBUG;\n break;\n case \"ERROR\":\n severityNumber = SeverityNumber.ERROR;\n break;\n case \"INFO\":\n severityNumber = SeverityNumber.INFO;\n break;\n case \"VERBOSE\":\n severityNumber = SeverityNumber.TRACE;\n break;\n case \"WARN\":\n severityNumber = SeverityNumber.WARN;\n break;\n }\n return severityNumber;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opentelemetryInstrumentationPatcher.d.ts","sourceRoot":"","sources":["../../../src/utils/opentelemetryInstrumentationPatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opentelemetryInstrumentationPatcher.d.ts","sourceRoot":"","sources":["../../../src/utils/opentelemetryInstrumentationPatcher.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,wBAAgB,uCAAuC,IAAI,IAAI,CAoC9D"}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.patchOpenTelemetryInstrumentationEnable = patchOpenTelemetryInstrumentationEnable;
|
|
6
6
|
const types_js_1 = require("../types.js");
|
|
7
7
|
const index_js_1 = require("../shared/logging/index.js");
|
|
8
|
+
const common_js_1 = require("./common.js");
|
|
8
9
|
/**
|
|
9
10
|
* Patch OpenTelemetry Instrumentation enablement to update the statsbeat environment variable with the enabled instrumentations
|
|
10
11
|
* @internal
|
|
@@ -22,9 +23,9 @@ function patchOpenTelemetryInstrumentationEnable() {
|
|
|
22
23
|
const statsbeatOptions = JSON.parse(process.env[types_js_1.AZURE_MONITOR_STATSBEAT_FEATURES] || emptyStatsbeatConfig);
|
|
23
24
|
let updatedStatsbeat = {};
|
|
24
25
|
for (let i = 0; i < instrumentations.length; i++) {
|
|
26
|
+
statsbeatOptions.instrumentation = (0, common_js_1.addNumberFlag)(statsbeatOptions.instrumentation, types_js_1.StatsbeatInstrumentationMap.get(instrumentations[i].instrumentationName) || 0);
|
|
25
27
|
updatedStatsbeat = {
|
|
26
|
-
instrumentation:
|
|
27
|
-
types_js_1.StatsbeatInstrumentationMap.get(instrumentations[i].instrumentationName) || 0),
|
|
28
|
+
instrumentation: statsbeatOptions.instrumentation,
|
|
28
29
|
feature: statsbeatOptions.feature,
|
|
29
30
|
};
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opentelemetryInstrumentationPatcher.js","sourceRoot":"","sources":["../../../src/utils/opentelemetryInstrumentationPatcher.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;
|
|
1
|
+
{"version":3,"file":"opentelemetryInstrumentationPatcher.js","sourceRoot":"","sources":["../../../src/utils/opentelemetryInstrumentationPatcher.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAYlC,0FAoCC;AA5CD,0CAA4F;AAC5F,yDAAoD;AACpD,2CAA4C;AAE5C;;;GAGG;AACH,SAAgB,uCAAuC;IACrD,MAAM,oBAAoB,GAAW,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxF,IAAI,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAClD,iEAAiE;QACjE,MAAM,eAAe,GAAG,OAAO,CAAC,0DAA0D,CAAC,CAAC;QAE5F,MAAM,wBAAwB,GAAG,eAAe,CAAC,sBAAsB,CAAC;QAExE,0GAA0G;QAC1G,eAAe,CAAC,sBAAsB,GAAG,UAAU,gBAAmC;YACpF,IAAI,CAAC;gBACH,MAAM,gBAAgB,GAA+B,IAAI,CAAC,KAAK,CAC7D,OAAO,CAAC,GAAG,CAAC,2CAAgC,CAAC,IAAI,oBAAoB,CACtE,CAAC;gBACF,IAAI,gBAAgB,GAAG,EAAE,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACjD,gBAAgB,CAAC,eAAe,GAAG,IAAA,yBAAa,EAC9C,gBAAgB,CAAC,eAAe,EAChC,sCAA2B,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAC9E,CAAC;oBACF,gBAAgB,GAAG;wBACjB,eAAe,EAAE,gBAAgB,CAAC,eAAe;wBACjD,OAAO,EAAE,gBAAgB,CAAC,OAAO;qBAClC,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,2CAAgC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,iBAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAClF,CAAC;YACD,mFAAmF;YACnF,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,2CAA2C;IAC7C,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport type { StatsbeatEnvironmentConfig } from \"../types.js\";\nimport { AZURE_MONITOR_STATSBEAT_FEATURES, StatsbeatInstrumentationMap } from \"../types.js\";\nimport { Logger } from \"../shared/logging/index.js\";\nimport { addNumberFlag } from \"./common.js\";\n\n/**\n * Patch OpenTelemetry Instrumentation enablement to update the statsbeat environment variable with the enabled instrumentations\n * @internal\n */\nexport function patchOpenTelemetryInstrumentationEnable(): void {\n const emptyStatsbeatConfig: string = JSON.stringify({ instrumentation: 0, feature: 0 });\n try {\n require.resolve(\"@opentelemetry/instrumentation\");\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const autoLoaderUtils = require(\"@opentelemetry/instrumentation/build/src/autoLoaderUtils\");\n\n const originalModuleDefinition = autoLoaderUtils.enableInstrumentations;\n\n // Parses the enabled instrumentations and then ammends the statsbeat instrumentation environment variable\n autoLoaderUtils.enableInstrumentations = function (instrumentations: Instrumentation[]) {\n try {\n const statsbeatOptions: StatsbeatEnvironmentConfig = JSON.parse(\n process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || emptyStatsbeatConfig,\n );\n let updatedStatsbeat = {};\n for (let i = 0; i < instrumentations.length; i++) {\n statsbeatOptions.instrumentation = addNumberFlag(\n statsbeatOptions.instrumentation,\n StatsbeatInstrumentationMap.get(instrumentations[i].instrumentationName) || 0,\n );\n updatedStatsbeat = {\n instrumentation: statsbeatOptions.instrumentation,\n feature: statsbeatOptions.feature,\n };\n }\n process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify(updatedStatsbeat);\n } catch (e) {\n Logger.getInstance().warn(\"Failed to parse the statsbeat environment variable\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, prefer-rest-params\n return originalModuleDefinition.apply(this, arguments);\n };\n } catch (e) {\n // Fail silently if the module is not found\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statsbeat.d.ts","sourceRoot":"","sources":["../../../src/utils/statsbeat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"statsbeat.d.ts","sourceRoot":"","sources":["../../../src/utils/statsbeat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,aAAa,CAAC;AAarB,cAAM,sBAAsB;IAE1B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,gCAAgC,CAAiC;IACzE,OAAO,CAAC,wBAAwB,CAAyB;;IAmBlD,oBAAoB,GACzB,2BAA2B,yBAAyB,EACpD,mBAAmB,iBAAiB,UAiHpC;CACH;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,sBAAsB,CAKpD"}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.getInstance = getInstance;
|
|
6
6
|
const types_js_1 = require("../types.js");
|
|
7
7
|
const index_js_1 = require("../shared/logging/index.js");
|
|
8
|
+
const common_js_1 = require("./common.js");
|
|
8
9
|
let instance;
|
|
9
10
|
class StatsbeatConfiguration {
|
|
10
11
|
// Initial Statsbeat options
|
|
@@ -37,45 +38,49 @@ class StatsbeatConfiguration {
|
|
|
37
38
|
};
|
|
38
39
|
this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };
|
|
39
40
|
// Set the statsbeat options for community instrumentations based on the environment variable
|
|
41
|
+
const envInstrumentation = statsbeatEnv.instrumentation;
|
|
40
42
|
statsbeatInstrumentations = {
|
|
41
43
|
...this.currentStatsbeatInstrumentations,
|
|
42
|
-
amqplib:
|
|
43
|
-
cucumber:
|
|
44
|
-
dataloader:
|
|
45
|
-
fs:
|
|
46
|
-
lruMemoizer:
|
|
47
|
-
mongoose:
|
|
48
|
-
runtimeNode:
|
|
49
|
-
socketIo:
|
|
50
|
-
tedious:
|
|
51
|
-
undici:
|
|
52
|
-
cassandra:
|
|
53
|
-
connect:
|
|
54
|
-
dns:
|
|
55
|
-
express:
|
|
56
|
-
fastify:
|
|
57
|
-
genericPool:
|
|
58
|
-
graphql:
|
|
59
|
-
hapi:
|
|
60
|
-
ioredis:
|
|
61
|
-
knex:
|
|
62
|
-
koa:
|
|
63
|
-
memcached:
|
|
64
|
-
mysql2:
|
|
65
|
-
nestjsCore:
|
|
66
|
-
net:
|
|
67
|
-
pino:
|
|
68
|
-
restify:
|
|
69
|
-
router:
|
|
44
|
+
amqplib: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.AMQPLIB),
|
|
45
|
+
cucumber: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.CUCUMBER),
|
|
46
|
+
dataloader: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.DATALOADER),
|
|
47
|
+
fs: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.FS),
|
|
48
|
+
lruMemoizer: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.LRU_MEMOIZER),
|
|
49
|
+
mongoose: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.MONGOOSE),
|
|
50
|
+
runtimeNode: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.RUNTIME_NODE),
|
|
51
|
+
socketIo: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.SOCKET_IO),
|
|
52
|
+
tedious: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.TEDIOUS),
|
|
53
|
+
undici: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.UNDICI),
|
|
54
|
+
cassandra: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.CASSANDRA),
|
|
55
|
+
connect: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.CONNECT),
|
|
56
|
+
dns: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.DNS),
|
|
57
|
+
express: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.EXPRESS),
|
|
58
|
+
fastify: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.FASTIFY),
|
|
59
|
+
genericPool: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.GENERIC_POOL),
|
|
60
|
+
graphql: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.GRAPHQL),
|
|
61
|
+
hapi: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.HAPI),
|
|
62
|
+
ioredis: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.IOREDIS),
|
|
63
|
+
knex: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.KNEX),
|
|
64
|
+
koa: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.KOA),
|
|
65
|
+
memcached: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.MEMCACHED),
|
|
66
|
+
mysql2: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.MYSQL2),
|
|
67
|
+
nestjsCore: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.NESTJS_CORE),
|
|
68
|
+
net: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.NET),
|
|
69
|
+
pino: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.PINO),
|
|
70
|
+
restify: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.RESTIFY),
|
|
71
|
+
router: (0, common_js_1.hasNumberFlag)(envInstrumentation, types_js_1.StatsbeatInstrumentation.ROUTER),
|
|
70
72
|
};
|
|
71
73
|
let instrumentationBitMap = types_js_1.StatsbeatInstrumentation.NONE;
|
|
72
74
|
const instrumentationArray = Object.entries(statsbeatInstrumentations).map((entry) => {
|
|
73
75
|
return { option: entry[0], value: entry[1] };
|
|
74
76
|
});
|
|
75
|
-
// Map
|
|
77
|
+
// Map enabled option names to their assigned bits.
|
|
76
78
|
for (let i = 0; i < instrumentationArray.length; i++) {
|
|
77
79
|
if (instrumentationArray[i].value) {
|
|
78
|
-
|
|
80
|
+
const instrumentationBit = types_js_1.StatsbeatInstrumentationsMap.get(instrumentationArray[i].option);
|
|
81
|
+
if (instrumentationBit !== undefined) {
|
|
82
|
+
instrumentationBitMap = (0, common_js_1.addNumberFlag)(instrumentationBitMap, instrumentationBit);
|
|
83
|
+
}
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
86
|
// Create feature bit map
|
|
@@ -102,7 +107,9 @@ class StatsbeatConfiguration {
|
|
|
102
107
|
try {
|
|
103
108
|
const currentFeaturesBitMap = Number(process.env[types_js_1.AZURE_MONITOR_STATSBEAT_FEATURES]);
|
|
104
109
|
if (!isNaN(currentFeaturesBitMap)) {
|
|
105
|
-
|
|
110
|
+
// The AKS resource detector feature always reflects whether *this* process was able to
|
|
111
|
+
// read the AKS cluster metadata, so it is never inherited from a seeded bit map.
|
|
112
|
+
featureBitMap |= (0, common_js_1.removeNumberFlag)(currentFeaturesBitMap, types_js_1.StatsbeatFeature.AKS_RESOURCE_DETECTOR_POPULATION);
|
|
106
113
|
}
|
|
107
114
|
process.env[types_js_1.AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({
|
|
108
115
|
instrumentation: instrumentationBitMap,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statsbeat.js","sourceRoot":"","sources":["../../../src/utils/statsbeat.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n StatsbeatEnvironmentConfig,\n StatsbeatFeatures,\n StatsbeatInstrumentations,\n StatsbeatOption,\n} from \"../types.js\";\nimport {\n AZURE_MONITOR_STATSBEAT_FEATURES,\n StatsbeatFeature,\n StatsbeatFeaturesMap,\n StatsbeatInstrumentation,\n} from \"../types.js\";\nimport { Logger as InternalLogger } from \"../shared/logging/index.js\";\n\nlet instance: StatsbeatConfiguration;\n\nclass StatsbeatConfiguration {\n // Initial Statsbeat options\n private initializedByShim = false;\n private currentStatsbeatInstrumentations: StatsbeatInstrumentations = {};\n private currentStatsbeatFeatures: StatsbeatFeatures = {};\n\n constructor() {\n // Check for shim initialization upon construction\n try {\n if (\n JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\").feature &\n StatsbeatFeature.SHIM\n ) {\n this.initializedByShim = true;\n }\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n }\n\n public setStatsbeatFeatures = (\n statsbeatInstrumentations: StatsbeatInstrumentations,\n statsbeatFeatures: StatsbeatFeatures,\n ) => {\n let statsbeatEnv: StatsbeatEnvironmentConfig;\n try {\n statsbeatEnv = JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\");\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n this.currentStatsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n ...statsbeatInstrumentations,\n };\n this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };\n\n // Set the statsbeat options for community instrumentations based on the environment variable\n statsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n amqplib: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.AMQPLIB ? true : false,\n cucumber: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.CUCUMBER ? true : false,\n dataloader:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.DATALOADER ? true : false,\n fs: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.FS ? true : false,\n lruMemoizer:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.LRU_MEMOIZER ? true : false,\n mongoose: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.MONGOOSE ? true : false,\n runtimeNode:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.RUNTIME_NODE ? true : false,\n socketIo: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.SOCKET_IO ? true : false,\n tedious: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.TEDIOUS ? true : false,\n undici: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.UNDICI ? true : false,\n cassandra: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.CASSANDRA ? true : false,\n connect: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.CONNECT ? true : false,\n dns: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.DNS ? true : false,\n express: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.EXPRESS ? true : false,\n fastify: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.FASTIFY ? true : false,\n genericPool:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.GENERIC_POOL ? true : false,\n graphql: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.GRAPHQL ? true : false,\n hapi: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.HAPI ? true : false,\n ioredis: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.IOREDIS ? true : false,\n knex: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.KNEX ? true : false,\n koa: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.KOA ? true : false,\n memcached: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.MEMCACHED ? true : false,\n mysql2: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.MYSQL2 ? true : false,\n nestjsCore:\n statsbeatEnv!.instrumentation & StatsbeatInstrumentation.NESTJS_CORE ? true : false,\n net: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.NET ? true : false,\n pino: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.PINO ? true : false,\n restify: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.RESTIFY ? true : false,\n router: statsbeatEnv!.instrumentation & StatsbeatInstrumentation.ROUTER ? true : false,\n };\n\n let instrumentationBitMap = StatsbeatInstrumentation.NONE;\n\n const instrumentationArray: Array<StatsbeatOption> = Object.entries(\n statsbeatInstrumentations,\n ).map((entry) => {\n return { option: entry[0], value: entry[1] };\n });\n\n // Map the instrumentation options to a bit map\n for (let i = 0; i < instrumentationArray.length; i++) {\n if (instrumentationArray[i].value) {\n instrumentationBitMap |= 2 ** i;\n }\n }\n\n // Create feature bit map\n let featureBitMap = StatsbeatFeature.NONE;\n\n if (this.initializedByShim) {\n this.currentStatsbeatFeatures.shim = true;\n } else {\n this.currentStatsbeatFeatures.distro = true;\n }\n\n if (statsbeatFeatures.liveMetrics) {\n this.currentStatsbeatFeatures.liveMetrics = true;\n }\n\n const featureArray: Array<StatsbeatOption> = Object.entries(this.currentStatsbeatFeatures).map(\n (entry) => {\n return { option: entry[0], value: entry[1] };\n },\n );\n\n // Map the feature options to a bit map\n for (let i = 0; i < featureArray.length; i++) {\n if (featureArray[i].value) {\n featureBitMap |= StatsbeatFeaturesMap.get(featureArray[i].option)!;\n }\n }\n\n // Merge old statsbeat options with new statsbeat options overriding any common properties\n try {\n const currentFeaturesBitMap = Number(process.env[AZURE_MONITOR_STATSBEAT_FEATURES]);\n if (!isNaN(currentFeaturesBitMap)) {\n featureBitMap |= currentFeaturesBitMap;\n }\n process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({\n instrumentation: instrumentationBitMap,\n feature: featureBitMap,\n });\n } catch (error) {\n InternalLogger.getInstance().error(\"Failed call to JSON.stringify.\", error);\n }\n };\n}\n\n/**\n * Singleton Statsbeat instance.\n * @internal\n */\nexport function getInstance(): StatsbeatConfiguration {\n if (!instance) {\n instance = new StatsbeatConfiguration();\n }\n return instance;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"statsbeat.js","sourceRoot":"","sources":["../../../src/utils/statsbeat.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n StatsbeatEnvironmentConfig,\n StatsbeatFeatures,\n StatsbeatInstrumentations,\n StatsbeatOption,\n} from \"../types.js\";\nimport {\n AZURE_MONITOR_STATSBEAT_FEATURES,\n StatsbeatFeature,\n StatsbeatFeaturesMap,\n StatsbeatInstrumentation,\n StatsbeatInstrumentationsMap,\n} from \"../types.js\";\nimport { Logger as InternalLogger } from \"../shared/logging/index.js\";\nimport { addNumberFlag, hasNumberFlag, removeNumberFlag } from \"./common.js\";\n\nlet instance: StatsbeatConfiguration;\n\nclass StatsbeatConfiguration {\n // Initial Statsbeat options\n private initializedByShim = false;\n private currentStatsbeatInstrumentations: StatsbeatInstrumentations = {};\n private currentStatsbeatFeatures: StatsbeatFeatures = {};\n\n constructor() {\n // Check for shim initialization upon construction\n try {\n if (\n JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\").feature &\n StatsbeatFeature.SHIM\n ) {\n this.initializedByShim = true;\n }\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n }\n\n public setStatsbeatFeatures = (\n statsbeatInstrumentations: StatsbeatInstrumentations,\n statsbeatFeatures: StatsbeatFeatures,\n ) => {\n let statsbeatEnv: StatsbeatEnvironmentConfig;\n try {\n statsbeatEnv = JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || \"{}\");\n } catch (error) {\n InternalLogger.getInstance().error(\n \"Failed to parse statsbeat config environment variable.\",\n error,\n );\n }\n this.currentStatsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n ...statsbeatInstrumentations,\n };\n this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };\n\n // Set the statsbeat options for community instrumentations based on the environment variable\n const envInstrumentation = statsbeatEnv!.instrumentation;\n statsbeatInstrumentations = {\n ...this.currentStatsbeatInstrumentations,\n amqplib: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.AMQPLIB),\n cucumber: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CUCUMBER),\n dataloader: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DATALOADER),\n fs: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FS),\n lruMemoizer: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.LRU_MEMOIZER),\n mongoose: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MONGOOSE),\n runtimeNode: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RUNTIME_NODE),\n socketIo: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.SOCKET_IO),\n tedious: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.TEDIOUS),\n undici: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.UNDICI),\n cassandra: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CASSANDRA),\n connect: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CONNECT),\n dns: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DNS),\n express: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.EXPRESS),\n fastify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FASTIFY),\n genericPool: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GENERIC_POOL),\n graphql: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GRAPHQL),\n hapi: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.HAPI),\n ioredis: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.IOREDIS),\n knex: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KNEX),\n koa: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KOA),\n memcached: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MEMCACHED),\n mysql2: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MYSQL2),\n nestjsCore: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NESTJS_CORE),\n net: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NET),\n pino: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.PINO),\n restify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RESTIFY),\n router: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.ROUTER),\n };\n\n let instrumentationBitMap = StatsbeatInstrumentation.NONE;\n\n const instrumentationArray: Array<StatsbeatOption> = Object.entries(\n statsbeatInstrumentations,\n ).map((entry) => {\n return { option: entry[0], value: entry[1] };\n });\n\n // Map enabled option names to their assigned bits.\n for (let i = 0; i < instrumentationArray.length; i++) {\n if (instrumentationArray[i].value) {\n const instrumentationBit = StatsbeatInstrumentationsMap.get(instrumentationArray[i].option);\n if (instrumentationBit !== undefined) {\n instrumentationBitMap = addNumberFlag(instrumentationBitMap, instrumentationBit);\n }\n }\n }\n\n // Create feature bit map\n let featureBitMap = StatsbeatFeature.NONE;\n\n if (this.initializedByShim) {\n this.currentStatsbeatFeatures.shim = true;\n } else {\n this.currentStatsbeatFeatures.distro = true;\n }\n\n if (statsbeatFeatures.liveMetrics) {\n this.currentStatsbeatFeatures.liveMetrics = true;\n }\n\n const featureArray: Array<StatsbeatOption> = Object.entries(this.currentStatsbeatFeatures).map(\n (entry) => {\n return { option: entry[0], value: entry[1] };\n },\n );\n\n // Map the feature options to a bit map\n for (let i = 0; i < featureArray.length; i++) {\n if (featureArray[i].value) {\n featureBitMap |= StatsbeatFeaturesMap.get(featureArray[i].option)!;\n }\n }\n\n // Merge old statsbeat options with new statsbeat options overriding any common properties\n try {\n const currentFeaturesBitMap = Number(process.env[AZURE_MONITOR_STATSBEAT_FEATURES]);\n if (!isNaN(currentFeaturesBitMap)) {\n // The AKS resource detector feature always reflects whether *this* process was able to\n // read the AKS cluster metadata, so it is never inherited from a seeded bit map.\n featureBitMap |= removeNumberFlag(\n currentFeaturesBitMap,\n StatsbeatFeature.AKS_RESOURCE_DETECTOR_POPULATION,\n );\n }\n process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({\n instrumentation: instrumentationBitMap,\n feature: featureBitMap,\n });\n } catch (error) {\n InternalLogger.getInstance().error(\"Failed call to JSON.stringify.\", error);\n }\n };\n}\n\n/**\n * Singleton Statsbeat instance.\n * @internal\n */\nexport function getInstance(): StatsbeatConfiguration {\n if (!instance) {\n instance = new StatsbeatConfiguration();\n }\n return instance;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserSdkLoaderHelper.d.ts","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoaderHelper.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,EAAE,OAAO;CACV;AAGD,eAAO,MAAM,mBAAmB,UAS/B,CAAC;AAGF,eAAO,MAAM,iBAAiB,QAAO,OAGpC,CAAC;AAEF,eAAO,MAAM,SAAS,gCAAuB,CAAC;AAC9C,eAAO,MAAM,WAAW,kCAAyB,CAAC;AAClD,eAAO,MAAM,YAAY,mCAA0B,CAAC;AACpD,eAAO,MAAM,YAAY,mCAA0B,CAAC;AAGpD,eAAO,MAAM,sBAAsB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAMnE,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAOlE,CAAC;AAGF,eAAO,MAAM,wBAAwB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAMrE,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAOpE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,GAAG,IAStE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IAShE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,gBAAgB,MAAM,KACrB,qBAAqB,GAAG,IAe1B,CAAC;AAIF,eAAO,MAAM,6BAA6B,GACxC,UAAU,IAAI,CAAC,cAAc,KAC5B,qBAAqB,EAAE,GAAG,IAW5B,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"browserSdkLoaderHelper.d.ts","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoaderHelper.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,EAAE,OAAO;CACV;AAGD,eAAO,MAAM,mBAAmB,UAS/B,CAAC;AAGF,eAAO,MAAM,iBAAiB,QAAO,OAGpC,CAAC;AAEF,eAAO,MAAM,SAAS,gCAAuB,CAAC;AAC9C,eAAO,MAAM,WAAW,kCAAyB,CAAC;AAClD,eAAO,MAAM,YAAY,mCAA0B,CAAC;AACpD,eAAO,MAAM,YAAY,mCAA0B,CAAC;AAGpD,eAAO,MAAM,sBAAsB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAMnE,CAAC;AAGF,eAAO,MAAM,qBAAqB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAOlE,CAAC;AAGF,eAAO,MAAM,wBAAwB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAMrE,CAAC;AAGF,eAAO,MAAM,uBAAuB,GAAI,YAAY,GAAG,KAAG,QAAQ,GAAG,IAOpE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,GAAG,IAStE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IAShE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,gBAAgB,MAAM,KACrB,qBAAqB,GAAG,IAe1B,CAAC;AAIF,eAAO,MAAM,6BAA6B,GACxC,UAAU,IAAI,CAAC,cAAc,KAC5B,qBAAqB,EAAE,GAAG,IAW5B,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,MAAM,GAAG,IAMX,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,UAAU,IAAI,CAAC,cAAc,KAAG,OAWvE,CAAC"}
|
|
@@ -117,10 +117,9 @@ export const getContentEncodingFromHeaders = (response) => {
|
|
|
117
117
|
export const insertBrowserSdkLoaderByIndex = (index, html, snippet) => {
|
|
118
118
|
if (index < 0)
|
|
119
119
|
return null;
|
|
120
|
-
let newHtml = null;
|
|
121
120
|
const subStart = html.substring(0, index);
|
|
122
121
|
const subEnd = html.substring(index);
|
|
123
|
-
newHtml = subStart + '<script type="text/javascript">' + snippet + "</script>" + subEnd;
|
|
122
|
+
const newHtml = subStart + '<script type="text/javascript">' + snippet + "</script>" + subEnd;
|
|
124
123
|
return newHtml;
|
|
125
124
|
};
|
|
126
125
|
export const isContentTypeHeaderHtml = (response) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserSdkLoaderHelper.js","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoaderHelper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browserSdkLoaderHelper.js","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoaderHelper.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport * as zlib from \"zlib\";\nimport { promisify } from \"node:util\";\nimport type http from \"node:http\";\n\n// currently support the following encoding types\nexport enum contentEncodingMethod {\n GZIP = \"gzip\",\n DEFLATE = \"deflate\",\n BR = \"br\",\n}\n\n// current supported encoding types\nexport const bufferEncodingTypes = [\n \"utf8\",\n \"utf16le\",\n \"latin1\",\n \"base64\",\n \"hex\",\n \"ascii\",\n \"binary\",\n \"ucs2\",\n];\n\n// for node version under 10, Brotli compression is not supported.\nexport const isBrotliSupported = (): boolean => {\n const majVer = process.versions.node.split(\".\")[0];\n return parseInt(majVer) >= 10;\n};\n\nexport const gzipAsync = promisify(zlib.gzip);\nexport const gunzipAsync = promisify(zlib.gunzip);\nexport const deflateAsync = promisify(zlib.deflate);\nexport const inflateAsync = promisify(zlib.inflate);\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const getBrotliCompressAsync = (zlibObject: any): Function | null => {\n const isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliCompress === \"function\") {\n return promisify(zlibObject.brotliCompress);\n }\n return null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const getBrotliCompressSync = (zlibObject: any): Function | null => {\n const isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliCompressSync === \"function\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return zlibObject.brotliCompressSync;\n }\n return null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const getBrotliDecompressAsync = (zlibObject: any): Function | null => {\n const isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliDecompress === \"function\") {\n return promisify(zlibObject.brotliDecompress);\n }\n return null;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const getBrotliDecompressSync = (zlibObject: any): Function | null => {\n const isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliDecompressSync === \"function\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return zlibObject.brotliDecompressSync;\n }\n return null;\n};\n\nexport const isBufferType = (buffer: Buffer, type?: string): boolean | null => {\n const encodingType = type ? type : \"utf8\";\n let result = false;\n if (Buffer.isEncoding(encodingType)) {\n const newBuffer = Buffer.from(buffer.toString(encodingType), encodingType);\n result = newBuffer.toJSON().data.toString() === buffer.toJSON().data.toString();\n }\n\n return result;\n};\n\nexport const findBufferEncodingType = (buffer: Buffer): string | null => {\n let bufferType = null;\n for (const type of bufferEncodingTypes) {\n if (Buffer.isEncoding(type) && isBufferType(buffer, type)) {\n bufferType = type;\n break;\n }\n }\n return bufferType;\n};\n\nexport const isSupportedContentEncoding = (\n encodingMethod: string,\n): contentEncodingMethod | null => {\n let encodingType = null;\n switch (encodingMethod) {\n case \"gzip\":\n encodingType = contentEncodingMethod.GZIP;\n break;\n case \"br\":\n encodingType = contentEncodingMethod.BR;\n break;\n case \"deflate\":\n encodingType = contentEncodingMethod.DEFLATE;\n break;\n default:\n }\n return encodingType;\n};\n\n// mutiple content-encoding is not supported\n// for mutiple content-encoding, this method will return any empty array\nexport const getContentEncodingFromHeaders = (\n response: http.ServerResponse,\n): contentEncodingMethod[] | null => {\n const headers: contentEncodingMethod[] = [];\n const contentEncodingHeaders = response.getHeader(\"Content-Encoding\");\n if (!contentEncodingHeaders) return null;\n if (typeof contentEncodingHeaders === \"string\") {\n const supportedContentEncoding = isSupportedContentEncoding(contentEncodingHeaders);\n if (supportedContentEncoding) {\n headers.push(supportedContentEncoding);\n }\n }\n return headers;\n};\n\nexport const insertBrowserSdkLoaderByIndex = (\n index: number,\n html: string,\n snippet: string,\n): string | null => {\n if (index < 0) return null;\n const subStart = html.substring(0, index);\n const subEnd = html.substring(index);\n const newHtml = subStart + '<script type=\"text/javascript\">' + snippet + \"</script>\" + subEnd;\n return newHtml;\n};\n\nexport const isContentTypeHeaderHtml = (response: http.ServerResponse): boolean => {\n let isHtml = false;\n const contentType = response.getHeader(\"Content-Type\");\n if (contentType) {\n if (typeof contentType === \"string\") {\n isHtml = contentType.indexOf(\"html\") >= 0;\n } else {\n isHtml = contentType.toString().indexOf(\"html\") >= 0;\n }\n }\n return isHtml;\n};\n"]}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
2
|
-
import type { AzureMonitorOpenTelemetryOptions, InstrumentationOptions, BrowserSdkLoaderOptions } from "./types.js";
|
|
3
|
-
export type { AzureMonitorOpenTelemetryOptions, InstrumentationOptions, BrowserSdkLoaderOptions };
|
|
2
|
+
import type { AzureMonitorOpenTelemetryOptions, InstrumentationOptions, ConsoleInstrumentationOptions, BrowserSdkLoaderOptions } from "./types.js";
|
|
3
|
+
export type { AzureMonitorOpenTelemetryOptions, InstrumentationOptions, ConsoleInstrumentationOptions, BrowserSdkLoaderOptions, };
|
|
4
4
|
/**
|
|
5
5
|
* Initialize Azure Monitor Distro
|
|
6
6
|
* @param options - Azure Monitor OpenTelemetry Options
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAMlD,OAAO,KAAK,EAGV,gCAAgC,EAChC,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAiBpB,YAAY,EACV,gCAAgC,EAChC,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,GACxB,CAAC;AA4BF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gCAAgC,GAAG,IAAI,CAsGhF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMpD;AAED;;;GAGG;AAEH,wBAAgB,eAAe,IAAI,OAAO,GAAG,SAAS,CAErD"}
|
package/dist/esm/index.js
CHANGED
|
@@ -14,17 +14,14 @@ import { getInstance } from "./utils/statsbeat.js";
|
|
|
14
14
|
import { patchOpenTelemetryInstrumentationEnable } from "./utils/opentelemetryInstrumentationPatcher.js";
|
|
15
15
|
import { ensureAzureSdkTracingBridge } from "./utils/azureSdkTracingBridge.js";
|
|
16
16
|
import { isFunctionApp, parseResourceDetectorsFromEnvVar } from "./utils/common.js";
|
|
17
|
+
import { isLogCollectionDisabled } from "./utils/logUtils.js";
|
|
17
18
|
import { Logger } from "./shared/logging/index.js";
|
|
18
19
|
import { AZURE_MONITOR_AUTO_ATTACH } from "./types.js";
|
|
19
|
-
import { SEMRESATTRS_K8S_CLUSTER_NAME } from "@opentelemetry/semantic-conventions";
|
|
20
|
-
/**
|
|
21
|
-
* Semantic attribute for cloud resource ID, defined by \@opentelemetry/resource-detector-azure
|
|
22
|
-
* @internal
|
|
23
|
-
*/
|
|
24
|
-
const CLOUD_RESOURCE_ID_ATTRIBUTE = "cloud.resource_id";
|
|
25
20
|
process.env["AZURE_MONITOR_DISTRO_VERSION"] = AZURE_MONITOR_OPENTELEMETRY_VERSION;
|
|
26
21
|
let sdk;
|
|
27
22
|
let browserSdkLoader;
|
|
23
|
+
// Track the global console patch because NodeSDK does not disable instrumentations.
|
|
24
|
+
let consoleInstrumentation;
|
|
28
25
|
/**
|
|
29
26
|
* Check if auto-attach (autoinstrumentation) is enabled and warn about double instrumentation.
|
|
30
27
|
*/
|
|
@@ -49,6 +46,8 @@ function sendAttachWarning() {
|
|
|
49
46
|
export function useAzureMonitor(options) {
|
|
50
47
|
const config = new InternalConfig(options);
|
|
51
48
|
patchOpenTelemetryInstrumentationEnable();
|
|
49
|
+
// Omit disabled log instrumentations from Statsbeat.
|
|
50
|
+
const logInstrumentationsEnabled = !isLogCollectionDisabled();
|
|
52
51
|
const statsbeatInstrumentations = {
|
|
53
52
|
// Instrumentations
|
|
54
53
|
azureSdk: config.instrumentationOptions?.azureSdk?.enabled,
|
|
@@ -56,21 +55,19 @@ export function useAzureMonitor(options) {
|
|
|
56
55
|
mySql: config.instrumentationOptions?.mySql?.enabled,
|
|
57
56
|
postgreSql: config.instrumentationOptions?.postgreSql?.enabled,
|
|
58
57
|
redis: config.instrumentationOptions?.redis?.enabled,
|
|
59
|
-
bunyan: config.instrumentationOptions?.bunyan?.enabled,
|
|
60
|
-
winston: config.instrumentationOptions?.winston?.enabled,
|
|
58
|
+
bunyan: logInstrumentationsEnabled && config.instrumentationOptions?.bunyan?.enabled,
|
|
59
|
+
winston: logInstrumentationsEnabled && config.instrumentationOptions?.winston?.enabled,
|
|
60
|
+
console: logInstrumentationsEnabled && config.instrumentationOptions?.console?.enabled,
|
|
61
61
|
};
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
const resourceAttributes = config.resource.attributes;
|
|
66
|
-
const aksResourceDetected = SEMRESATTRS_K8S_CLUSTER_NAME in resourceAttributes ||
|
|
67
|
-
CLOUD_RESOURCE_ID_ATTRIBUTE in resourceAttributes;
|
|
62
|
+
// Only report this feature when the AKS resource detector itself was able to populate the AKS
|
|
63
|
+
// cluster attributes, which requires the customer to have configured access to the
|
|
64
|
+
// aks-cluster-metadata ConfigMap (RBAC + env var or mounted file).
|
|
68
65
|
const statsbeatFeatures = {
|
|
69
66
|
browserSdkLoader: config.browserSdkLoaderOptions.enabled,
|
|
70
67
|
aadHandling: !!config.azureMonitorExporterOptions?.credential,
|
|
71
68
|
diskRetry: !config.azureMonitorExporterOptions?.disableOfflineStorage,
|
|
72
69
|
customerSdkStats: process.env[APPLICATIONINSIGHTS_SDKSTATS_DISABLED]?.toLowerCase() === "true",
|
|
73
|
-
aksResourceDetectorPopulation:
|
|
70
|
+
aksResourceDetectorPopulation: config.aksResourceDetectorPopulated,
|
|
74
71
|
};
|
|
75
72
|
getInstance().setStatsbeatFeatures(statsbeatInstrumentations, statsbeatFeatures);
|
|
76
73
|
if (config.browserSdkLoaderOptions.enabled) {
|
|
@@ -80,6 +77,9 @@ export function useAzureMonitor(options) {
|
|
|
80
77
|
metrics.disable();
|
|
81
78
|
trace.disable();
|
|
82
79
|
logs.disable();
|
|
80
|
+
// Restore any console patch from the previous initialization.
|
|
81
|
+
consoleInstrumentation?.disable();
|
|
82
|
+
consoleInstrumentation = undefined;
|
|
83
83
|
// Clear the entire OpenTelemetry API global state to avoid version conflicts.
|
|
84
84
|
// The disable() calls above remove individual providers but leave the `version` field
|
|
85
85
|
// on the global object intact. If a different version of @opentelemetry/api was loaded
|
|
@@ -96,6 +96,7 @@ export function useAzureMonitor(options) {
|
|
|
96
96
|
const instrumentations = traceHandler
|
|
97
97
|
.getInstrumentations()
|
|
98
98
|
.concat(logHandler.getInstrumentations());
|
|
99
|
+
consoleInstrumentation = logHandler.getConsoleInstrumentation();
|
|
99
100
|
const resourceDetectorsList = parseResourceDetectorsFromEnvVar();
|
|
100
101
|
// Add extra SpanProcessors, and logRecordProcessors from user configuration
|
|
101
102
|
const spanProcessors = options?.spanProcessors || [];
|
|
@@ -141,6 +142,9 @@ export function useAzureMonitor(options) {
|
|
|
141
142
|
*/
|
|
142
143
|
export function shutdownAzureMonitor() {
|
|
143
144
|
browserSdkLoader?.dispose();
|
|
145
|
+
// NodeSDK.shutdown() does not restore the global console.
|
|
146
|
+
consoleInstrumentation?.disable();
|
|
147
|
+
consoleInstrumentation = undefined;
|
|
144
148
|
return sdk?.shutdown();
|
|
145
149
|
}
|
|
146
150
|
/**
|