UNPKG

@azure/monitor-opentelemetry

Version:
143 lines 5.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getResourceProvider = exports.isAks = exports.isFunctionApp = exports.isAppService = exports.getOsPrefix = exports.isDarwin = exports.isLinux = exports.isWindows = void 0; exports.ignoreOutgoingRequestHook = ignoreOutgoingRequestHook; exports.msToTimeSpan = msToTimeSpan; exports.parseResourceDetectorsFromEnvVar = parseResourceDetectorsFromEnvVar; const resources_1 = require("@opentelemetry/resources"); const api_1 = require("@opentelemetry/api"); function ignoreOutgoingRequestHook(request) { if (request && request.headers) { if ((request.headers["User-Agent"] && request.headers["User-Agent"] .toString() .indexOf("azsdk-js-monitor-opentelemetry-exporter") > -1) || (request.headers["user-agent"] && request.headers["user-agent"] .toString() .indexOf("azsdk-js-monitor-opentelemetry-exporter") > -1)) { return true; } } return false; } const isWindows = () => { return process.platform === "win32"; }; exports.isWindows = isWindows; const isLinux = () => { return process.platform === "linux"; }; exports.isLinux = isLinux; const isDarwin = () => { return process.platform === "darwin"; }; exports.isDarwin = isDarwin; /** * Get prefix for OS * Windows system: "w" * Linux system: "l" * non-Windows and non-Linux system: "u" (unknown) */ const getOsPrefix = () => { return (0, exports.isWindows)() ? "w" : (0, exports.isLinux)() ? "l" : "u"; }; exports.getOsPrefix = getOsPrefix; /** * Get prefix resource provider, vm will considered as "unknown RP" * Web App: "a" * Function App: "f" * non-Web and non-Function APP: "u" (unknown) */ const isAppService = () => { return process.env.WEBSITE_SITE_NAME && !process.env.FUNCTIONS_WORKER_RUNTIME ? true : false; }; exports.isAppService = isAppService; const isFunctionApp = () => { return process.env.FUNCTIONS_WORKER_RUNTIME ? true : false; }; exports.isFunctionApp = isFunctionApp; const isAks = () => { return process.env.AKS_ARM_NAMESPACE_ID || process.env.KUBERNETES_SERVICE_HOST ? true : false; }; exports.isAks = isAks; /** * Get prefix resource provider, vm will considered as "unknown RP" * Web App: "a" * Function App: "f" * AKS: "k" * non-Web and non-Function APP: "u" (unknown) */ const getResourceProvider = () => { if ((0, exports.isAppService)()) { return "a"; } if ((0, exports.isFunctionApp)()) { return "f"; } if ((0, exports.isAks)()) { return "k"; } return "u"; }; exports.getResourceProvider = getResourceProvider; /** * Convert milliseconds to Breeze expected time. * @internal */ function msToTimeSpan(ms) { let totalms = ms; if (Number.isNaN(totalms) || totalms < 0 || !Number.isFinite(ms)) { totalms = 0; } let sec = ((totalms / 1000) % 60).toFixed(7).replace(/0{0,4}$/, ""); let min = `${Math.floor(totalms / (1000 * 60)) % 60}`; let hour = `${Math.floor(totalms / (1000 * 60 * 60)) % 24}`; const days = Math.floor(totalms / (1000 * 60 * 60 * 24)); sec = sec.indexOf(".") < 2 ? `0${sec}` : sec; min = min.length < 2 ? `0${min}` : min; hour = hour.length < 2 ? `0${hour}` : hour; const daysText = days > 0 ? `${days}.` : ""; return `${daysText + hour}:${min}:${sec}`; } // This function is a slight modification of an upstream otel util function - // mainly for prioritizing the resource detectors customer may specify over // env var & not enabling process detector by default. function parseResourceDetectorsFromEnvVar() { var _a, _b; const resourceDetectors = new Map([ ["env", resources_1.envDetectorSync], ["host", resources_1.hostDetectorSync], ["os", resources_1.osDetectorSync], ["process", resources_1.processDetectorSync], ["serviceinstance", resources_1.serviceInstanceIdDetectorSync], ]); if (process.env.OTEL_NODE_RESOURCE_DETECTORS != null) { const resourceDetectorsFromEnv = (_b = (_a = process.env.OTEL_NODE_RESOURCE_DETECTORS) === null || _a === void 0 ? void 0 : _a.split(",")) !== null && _b !== void 0 ? _b : [ "env", "host", "os", ]; if (resourceDetectorsFromEnv.includes("all")) { return [...resourceDetectors.values()]; } if (resourceDetectorsFromEnv.includes("none")) { return []; } return resourceDetectorsFromEnv.flatMap((detector) => { const resourceDetector = resourceDetectors.get(detector); if (!resourceDetector) { api_1.diag.error(`Invalid resource detector "${detector}" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`); return []; } return [resourceDetector]; }); } else { // leaving out the process detector as that can add many resource attributes // with large values. Also not enabling service instance attributes by default // as this is still experimental. return [resources_1.envDetectorSync, resources_1.hostDetectorSync, resources_1.osDetectorSync]; } } //# sourceMappingURL=common.js.map