@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAgCjE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAiB/E;AAED,eAAO,MAAM,SAAS,QAAO,OAE5B,CAAC;AAEF,eAAO,MAAM,OAAO,QAAO,OAE1B,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,OAE3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAE9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,QAAO,OAE/B,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO,OAEhC,CAAC;AAEF,eAAO,MAAM,KAAK,QAAO,OAExB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,GAAE,UAAe,GAAG,OAAO,CASnF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,QAAO,MAWtC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAiB/C;AAKD,wBAAgB,gCAAgC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CA4C1E"}
|
package/dist/esm/utils/common.js
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
import { envDetector, hostDetector, osDetector, processDetector, serviceInstanceIdDetector, } from "@opentelemetry/resources";
|
|
2
2
|
import { diag } from "@opentelemetry/api";
|
|
3
3
|
import { azureAksDetector, azureAppServiceDetector, azureFunctionsDetector, azureVmDetector, } from "@opentelemetry/resource-detector-azure";
|
|
4
|
+
/**
|
|
5
|
+
* Resource attribute holding the ARM resource ID of the AKS cluster, populated by the AKS
|
|
6
|
+
* resource detector. Declared locally because it is an unstable semantic convention that the
|
|
7
|
+
* detector package does not export.
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
const CLOUD_RESOURCE_ID_ATTRIBUTE = "cloud.resource_id";
|
|
11
|
+
/**
|
|
12
|
+
* Matches the full ARM resource ID of an AKS managed cluster, for example
|
|
13
|
+
* `/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.ContainerService/managedClusters/{name}`.
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
const AKS_MANAGED_CLUSTER_RESOURCE_ID_REGEX = /^\/subscriptions\/[^/\s]+\/resourceGroups\/[^/\s]+\/providers\/Microsoft\.ContainerService\/managedClusters\/[^/\s]+\/?$/i;
|
|
17
|
+
/**
|
|
18
|
+
* Tests a flag without 32-bit coercion.
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export function hasNumberFlag(mask, flag) {
|
|
22
|
+
return flag > 0 && Math.floor(mask / flag) % 2 === 1;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sets a flag without 32-bit coercion.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export function addNumberFlag(mask, flag) {
|
|
29
|
+
return flag > 0 && !hasNumberFlag(mask, flag) ? mask + flag : mask;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Clears a flag without 32-bit coercion.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export function removeNumberFlag(mask, flag) {
|
|
36
|
+
return hasNumberFlag(mask, flag) ? mask - flag : mask;
|
|
37
|
+
}
|
|
4
38
|
export function ignoreOutgoingRequestHook(request) {
|
|
5
39
|
if (request && request.headers && !Array.isArray(request.headers)) {
|
|
6
40
|
const outgoingHeaders = request.headers;
|
|
@@ -50,6 +84,31 @@ export const isFunctionApp = () => {
|
|
|
50
84
|
export const isAks = () => {
|
|
51
85
|
return process.env.AKS_ARM_NAMESPACE_ID || process.env.KUBERNETES_SERVICE_HOST ? true : false;
|
|
52
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* Determines whether the AKS resource detector was actually able to populate the AKS cluster
|
|
89
|
+
* attributes, based on the attributes that detector - and only that detector - produced.
|
|
90
|
+
*
|
|
91
|
+
* This is only the case when the customer is running in AKS *and* has correctly wired up access
|
|
92
|
+
* to the `aks-cluster-metadata` ConfigMap in the `kube-public` namespace (RBAC role and role
|
|
93
|
+
* binding, surfaced either through the `CLUSTER_RESOURCE_ID` environment variable or through the
|
|
94
|
+
* mounted ConfigMap file).
|
|
95
|
+
*
|
|
96
|
+
* The merged resource is deliberately not inspected, because `k8s.cluster.name` and
|
|
97
|
+
* `cloud.resource_id` can also be contributed by other sources - the App Service, Functions and
|
|
98
|
+
* VM detectors all set `cloud.resource_id`, and both attributes can be supplied by the customer
|
|
99
|
+
* through `OTEL_RESOURCE_ATTRIBUTES` or a custom resource - none of which indicate that the AKS
|
|
100
|
+
* resource detector is working. The cluster resource ID is additionally validated to be a full
|
|
101
|
+
* AKS managed cluster ARM ID, since the detector does not validate the value it reads.
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
export function isAksResourceDetectorPopulated(attributes = {}) {
|
|
105
|
+
if (!isAks()) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
const clusterResourceId = attributes[CLOUD_RESOURCE_ID_ATTRIBUTE];
|
|
109
|
+
return (typeof clusterResourceId === "string" &&
|
|
110
|
+
AKS_MANAGED_CLUSTER_RESOURCE_ID_REGEX.test(clusterResourceId.trim()));
|
|
111
|
+
}
|
|
53
112
|
/**
|
|
54
113
|
* Get prefix resource provider, vm will considered as "unknown RP"
|
|
55
114
|
* 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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { SeverityNumber } from "@opentelemetry/api-logs";
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether the instrumentation logging level disables collection.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export function isLogCollectionDisabled() {
|
|
9
|
+
return process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL === "NONE";
|
|
10
|
+
}
|
|
4
11
|
/**
|
|
5
12
|
* Convert log level to severity number.
|
|
6
13
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logUtils.js","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,IAAI,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;YAC5C,MAAM;QACR,KAAK,OAAO;YACV,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,OAAO;YACV,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC;YACrC,MAAM;QACR,KAAK,SAAS;YACZ,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,cAAc,GAAG,cAAc,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 * 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
|
+
{"version":3,"file":"logUtils.js","sourceRoot":"","sources":["../../../src/utils/logUtils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,iDAAiD,KAAK,MAAM,CAAC;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,IAAI,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;IAChD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;YAC5C,MAAM;QACR,KAAK,OAAO;YACV,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,OAAO;YACV,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC;YACrC,MAAM;QACR,KAAK,SAAS;YACZ,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;YACtC,MAAM;QACR,KAAK,MAAM;YACT,cAAc,GAAG,cAAc,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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
import { AZURE_MONITOR_STATSBEAT_FEATURES, StatsbeatInstrumentationMap } from "../types.js";
|
|
4
4
|
import { Logger } from "../shared/logging/index.js";
|
|
5
|
+
import { addNumberFlag } from "./common.js";
|
|
5
6
|
/**
|
|
6
7
|
* Patch OpenTelemetry Instrumentation enablement to update the statsbeat environment variable with the enabled instrumentations
|
|
7
8
|
* @internal
|
|
@@ -19,9 +20,9 @@ export function patchOpenTelemetryInstrumentationEnable() {
|
|
|
19
20
|
const statsbeatOptions = JSON.parse(process.env[AZURE_MONITOR_STATSBEAT_FEATURES] || emptyStatsbeatConfig);
|
|
20
21
|
let updatedStatsbeat = {};
|
|
21
22
|
for (let i = 0; i < instrumentations.length; i++) {
|
|
23
|
+
statsbeatOptions.instrumentation = addNumberFlag(statsbeatOptions.instrumentation, StatsbeatInstrumentationMap.get(instrumentations[i].instrumentationName) || 0);
|
|
22
24
|
updatedStatsbeat = {
|
|
23
|
-
instrumentation:
|
|
24
|
-
StatsbeatInstrumentationMap.get(instrumentations[i].instrumentationName) || 0),
|
|
25
|
+
instrumentation: statsbeatOptions.instrumentation,
|
|
25
26
|
feature: statsbeatOptions.feature,
|
|
26
27
|
};
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opentelemetryInstrumentationPatcher.js","sourceRoot":"","sources":["../../../src/utils/opentelemetryInstrumentationPatcher.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"opentelemetryInstrumentationPatcher.js","sourceRoot":"","sources":["../../../src/utils/opentelemetryInstrumentationPatcher.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,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,gCAAgC,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,aAAa,CAC9C,gBAAgB,CAAC,eAAe,EAChC,2BAA2B,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,gCAAgC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
|
-
import { AZURE_MONITOR_STATSBEAT_FEATURES, StatsbeatFeature, StatsbeatFeaturesMap, StatsbeatInstrumentation, } from "../types.js";
|
|
3
|
+
import { AZURE_MONITOR_STATSBEAT_FEATURES, StatsbeatFeature, StatsbeatFeaturesMap, StatsbeatInstrumentation, StatsbeatInstrumentationsMap, } from "../types.js";
|
|
4
4
|
import { Logger as InternalLogger } from "../shared/logging/index.js";
|
|
5
|
+
import { addNumberFlag, hasNumberFlag, removeNumberFlag } from "./common.js";
|
|
5
6
|
let instance;
|
|
6
7
|
class StatsbeatConfiguration {
|
|
7
8
|
// Initial Statsbeat options
|
|
@@ -34,45 +35,49 @@ class StatsbeatConfiguration {
|
|
|
34
35
|
};
|
|
35
36
|
this.currentStatsbeatFeatures = { ...this.currentStatsbeatFeatures, ...statsbeatFeatures };
|
|
36
37
|
// Set the statsbeat options for community instrumentations based on the environment variable
|
|
38
|
+
const envInstrumentation = statsbeatEnv.instrumentation;
|
|
37
39
|
statsbeatInstrumentations = {
|
|
38
40
|
...this.currentStatsbeatInstrumentations,
|
|
39
|
-
amqplib:
|
|
40
|
-
cucumber:
|
|
41
|
-
dataloader:
|
|
42
|
-
fs:
|
|
43
|
-
lruMemoizer:
|
|
44
|
-
mongoose:
|
|
45
|
-
runtimeNode:
|
|
46
|
-
socketIo:
|
|
47
|
-
tedious:
|
|
48
|
-
undici:
|
|
49
|
-
cassandra:
|
|
50
|
-
connect:
|
|
51
|
-
dns:
|
|
52
|
-
express:
|
|
53
|
-
fastify:
|
|
54
|
-
genericPool:
|
|
55
|
-
graphql:
|
|
56
|
-
hapi:
|
|
57
|
-
ioredis:
|
|
58
|
-
knex:
|
|
59
|
-
koa:
|
|
60
|
-
memcached:
|
|
61
|
-
mysql2:
|
|
62
|
-
nestjsCore:
|
|
63
|
-
net:
|
|
64
|
-
pino:
|
|
65
|
-
restify:
|
|
66
|
-
router:
|
|
41
|
+
amqplib: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.AMQPLIB),
|
|
42
|
+
cucumber: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CUCUMBER),
|
|
43
|
+
dataloader: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DATALOADER),
|
|
44
|
+
fs: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FS),
|
|
45
|
+
lruMemoizer: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.LRU_MEMOIZER),
|
|
46
|
+
mongoose: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MONGOOSE),
|
|
47
|
+
runtimeNode: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RUNTIME_NODE),
|
|
48
|
+
socketIo: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.SOCKET_IO),
|
|
49
|
+
tedious: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.TEDIOUS),
|
|
50
|
+
undici: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.UNDICI),
|
|
51
|
+
cassandra: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CASSANDRA),
|
|
52
|
+
connect: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.CONNECT),
|
|
53
|
+
dns: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.DNS),
|
|
54
|
+
express: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.EXPRESS),
|
|
55
|
+
fastify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.FASTIFY),
|
|
56
|
+
genericPool: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GENERIC_POOL),
|
|
57
|
+
graphql: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.GRAPHQL),
|
|
58
|
+
hapi: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.HAPI),
|
|
59
|
+
ioredis: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.IOREDIS),
|
|
60
|
+
knex: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KNEX),
|
|
61
|
+
koa: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.KOA),
|
|
62
|
+
memcached: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MEMCACHED),
|
|
63
|
+
mysql2: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.MYSQL2),
|
|
64
|
+
nestjsCore: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NESTJS_CORE),
|
|
65
|
+
net: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.NET),
|
|
66
|
+
pino: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.PINO),
|
|
67
|
+
restify: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.RESTIFY),
|
|
68
|
+
router: hasNumberFlag(envInstrumentation, StatsbeatInstrumentation.ROUTER),
|
|
67
69
|
};
|
|
68
70
|
let instrumentationBitMap = StatsbeatInstrumentation.NONE;
|
|
69
71
|
const instrumentationArray = Object.entries(statsbeatInstrumentations).map((entry) => {
|
|
70
72
|
return { option: entry[0], value: entry[1] };
|
|
71
73
|
});
|
|
72
|
-
// Map
|
|
74
|
+
// Map enabled option names to their assigned bits.
|
|
73
75
|
for (let i = 0; i < instrumentationArray.length; i++) {
|
|
74
76
|
if (instrumentationArray[i].value) {
|
|
75
|
-
|
|
77
|
+
const instrumentationBit = StatsbeatInstrumentationsMap.get(instrumentationArray[i].option);
|
|
78
|
+
if (instrumentationBit !== undefined) {
|
|
79
|
+
instrumentationBitMap = addNumberFlag(instrumentationBitMap, instrumentationBit);
|
|
80
|
+
}
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
83
|
// Create feature bit map
|
|
@@ -99,7 +104,9 @@ class StatsbeatConfiguration {
|
|
|
99
104
|
try {
|
|
100
105
|
const currentFeaturesBitMap = Number(process.env[AZURE_MONITOR_STATSBEAT_FEATURES]);
|
|
101
106
|
if (!isNaN(currentFeaturesBitMap)) {
|
|
102
|
-
|
|
107
|
+
// The AKS resource detector feature always reflects whether *this* process was able to
|
|
108
|
+
// read the AKS cluster metadata, so it is never inherited from a seeded bit map.
|
|
109
|
+
featureBitMap |= removeNumberFlag(currentFeaturesBitMap, StatsbeatFeature.AKS_RESOURCE_DETECTOR_POPULATION);
|
|
103
110
|
}
|
|
104
111
|
process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({
|
|
105
112
|
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"]}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@azure/monitor-opentelemetry",
|
|
3
3
|
"author": "Microsoft Corporation",
|
|
4
4
|
"sdk-type": "client",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.20.0",
|
|
6
6
|
"description": "Azure Monitor OpenTelemetry (Node.js)",
|
|
7
7
|
"main": "./dist/commonjs/index.js",
|
|
8
8
|
"module": "./dist/esm/index.js",
|
|
@@ -44,53 +44,55 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
+
"@azure-tools/test-utils-vitest": "^2.0.1",
|
|
48
|
+
"@azure/dev-tool": "^1.0.0",
|
|
49
|
+
"@azure/eslint-plugin-azure-sdk": "^3.0.0",
|
|
47
50
|
"@azure/functions": "^4.9.0",
|
|
48
51
|
"@azure/functions-old": "npm:@azure/functions@3.5.1",
|
|
49
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.
|
|
50
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
52
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.221.0",
|
|
53
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.221.0",
|
|
51
54
|
"@types/node": "^22.0.0",
|
|
52
55
|
"@vitest/browser-playwright": "^4.1.2",
|
|
53
56
|
"@vitest/coverage-istanbul": "^4.1.2",
|
|
54
57
|
"cross-env": "^10.1.0",
|
|
55
58
|
"dotenv": "^16.6.1",
|
|
56
|
-
"eslint": "^
|
|
59
|
+
"eslint": "^10.8.0",
|
|
57
60
|
"prettier": "^3.9.1",
|
|
58
61
|
"rimraf": "^6.1.0",
|
|
59
62
|
"typescript": "~6.0.2",
|
|
60
|
-
"vitest": "^4.1.2"
|
|
61
|
-
"@azure-tools/test-utils-vitest": "^2.0.1",
|
|
62
|
-
"@azure/dev-tool": "^1.0.0",
|
|
63
|
-
"@azure/eslint-plugin-azure-sdk": "^3.0.0"
|
|
63
|
+
"vitest": "^4.1.2"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@azure-rest/core-client": "^2.5.2",
|
|
67
67
|
"@azure/core-auth": "^1.10.1",
|
|
68
68
|
"@azure/core-rest-pipeline": "^1.22.2",
|
|
69
69
|
"@azure/core-tracing": "^1.2.0",
|
|
70
|
+
"@azure/identity": "^4.13.1",
|
|
70
71
|
"@azure/logger": "^1.3.0",
|
|
71
|
-
"@azure/monitor-opentelemetry-exporter": "1.0.0-beta.
|
|
72
|
+
"@azure/monitor-opentelemetry-exporter": "1.0.0-beta.45",
|
|
72
73
|
"@azure/opentelemetry-instrumentation-azure-sdk": "^1.1.0-beta.1",
|
|
73
74
|
"@microsoft/applicationinsights-web-snippet": "^1.2.3",
|
|
74
|
-
"@opentelemetry/api": "^1.9.
|
|
75
|
-
"@opentelemetry/api-logs": "^0.
|
|
76
|
-
"@opentelemetry/core": "^2.
|
|
77
|
-
"@opentelemetry/instrumentation": "^0.
|
|
78
|
-
"@opentelemetry/instrumentation-bunyan": "^0.
|
|
79
|
-
"@opentelemetry/instrumentation-
|
|
80
|
-
"@opentelemetry/instrumentation-
|
|
81
|
-
"@opentelemetry/instrumentation-
|
|
82
|
-
"@opentelemetry/instrumentation-
|
|
83
|
-
"@opentelemetry/instrumentation-
|
|
84
|
-
"@opentelemetry/instrumentation-
|
|
85
|
-
"@opentelemetry/
|
|
86
|
-
"@opentelemetry/
|
|
87
|
-
"@opentelemetry/
|
|
88
|
-
"@opentelemetry/sdk-
|
|
89
|
-
"@opentelemetry/sdk-
|
|
90
|
-
"@opentelemetry/sdk-
|
|
91
|
-
"@opentelemetry/sdk-trace-
|
|
92
|
-
"@opentelemetry/
|
|
93
|
-
"@opentelemetry/
|
|
75
|
+
"@opentelemetry/api": "^1.9.1",
|
|
76
|
+
"@opentelemetry/api-logs": "^0.221.0",
|
|
77
|
+
"@opentelemetry/core": "^2.10.0",
|
|
78
|
+
"@opentelemetry/instrumentation": "^0.221.0",
|
|
79
|
+
"@opentelemetry/instrumentation-bunyan": "^0.66.0",
|
|
80
|
+
"@opentelemetry/instrumentation-console": "^0.3.0",
|
|
81
|
+
"@opentelemetry/instrumentation-http": "^0.221.0",
|
|
82
|
+
"@opentelemetry/instrumentation-mongodb": "^0.74.0",
|
|
83
|
+
"@opentelemetry/instrumentation-mysql": "^0.67.0",
|
|
84
|
+
"@opentelemetry/instrumentation-pg": "^0.73.0",
|
|
85
|
+
"@opentelemetry/instrumentation-redis": "^0.69.0",
|
|
86
|
+
"@opentelemetry/instrumentation-winston": "^0.65.0",
|
|
87
|
+
"@opentelemetry/resource-detector-azure": "^0.29.0",
|
|
88
|
+
"@opentelemetry/resources": "^2.10.0",
|
|
89
|
+
"@opentelemetry/sdk-logs": "^0.221.0",
|
|
90
|
+
"@opentelemetry/sdk-metrics": "^2.10.0",
|
|
91
|
+
"@opentelemetry/sdk-node": "^0.221.0",
|
|
92
|
+
"@opentelemetry/sdk-trace-base": "^2.10.0",
|
|
93
|
+
"@opentelemetry/sdk-trace-node": "^2.10.0",
|
|
94
|
+
"@opentelemetry/semantic-conventions": "^1.43.0",
|
|
95
|
+
"@opentelemetry/winston-transport": "^0.31.0",
|
|
94
96
|
"tslib": "^2.8.1"
|
|
95
97
|
},
|
|
96
98
|
"sideEffects": false,
|