@azure/monitor-opentelemetry 1.2.0 → 1.2.1-alpha.20240130.1
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/dist-esm/src/browserSdkLoader/browserSdkLoader.js.map +1 -1
- package/dist-esm/src/browserSdkLoader/browserSdkLoaderHelper.js.map +1 -1
- package/dist-esm/src/generated/quickpulseClient.js.map +1 -1
- package/dist-esm/src/index.js.map +1 -1
- package/dist-esm/src/logs/handler.js.map +1 -1
- package/dist-esm/src/metrics/handler.js.map +1 -1
- package/dist-esm/src/metrics/quickpulse/export/exporter.js.map +1 -1
- package/dist-esm/src/metrics/quickpulse/export/sender.js.map +1 -1
- package/dist-esm/src/metrics/quickpulse/liveMetrics.js.map +1 -1
- package/dist-esm/src/metrics/quickpulse/utils.js.map +1 -1
- package/dist-esm/src/metrics/standardMetrics.js.map +1 -1
- package/dist-esm/src/metrics/utils.js.map +1 -1
- package/dist-esm/src/shared/config.js.map +1 -1
- package/dist-esm/src/shared/jsonConfig.js.map +1 -1
- package/dist-esm/src/shared/logging/diagFileConsoleLogger.js.map +1 -1
- package/dist-esm/src/shared/logging/logger.js.map +1 -1
- package/dist-esm/src/traces/azureFnHook.js.map +1 -1
- package/dist-esm/src/traces/handler.js.map +1 -1
- package/dist-esm/src/traces/sampler.js.map +1 -1
- package/dist-esm/src/utils/common.js.map +1 -1
- package/dist-esm/src/utils/connectionStringParser.js.map +1 -1
- package/dist-esm/src/utils/fileSystem.js.map +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserSdkLoader.js","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import http from \"http\";\nimport https from \"https\";\nimport { webSnippet as sdkLoader } from \"@microsoft/applicationinsights-web-snippet\";\nimport * as browserSdkLoaderHelper from \"./browserSdkLoaderHelper\";\nimport * as prefixHelper from \"../utils/common\";\nimport * as zlib from \"zlib\";\nimport { InternalConfig } from \"../shared\";\nimport { ConnectionStringParser } from \"../utils/connectionStringParser\";\nimport { IncomingMessage, ServerResponse } from \"http\";\nimport { Logger } from \"../shared/logging/logger\";\nimport { BROWSER_SDK_LOADER_DEFAULT_SOURCE } from \"../types\";\n\nexport class BrowserSdkLoader {\n private static _instance: BrowserSdkLoader | null;\n\n private static _sdkLoader: string;\n private static _aiUrl: string;\n private _isIkeyValid: boolean = true;\n private _isInitialized: boolean = false;\n private _browserSdkLoaderIkey?: string;\n\n constructor(config: InternalConfig) {\n if (!!BrowserSdkLoader._instance) {\n throw new Error(\n \"Browser SDK Loader should be configured from the applicationInsights object\",\n );\n }\n\n BrowserSdkLoader._instance = this;\n // AI URL used to validate if sdk loader already included\n BrowserSdkLoader._aiUrl = BROWSER_SDK_LOADER_DEFAULT_SOURCE;\n let clientWebIkey;\n if (config.browserSdkLoaderOptions?.connectionString) {\n clientWebIkey = this._getBrowserSdkLoaderIkey(\n config?.browserSdkLoaderOptions?.connectionString,\n );\n }\n this._browserSdkLoaderIkey =\n clientWebIkey ||\n ConnectionStringParser.parse(config.azureMonitorExporterOptions.connectionString)\n .instrumentationkey;\n\n if (this._isIkeyValid) {\n this._initialize();\n }\n }\n\n public isInitialized() {\n return this._isInitialized;\n }\n\n public static getInstance(): BrowserSdkLoader {\n return BrowserSdkLoader._instance!;\n }\n\n private _getBrowserSdkLoaderIkey(connectionString: string) {\n let iKey = null;\n try {\n const csCode = ConnectionStringParser.parse(connectionString);\n const iKeyCode = csCode.instrumentationkey || \"\";\n if (!ConnectionStringParser.validateInstrumentationKey(iKeyCode)) {\n this._isIkeyValid = false;\n Logger.getInstance().info(\n \"Invalid browser SDK loader connection string, browser SDK loader is not enabled.\",\n );\n } else {\n this._isIkeyValid = true;\n iKey = iKeyCode;\n }\n } catch (err) {\n Logger.getInstance().info(\"get browser SDK loader ikey error: \" + err);\n }\n return iKey;\n }\n\n /**\n * Gets string to inject into the web page\n * @returns The string to inject into the web page\n */\n private _getBrowserSdkLoaderReplacedStr() {\n let osStr = prefixHelper.getOsPrefix();\n let rpStr = prefixHelper.getResourceProvider();\n let sdkLoaderReplacedStr = `${this._browserSdkLoaderIkey}\\\",\\r\\n disableIkeyDeprecationMessage: true,\\r\\n sdkExtension: \\\"${rpStr}${osStr}d_n_`;\n let replacedSdkLoader = sdkLoader.replace(\"INSTRUMENTATION_KEY\", sdkLoaderReplacedStr);\n return replacedSdkLoader;\n }\n\n private _initialize() {\n this._isInitialized = true;\n BrowserSdkLoader._sdkLoader = this._getBrowserSdkLoaderReplacedStr();\n const originalHttpServer = http.createServer;\n const originalHttpsServer = https.createServer;\n\n (http.createServer as any) = (\n requestListener?: (request: IncomingMessage, response: ServerResponse) => void,\n ) => {\n const originalRequestListener = requestListener;\n if (originalRequestListener) {\n requestListener = (request: IncomingMessage, response: ServerResponse) => {\n // Patch response write method\n let originalResponseWrite = response.write;\n let isGetRequest = request.method == \"GET\";\n response.write = function wrap(a: Buffer | string, b?: Function | string) {\n //only patch GET request\n try {\n if (isGetRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(response);\n let writeBufferType = undefined;\n if (typeof b === \"string\") {\n writeBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(response, a)) {\n arguments[0] = BrowserSdkLoader._instance.InjectSdkLoader(\n response,\n a,\n undefined,\n writeBufferType,\n );\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(\n response,\n a,\n encodeType,\n );\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject browser sdk loader error: \" + err);\n }\n return originalResponseWrite.apply(response, arguments as any);\n };\n\n // Patch response end method for cases when HTML is added there\n let originalResponseEnd = response.end;\n\n (response.end as any) = function wrap(a?: Buffer | string | any, b?: Function) {\n if (isGetRequest) {\n try {\n if (isGetRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(response);\n let endBufferType = undefined;\n if (typeof b === \"string\") {\n endBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(response, a)) {\n arguments[0] = BrowserSdkLoader._instance.InjectSdkLoader(\n response,\n a,\n undefined,\n endBufferType,\n );\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(\n response,\n a,\n encodeType,\n );\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject browser sdk loader error: \" + err);\n }\n }\n return originalResponseEnd.apply(response, arguments as any);\n };\n\n return originalRequestListener(request, response);\n };\n }\n return originalHttpServer(requestListener);\n };\n\n (https.createServer as any) = function (options: any, httpsRequestListener: any): any {\n const originalHttpsRequestListener = httpsRequestListener;\n if (originalHttpsRequestListener) {\n httpsRequestListener = function (req: any, res: any) {\n let isGetHttpsRequest = req.method == \"GET\";\n let originalHttpsResponseWrite = res.write;\n let originalHttpsResponseEnd = res.end;\n res.write = function wrap(a: Buffer | string | any, b?: Function | string) {\n try {\n if (isGetHttpsRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(res);\n let writeBufferType = undefined;\n if (typeof b === \"string\") {\n writeBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(res, a)) {\n arguments[0] = this.InjectSdkLoader(res, a, undefined, writeBufferType);\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(res, a, encodeType);\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject SDK loader error: \" + err);\n }\n return originalHttpsResponseWrite.apply(res, arguments);\n };\n\n res.end = function wrap(a: Buffer | string | any, b?: Function | string) {\n try {\n if (isGetHttpsRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(res);\n let endBufferType = undefined;\n if (typeof b === \"string\") {\n endBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(res, a)) {\n arguments[0] = BrowserSdkLoader._instance.InjectSdkLoader(\n res,\n a,\n undefined,\n endBufferType,\n );\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(res, a, encodeType);\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject SDK loader error: \" + err);\n }\n return originalHttpsResponseEnd.apply(res, arguments);\n };\n return originalHttpsRequestListener(req, res);\n };\n return originalHttpsServer(options, httpsRequestListener);\n }\n };\n }\n\n /**\n * Validate response and try to inject Browser SDK Loader\n */\n public ValidateInjection(response: any, input: string | Buffer): boolean {\n try {\n if (!response || !input || response.statusCode != 200) return false;\n let isContentHtml = browserSdkLoaderHelper.isContentTypeHeaderHtml(response);\n if (!isContentHtml) return false;\n let inputStr = input.slice().toString();\n if (inputStr.indexOf(\"<head>\") >= 0 && inputStr.indexOf(\"</head>\") >= 0) {\n // Check if sdk loader not already present looking for AI Web SDK URL\n if (inputStr.indexOf(BrowserSdkLoader._aiUrl) < 0) {\n return true;\n }\n }\n } catch (err) {\n Logger.getInstance().info(\"validate injections error: \" + err);\n }\n return false;\n }\n\n /**\n * Inject Browser SDK Loader\n */\n public InjectSdkLoader(\n response: any,\n input: string | Buffer,\n encodeType?: browserSdkLoaderHelper.contentEncodingMethod,\n bufferEncodeType?: string,\n ): string | Buffer {\n try {\n let isCompressedBuffer = !!encodeType;\n if (!isCompressedBuffer) {\n let html = input.toString();\n let index = html.indexOf(\"</head>\");\n if (index < 0) return input;\n\n let newHtml = browserSdkLoaderHelper.insertBrowserSdkLoaderByIndex(\n index,\n html,\n BrowserSdkLoader._sdkLoader,\n );\n if (typeof input === \"string\") {\n response.removeHeader(\"Content-Length\");\n if (newHtml) {\n input = newHtml;\n }\n response.setHeader(\"Content-Length\", Buffer.byteLength(input));\n } else if (Buffer.isBuffer(input)) {\n let bufferType = bufferEncodeType ? bufferEncodeType : \"utf8\";\n let isValidBufferType = browserSdkLoaderHelper.isBufferType(input, bufferType);\n if (isValidBufferType && newHtml) {\n response.removeHeader(\"Content-Length\");\n let encodedString = Buffer.from(newHtml).toString(bufferType as BufferEncoding);\n input = Buffer.from(encodedString, bufferType as BufferEncoding);\n response.setHeader(\"Content-Length\", input.length);\n }\n }\n } else {\n response.removeHeader(\"Content-Length\");\n input = this._getInjectedCompressBuffer(\n response,\n input as Buffer,\n encodeType as browserSdkLoaderHelper.contentEncodingMethod,\n );\n response.setHeader(\"Content-Length\", input.length);\n }\n } catch (ex) {\n Logger.getInstance().warn(\n \"Failed to inject browser sdk loader and change content-length headers. Exception:\" + ex,\n );\n }\n return input;\n }\n\n //***********************\n // should NOT use sync functions here. But currently cannot get async functions to work\n // because reponse.write return boolean\n // and also this function do not support partial compression as well\n // need more investigation\n private _getInjectedCompressBuffer(\n response: any,\n input: Buffer,\n encodeType: browserSdkLoaderHelper.contentEncodingMethod,\n ): Buffer {\n try {\n switch (encodeType) {\n case browserSdkLoaderHelper.contentEncodingMethod.GZIP:\n let gunzipBuffer = zlib.gunzipSync(input);\n if (this.ValidateInjection(response, gunzipBuffer)) {\n let injectedGunzipBuffer = this.InjectSdkLoader(response, gunzipBuffer);\n input = zlib.gzipSync(injectedGunzipBuffer);\n }\n break;\n case browserSdkLoaderHelper.contentEncodingMethod.DEFLATE:\n let inflateBuffer = zlib.inflateSync(input);\n if (this.ValidateInjection(response, inflateBuffer)) {\n let injectedInflateBuffer = this.InjectSdkLoader(response, inflateBuffer);\n input = zlib.deflateSync(injectedInflateBuffer);\n }\n break;\n case browserSdkLoaderHelper.contentEncodingMethod.BR:\n let BrotliDecompressSync = browserSdkLoaderHelper.getBrotliDecompressSync(zlib);\n let BrotliCompressSync = browserSdkLoaderHelper.getBrotliCompressSync(zlib);\n if (BrotliDecompressSync && BrotliCompressSync) {\n let decompressBuffer = BrotliDecompressSync(input);\n if (this.ValidateInjection(response, decompressBuffer)) {\n let injectedDecompressBuffer = this.InjectSdkLoader(response, decompressBuffer);\n input = BrotliCompressSync(injectedDecompressBuffer);\n }\n break;\n }\n }\n } catch (err) {\n Logger.getInstance().info(\"get browser SDK loader compress buffer error: \" + err);\n }\n\n return input;\n }\n\n public dispose() {\n BrowserSdkLoader._instance = null;\n this._isInitialized = false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"browserSdkLoader.js","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import http from \"http\";\nimport https from \"https\";\nimport { webSnippet as sdkLoader } from \"@microsoft/applicationinsights-web-snippet\";\nimport * as browserSdkLoaderHelper from \"./browserSdkLoaderHelper\";\nimport * as prefixHelper from \"../utils/common\";\nimport * as zlib from \"zlib\";\nimport { InternalConfig } from \"../shared\";\nimport { ConnectionStringParser } from \"../utils/connectionStringParser\";\nimport { IncomingMessage, ServerResponse } from \"http\";\nimport { Logger } from \"../shared/logging/logger\";\nimport { BROWSER_SDK_LOADER_DEFAULT_SOURCE } from \"../types\";\n\nexport class BrowserSdkLoader {\n private static _instance: BrowserSdkLoader | null;\n\n private static _sdkLoader: string;\n private static _aiUrl: string;\n private _isIkeyValid: boolean = true;\n private _isInitialized: boolean = false;\n private _browserSdkLoaderIkey?: string;\n\n constructor(config: InternalConfig) {\n if (!!BrowserSdkLoader._instance) {\n throw new Error(\n \"Browser SDK Loader should be configured from the applicationInsights object\",\n );\n }\n\n BrowserSdkLoader._instance = this;\n // AI URL used to validate if sdk loader already included\n BrowserSdkLoader._aiUrl = BROWSER_SDK_LOADER_DEFAULT_SOURCE;\n let clientWebIkey;\n if (config.browserSdkLoaderOptions?.connectionString) {\n clientWebIkey = this._getBrowserSdkLoaderIkey(\n config?.browserSdkLoaderOptions?.connectionString,\n );\n }\n this._browserSdkLoaderIkey =\n clientWebIkey ||\n ConnectionStringParser.parse(config.azureMonitorExporterOptions.connectionString)\n .instrumentationkey;\n\n if (this._isIkeyValid) {\n this._initialize();\n }\n }\n\n public isInitialized() {\n return this._isInitialized;\n }\n\n public static getInstance(): BrowserSdkLoader {\n return BrowserSdkLoader._instance!;\n }\n\n private _getBrowserSdkLoaderIkey(connectionString: string) {\n let iKey = null;\n try {\n const csCode = ConnectionStringParser.parse(connectionString);\n const iKeyCode = csCode.instrumentationkey || \"\";\n if (!ConnectionStringParser.validateInstrumentationKey(iKeyCode)) {\n this._isIkeyValid = false;\n Logger.getInstance().info(\n \"Invalid browser SDK loader connection string, browser SDK loader is not enabled.\",\n );\n } else {\n this._isIkeyValid = true;\n iKey = iKeyCode;\n }\n } catch (err) {\n Logger.getInstance().info(\"get browser SDK loader ikey error: \" + err);\n }\n return iKey;\n }\n\n /**\n * Gets string to inject into the web page\n * @returns The string to inject into the web page\n */\n private _getBrowserSdkLoaderReplacedStr() {\n let osStr = prefixHelper.getOsPrefix();\n let rpStr = prefixHelper.getResourceProvider();\n let sdkLoaderReplacedStr = `${this._browserSdkLoaderIkey}\\\",\\r\\n disableIkeyDeprecationMessage: true,\\r\\n sdkExtension: \\\"${rpStr}${osStr}d_n_`;\n let replacedSdkLoader = sdkLoader.replace(\"INSTRUMENTATION_KEY\", sdkLoaderReplacedStr);\n return replacedSdkLoader;\n }\n\n private _initialize() {\n this._isInitialized = true;\n BrowserSdkLoader._sdkLoader = this._getBrowserSdkLoaderReplacedStr();\n const originalHttpServer = http.createServer;\n const originalHttpsServer = https.createServer;\n\n (http.createServer as any) = (\n requestListener?: (request: IncomingMessage, response: ServerResponse) => void,\n ) => {\n const originalRequestListener = requestListener;\n if (originalRequestListener) {\n requestListener = (request: IncomingMessage, response: ServerResponse) => {\n // Patch response write method\n let originalResponseWrite = response.write;\n let isGetRequest = request.method == \"GET\";\n response.write = function wrap(a: Buffer | string, b?: Function | string) {\n //only patch GET request\n try {\n if (isGetRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(response);\n let writeBufferType = undefined;\n if (typeof b === \"string\") {\n writeBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(response, a)) {\n arguments[0] = BrowserSdkLoader._instance.InjectSdkLoader(\n response,\n a,\n undefined,\n writeBufferType,\n );\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(\n response,\n a,\n encodeType,\n );\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject browser sdk loader error: \" + err);\n }\n return originalResponseWrite.apply(response, arguments as any);\n };\n\n // Patch response end method for cases when HTML is added there\n let originalResponseEnd = response.end;\n\n (response.end as any) = function wrap(a?: Buffer | string | any, b?: Function) {\n if (isGetRequest) {\n try {\n if (isGetRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(response);\n let endBufferType = undefined;\n if (typeof b === \"string\") {\n endBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(response, a)) {\n arguments[0] = BrowserSdkLoader._instance.InjectSdkLoader(\n response,\n a,\n undefined,\n endBufferType,\n );\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(\n response,\n a,\n encodeType,\n );\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject browser sdk loader error: \" + err);\n }\n }\n return originalResponseEnd.apply(response, arguments as any);\n };\n\n return originalRequestListener(request, response);\n };\n }\n return originalHttpServer(requestListener);\n };\n\n (https.createServer as any) = function (options: any, httpsRequestListener: any): any {\n const originalHttpsRequestListener = httpsRequestListener;\n if (originalHttpsRequestListener) {\n httpsRequestListener = function (req: any, res: any) {\n let isGetHttpsRequest = req.method == \"GET\";\n let originalHttpsResponseWrite = res.write;\n let originalHttpsResponseEnd = res.end;\n res.write = function wrap(a: Buffer | string | any, b?: Function | string) {\n try {\n if (isGetHttpsRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(res);\n let writeBufferType = undefined;\n if (typeof b === \"string\") {\n writeBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(res, a)) {\n arguments[0] = this.InjectSdkLoader(res, a, undefined, writeBufferType);\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(res, a, encodeType);\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject SDK loader error: \" + err);\n }\n return originalHttpsResponseWrite.apply(res, arguments);\n };\n\n res.end = function wrap(a: Buffer | string | any, b?: Function | string) {\n try {\n if (isGetHttpsRequest) {\n let headers = browserSdkLoaderHelper.getContentEncodingFromHeaders(res);\n let endBufferType = undefined;\n if (typeof b === \"string\") {\n endBufferType = b;\n }\n if (headers === null || headers === undefined) {\n if (BrowserSdkLoader._instance?.ValidateInjection(res, a)) {\n arguments[0] = BrowserSdkLoader._instance.InjectSdkLoader(\n res,\n a,\n undefined,\n endBufferType,\n );\n }\n } else if (headers.length) {\n let encodeType = headers[0];\n arguments[0] = BrowserSdkLoader._instance?.InjectSdkLoader(res, a, encodeType);\n }\n }\n } catch (err) {\n Logger.getInstance().warn(\"Inject SDK loader error: \" + err);\n }\n return originalHttpsResponseEnd.apply(res, arguments);\n };\n return originalHttpsRequestListener(req, res);\n };\n return originalHttpsServer(options, httpsRequestListener);\n }\n };\n }\n\n /**\n * Validate response and try to inject Browser SDK Loader\n */\n public ValidateInjection(response: any, input: string | Buffer): boolean {\n try {\n if (!response || !input || response.statusCode != 200) return false;\n let isContentHtml = browserSdkLoaderHelper.isContentTypeHeaderHtml(response);\n if (!isContentHtml) return false;\n let inputStr = input.slice().toString();\n if (inputStr.indexOf(\"<head>\") >= 0 && inputStr.indexOf(\"</head>\") >= 0) {\n // Check if sdk loader not already present looking for AI Web SDK URL\n if (inputStr.indexOf(BrowserSdkLoader._aiUrl) < 0) {\n return true;\n }\n }\n } catch (err) {\n Logger.getInstance().info(\"validate injections error: \" + err);\n }\n return false;\n }\n\n /**\n * Inject Browser SDK Loader\n */\n public InjectSdkLoader(\n response: any,\n input: string | Buffer,\n encodeType?: browserSdkLoaderHelper.contentEncodingMethod,\n bufferEncodeType?: string,\n ): string | Buffer {\n try {\n let isCompressedBuffer = !!encodeType;\n if (!isCompressedBuffer) {\n let html = input.toString();\n let index = html.indexOf(\"</head>\");\n if (index < 0) return input;\n\n let newHtml = browserSdkLoaderHelper.insertBrowserSdkLoaderByIndex(\n index,\n html,\n BrowserSdkLoader._sdkLoader,\n );\n if (typeof input === \"string\") {\n response.removeHeader(\"Content-Length\");\n if (newHtml) {\n input = newHtml;\n }\n response.setHeader(\"Content-Length\", Buffer.byteLength(input));\n } else if (Buffer.isBuffer(input)) {\n let bufferType = bufferEncodeType ? bufferEncodeType : \"utf8\";\n let isValidBufferType = browserSdkLoaderHelper.isBufferType(input, bufferType);\n if (isValidBufferType && newHtml) {\n response.removeHeader(\"Content-Length\");\n let encodedString = Buffer.from(newHtml).toString(bufferType as BufferEncoding);\n input = Buffer.from(encodedString, bufferType as BufferEncoding);\n response.setHeader(\"Content-Length\", input.length);\n }\n }\n } else {\n response.removeHeader(\"Content-Length\");\n input = this._getInjectedCompressBuffer(\n response,\n input as Buffer,\n encodeType as browserSdkLoaderHelper.contentEncodingMethod,\n );\n response.setHeader(\"Content-Length\", input.length);\n }\n } catch (ex) {\n Logger.getInstance().warn(\n \"Failed to inject browser sdk loader and change content-length headers. Exception:\" + ex,\n );\n }\n return input;\n }\n\n //***********************\n // should NOT use sync functions here. But currently cannot get async functions to work\n // because reponse.write return boolean\n // and also this function do not support partial compression as well\n // need more investigation\n private _getInjectedCompressBuffer(\n response: any,\n input: Buffer,\n encodeType: browserSdkLoaderHelper.contentEncodingMethod,\n ): Buffer {\n try {\n switch (encodeType) {\n case browserSdkLoaderHelper.contentEncodingMethod.GZIP:\n let gunzipBuffer = zlib.gunzipSync(input);\n if (this.ValidateInjection(response, gunzipBuffer)) {\n let injectedGunzipBuffer = this.InjectSdkLoader(response, gunzipBuffer);\n input = zlib.gzipSync(injectedGunzipBuffer);\n }\n break;\n case browserSdkLoaderHelper.contentEncodingMethod.DEFLATE:\n let inflateBuffer = zlib.inflateSync(input);\n if (this.ValidateInjection(response, inflateBuffer)) {\n let injectedInflateBuffer = this.InjectSdkLoader(response, inflateBuffer);\n input = zlib.deflateSync(injectedInflateBuffer);\n }\n break;\n case browserSdkLoaderHelper.contentEncodingMethod.BR:\n let BrotliDecompressSync = browserSdkLoaderHelper.getBrotliDecompressSync(zlib);\n let BrotliCompressSync = browserSdkLoaderHelper.getBrotliCompressSync(zlib);\n if (BrotliDecompressSync && BrotliCompressSync) {\n let decompressBuffer = BrotliDecompressSync(input);\n if (this.ValidateInjection(response, decompressBuffer)) {\n let injectedDecompressBuffer = this.InjectSdkLoader(response, decompressBuffer);\n input = BrotliCompressSync(injectedDecompressBuffer);\n }\n break;\n }\n }\n } catch (err) {\n Logger.getInstance().info(\"get browser SDK loader compress buffer error: \" + err);\n }\n\n return input;\n }\n\n public dispose() {\n BrowserSdkLoader._instance = null;\n this._isInitialized = false;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserSdkLoaderHelper.js","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoaderHelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,iDAAiD;AACjD,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,sCAAa,CAAA;IACb,4CAAmB,CAAA;IACnB,kCAAS,CAAA;AACX,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;CACP,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAY,EAAE;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAe,EAAmB,EAAE;IACzE,IAAI,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,cAAc,KAAK,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"browserSdkLoaderHelper.js","sourceRoot":"","sources":["../../../src/browserSdkLoader/browserSdkLoaderHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import * as zlib from \"zlib\";\nimport { promisify } from \"util\";\nimport * as http from \"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\nexport const getBrotliCompressAsync = (zlibObject: any): Function | null => {\n let isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliCompress === \"function\") {\n return promisify(zlibObject.brotliCompress);\n }\n return null;\n};\n\nexport const getBrotliCompressSync = (zlibObject: any): Function | null => {\n let isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliCompressSync === \"function\") {\n return zlibObject.brotliCompressSync;\n }\n return null;\n};\n\nexport const getBrotliDecompressAsync = (zlibObject: any): Function | null => {\n let isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliDecompress === \"function\") {\n return promisify(zlibObject.brotliDecompress);\n }\n return null;\n};\n\nexport const getBrotliDecompressSync = (zlibObject: any): Function | null => {\n let isMajorVer = isBrotliSupported();\n if (isMajorVer && typeof zlibObject.brotliDecompressSync === \"function\") {\n return zlibObject.brotliDecompressSync;\n }\n return null;\n};\n\nexport const isBufferType = (buffer: Buffer, type?: string): boolean | null => {\n let encodingType = type ? type : \"utf8\";\n let result = false;\n if (Buffer.isEncoding(encodingType)) {\n let 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 (let key in bufferEncodingTypes) {\n let type = bufferEncodingTypes[key];\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 let headers: contentEncodingMethod[] = [];\n let contentEncodingHeaders = response.getHeader(\"Content-Encoding\");\n if (!contentEncodingHeaders) return null;\n if (typeof contentEncodingHeaders === \"string\") {\n let 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 let newHtml = null;\n let subStart = html.substring(0, index);\n let subEnd = html.substring(index);\n 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 let 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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickpulseClient.js","sourceRoot":"","sources":["../../../src/generated/quickpulseClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAS5C,MAAM,OAAO,gBAAiB,SAAQ,UAAU,CAAC,aAAa;IAG5D;;;OAGG;IACH,YAAY,OAAwC;;QAClD,0CAA0C;QAC1C,IAAI,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"quickpulseClient.js","sourceRoot":"","sources":["../../../src/generated/quickpulseClient.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n\nimport * as coreClient from \"@azure/core-client\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport {\n QuickpulseClientOptionalParams,\n PingOptionalParams,\n PingResponse,\n PostOptionalParams,\n PostResponse,\n} from \"./models\";\n\nexport class QuickpulseClient extends coreClient.ServiceClient {\n host: string;\n\n /**\n * Initializes a new instance of the QuickpulseClient class.\n * @param options The parameter options\n */\n constructor(options?: QuickpulseClientOptionalParams) {\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: QuickpulseClientOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\",\n };\n\n const packageDetails = `azsdk-js-monitor-opentelemetry/1.0.0-beta.0`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix,\n },\n endpoint: options.endpoint ?? options.baseUri ?? \"{Host}\",\n };\n super(optionsWithDefaults);\n\n // Assigning values to Constant parameters\n this.host = options.host || \"https://rt.services.visualstudio.com\";\n }\n\n /**\n * SDK ping\n * @param ikey The ikey of the target Application Insights component that displays server info sent by\n * /QuickPulseService.svc/ping\n * @param options The options parameters.\n */\n ping(ikey: string, options?: PingOptionalParams): Promise<PingResponse> {\n return this.sendOperationRequest({ ikey, options }, pingOperationSpec);\n }\n\n /**\n * SDK post\n * @param ikey The ikey of the target Application Insights component that displays metrics and\n * documents sent by /QuickPulseService.svc/post\n * @param options The options parameters.\n */\n post(ikey: string, options?: PostOptionalParams): Promise<PostResponse> {\n return this.sendOperationRequest({ ikey, options }, postOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst pingOperationSpec: coreClient.OperationSpec = {\n path: \"/QuickPulseService.svc/ping\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CollectionConfigurationInfo,\n headersMapper: Mappers.QuickpulseClientPingHeaders,\n },\n 400: {\n bodyMapper: Mappers.ServiceError,\n },\n 401: {\n bodyMapper: Mappers.ServiceError,\n },\n 403: {\n bodyMapper: Mappers.ServiceError,\n },\n 404: {\n bodyMapper: Mappers.ServiceError,\n },\n 500: {\n bodyMapper: Mappers.ServiceError,\n },\n 503: {\n bodyMapper: Mappers.ServiceError,\n },\n },\n requestBody: Parameters.monitoringDataPoint,\n queryParameters: [Parameters.ikey, Parameters.apikey],\n urlParameters: [Parameters.host],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.xMsQpsTransmissionTime,\n Parameters.xMsQpsMachineName,\n Parameters.xMsQpsInstanceName,\n Parameters.xMsQpsStreamId,\n Parameters.xMsQpsRoleName,\n Parameters.xMsQpsInvariantVersion,\n Parameters.xMsQpsConfigurationEtag,\n ],\n mediaType: \"json\",\n serializer,\n};\nconst postOperationSpec: coreClient.OperationSpec = {\n path: \"/QuickPulseService.svc/post\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CollectionConfigurationInfo,\n headersMapper: Mappers.QuickpulseClientPostHeaders,\n },\n 400: {\n bodyMapper: Mappers.ServiceError,\n },\n 401: {\n bodyMapper: Mappers.ServiceError,\n },\n 403: {\n bodyMapper: Mappers.ServiceError,\n },\n 404: {\n bodyMapper: Mappers.ServiceError,\n },\n 500: {\n bodyMapper: Mappers.ServiceError,\n },\n 503: {\n bodyMapper: Mappers.ServiceError,\n },\n },\n requestBody: Parameters.monitoringDataPoints,\n queryParameters: [Parameters.ikey, Parameters.apikey],\n urlParameters: [Parameters.host],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.xMsQpsTransmissionTime,\n Parameters.xMsQpsConfigurationEtag,\n ],\n mediaType: \"json\",\n serializer,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAwB,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EACL,mCAAmC,EACnC,gCAAgC,EAChC,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAQvE,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,GAAG,mCAAmC,CAAC;AAElF,IAAI,GAAY,CAAC;AACjB,IAAI,gBAA8C,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAA0C;IACxE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { metrics, trace } from \"@opentelemetry/api\";\nimport { logs } from \"@opentelemetry/api-logs\";\nimport { NodeSDK, NodeSDKConfiguration } from \"@opentelemetry/sdk-node\";\nimport { InternalConfig } from \"./shared/config\";\nimport { MetricHandler } from \"./metrics\";\nimport { TraceHandler } from \"./traces/handler\";\nimport { Logger as InternalLogger } from \"./shared/logging\";\nimport { AzureMonitorOpenTelemetryOptions } from \"./shared/types\";\nimport { LogHandler } from \"./logs\";\nimport {\n AZURE_MONITOR_OPENTELEMETRY_VERSION,\n AZURE_MONITOR_STATSBEAT_FEATURES,\n StatsbeatFeature,\n StatsbeatInstrumentation,\n} from \"./types\";\nimport { BrowserSdkLoader } from \"./browserSdkLoader/browserSdkLoader\";\n\nexport {\n AzureMonitorOpenTelemetryOptions,\n InstrumentationOptions,\n BrowserSdkLoaderOptions,\n} from \"./shared/types\";\n\nprocess.env[\"AZURE_MONITOR_DISTRO_VERSION\"] = AZURE_MONITOR_OPENTELEMETRY_VERSION;\n\nlet sdk: NodeSDK;\nlet browserSdkLoader: BrowserSdkLoader | undefined;\n\n/**\n * Initialize Azure Monitor Distro\n * @param options Azure Monitor OpenTelemetry Options\n */\nexport function useAzureMonitor(options?: AzureMonitorOpenTelemetryOptions) {\n const config = new InternalConfig(options);\n\n if (config.browserSdkLoaderOptions.enabled) {\n browserSdkLoader = new BrowserSdkLoader(config);\n }\n _setStatsbeatFeatures(config, browserSdkLoader);\n // Remove global providers in OpenTelemetry, these would be overriden if present\n metrics.disable();\n trace.disable();\n logs.disable();\n\n // Create internal handlers\n const metricHandler = new MetricHandler(config);\n const traceHandler = new TraceHandler(config, metricHandler);\n const logHandler = new LogHandler(config, metricHandler);\n\n const instrumentations = traceHandler\n .getInstrumentations()\n .concat(logHandler.getInstrumentations());\n\n // Initialize OpenTelemetry SDK\n const sdkConfig: Partial<NodeSDKConfiguration> = {\n autoDetectResources: true,\n logRecordProcessor: logHandler.getLogRecordProcessor(),\n metricReader: metricHandler.getMetricReader(),\n views: metricHandler.getViews(),\n instrumentations: instrumentations,\n resource: config.resource,\n sampler: traceHandler.getSampler(),\n spanProcessor: traceHandler.getSpanProcessor(),\n };\n sdk = new NodeSDK(sdkConfig);\n sdk.start();\n // Add extra SpanProcessors, MetricReaders and LogRecordProcessors\n traceHandler.start();\n logHandler.start();\n}\n\n/**\n * Shutdown Azure Monitor Distro\n */\nexport function shutdownAzureMonitor() {\n sdk?.shutdown();\n browserSdkLoader?.dispose();\n}\n\nfunction _setStatsbeatFeatures(config: InternalConfig, browserSdkLoader?: BrowserSdkLoader) {\n let instrumentationBitMap = StatsbeatInstrumentation.NONE;\n if (config.instrumentationOptions?.azureSdk?.enabled) {\n instrumentationBitMap |= StatsbeatInstrumentation.AZURE_CORE_TRACING;\n }\n if (config.instrumentationOptions?.mongoDb?.enabled) {\n instrumentationBitMap |= StatsbeatInstrumentation.MONGODB;\n }\n if (config.instrumentationOptions?.mySql?.enabled) {\n instrumentationBitMap |= StatsbeatInstrumentation.MYSQL;\n }\n if (config.instrumentationOptions?.postgreSql?.enabled) {\n instrumentationBitMap |= StatsbeatInstrumentation.POSTGRES;\n }\n if (config.instrumentationOptions?.redis?.enabled) {\n instrumentationBitMap |= StatsbeatInstrumentation.REDIS;\n }\n if (config.instrumentationOptions?.bunyan?.enabled) {\n instrumentationBitMap |= StatsbeatInstrumentation.BUNYAN;\n }\n\n let featureBitMap = StatsbeatFeature.NONE;\n featureBitMap |= StatsbeatFeature.DISTRO;\n\n if (browserSdkLoader?.isInitialized()) {\n featureBitMap |= StatsbeatFeature.BROWSER_SDK_LOADER;\n }\n\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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/logs/handler.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAkB,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,UAAU;IAOrB;;;;OAIG;IACH,YAAY,MAAsB,EAAE,aAA4B;QAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK;QACV,IAAI;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/logs/handler.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAkB,MAAM,yBAAyB,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,UAAU;IAOrB;;;;OAIG;IACH,YAAY,MAAsB,EAAE,aAA4B;QAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC3E,IAAI,CAAC,iBAAiB,EAAqB,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;IACpB,CAAC;IAEM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,2BAA2B;;QACjC,IAAI,MAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,0CAAE,OAAO,EAAE,CAAC;YACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACzB,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AzureMonitorLogExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport { logs } from \"@opentelemetry/api-logs\";\nimport { Instrumentation } from \"@opentelemetry/instrumentation\";\nimport { BunyanInstrumentation } from \"@opentelemetry/instrumentation-bunyan\";\nimport { BatchLogRecordProcessor, LoggerProvider } from \"@opentelemetry/sdk-logs\";\nimport { InternalConfig } from \"../shared/config\";\nimport { MetricHandler } from \"../metrics/handler\";\nimport { AzureLogRecordProcessor } from \"./logRecordProcessor\";\n\n/**\n * Azure Monitor OpenTelemetry Log Handler\n */\nexport class LogHandler {\n private _azureExporter: AzureMonitorLogExporter;\n private _logRecordProcessor: BatchLogRecordProcessor;\n private _metricHandler: MetricHandler;\n private _config: InternalConfig;\n private _instrumentations: Instrumentation[];\n\n /**\n * Initializes a new instance of the TraceHandler class.\n * @param _config - Distro configuration.\n * @param _metricHandler - MetricHandler.\n */\n constructor(config: InternalConfig, metricHandler: MetricHandler) {\n this._config = config;\n this._metricHandler = metricHandler;\n this._azureExporter = new AzureMonitorLogExporter(config.azureMonitorExporterOptions);\n this._logRecordProcessor = new BatchLogRecordProcessor(this._azureExporter);\n this._instrumentations = [];\n this._initializeInstrumentations();\n }\n\n public start(): void {\n try {\n const azureLogProccessor = new AzureLogRecordProcessor(this._metricHandler);\n (logs.getLoggerProvider() as LoggerProvider).addLogRecordProcessor(azureLogProccessor);\n } catch (error) {}\n }\n\n public getLogRecordProcessor(): BatchLogRecordProcessor {\n return this._logRecordProcessor;\n }\n\n public getInstrumentations(): Instrumentation[] {\n return this._instrumentations;\n }\n\n /**\n * Start auto collection of telemetry\n */\n private _initializeInstrumentations() {\n if (this._config.instrumentationOptions.bunyan?.enabled) {\n this._instrumentations.push(\n new BunyanInstrumentation(this._config.instrumentationOptions.bunyan),\n );\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/metrics/handler.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EACL,6BAA6B,EAE7B,IAAI,GACL,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,wCAAwC,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,aAAa;IASxB;;;;OAIG;IACH,YAAY,MAAsB,EAAE,OAAwC;;QAbpE,wBAAmB,GAAG,KAAK,CAAC,CAAC,aAAa;QAchD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,8JAA8J;QAC9J,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,MAAA,MAAM,CAAC,sBAAsB,CAAC,QAAQ,0CAAE,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/metrics/handler.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AzureMonitorMetricExporter } from \"@azure/monitor-opentelemetry-exporter\";\nimport {\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n View,\n} from \"@opentelemetry/sdk-metrics\";\nimport { InternalConfig } from \"../shared/config\";\nimport { StandardMetrics } from \"./standardMetrics\";\nimport { ReadableSpan, Span } from \"@opentelemetry/sdk-trace-base\";\nimport { LogRecord } from \"@opentelemetry/sdk-logs\";\nimport { APPLICATION_INSIGHTS_NO_STANDARD_METRICS } from \"./types\";\nimport { LiveMetrics } from \"./quickpulse/liveMetrics\";\n\n/**\n * Azure Monitor OpenTelemetry Metric Handler\n */\nexport class MetricHandler {\n private _collectionInterval = 60000; // 60 seconds\n private _azureExporter: AzureMonitorMetricExporter;\n private _metricReader: PeriodicExportingMetricReader;\n private _standardMetrics?: StandardMetrics;\n private _liveMetrics?: LiveMetrics;\n private _config: InternalConfig;\n private _views: View[];\n\n /**\n * Initializes a new instance of the MetricHandler class.\n * @param config - Distro configuration.\n * @param options - Metric Handler options.\n */\n constructor(config: InternalConfig, options?: { collectionInterval: number }) {\n this._config = config;\n // Adding Views of instrumentations will allow customer to add Metric Readers after, and get access to previously created metrics using the views shared state\n this._views = [];\n if (config.instrumentationOptions.azureSdk?.enabled) {\n this._views.push(new View({ meterName: \"@azure/opentelemetry-instrumentation-azure-sdk\" }));\n }\n if (config.instrumentationOptions.http?.enabled) {\n this._views.push(new View({ meterName: \"@azure/opentelemetry-instrumentation-http\" }));\n }\n if (config.instrumentationOptions.mongoDb?.enabled) {\n this._views.push(new View({ meterName: \"@azure/opentelemetry-instrumentation-mongodb\" }));\n }\n if (config.instrumentationOptions.mySql?.enabled) {\n this._views.push(new View({ meterName: \"@opentelemetry/instrumentation-mysql\" }));\n }\n if (config.instrumentationOptions.postgreSql?.enabled) {\n this._views.push(new View({ meterName: \"@opentelemetry/instrumentation-pg\" }));\n }\n if (config.instrumentationOptions.redis4?.enabled) {\n this._views.push(new View({ meterName: \"@opentelemetry/instrumentation-redis-4\" }));\n }\n if (config.instrumentationOptions.redis?.enabled) {\n this._views.push(new View({ meterName: \"@azure/opentelemetry-instrumentation-redis\" }));\n }\n this._azureExporter = new AzureMonitorMetricExporter(this._config.azureMonitorExporterOptions);\n let metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this._azureExporter as any,\n exportIntervalMillis: options?.collectionInterval || this._collectionInterval,\n };\n this._metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n\n if (\n this._config.enableStandardMetrics &&\n !process.env[APPLICATION_INSIGHTS_NO_STANDARD_METRICS]\n ) {\n this._standardMetrics = new StandardMetrics(this._config);\n }\n if (this._config.enableLiveMetrics) {\n this._liveMetrics = new LiveMetrics(this._config);\n }\n }\n\n public getMetricReader(): PeriodicExportingMetricReader {\n return this._metricReader;\n }\n\n public getViews(): View[] {\n return this._views;\n }\n\n public markSpanAsProcessed(span: Span): void {\n this._standardMetrics?.markSpanAsProcessed(span);\n }\n\n public recordSpan(span: ReadableSpan): void {\n this._standardMetrics?.recordSpan(span);\n this._liveMetrics?.recordSpan(span);\n }\n\n public recordLog(logRecord: LogRecord): void {\n this._standardMetrics?.recordLog(logRecord);\n this._liveMetrics?.recordLog(logRecord);\n }\n\n /**\n * Shutdown handler\n */\n public async shutdown(): Promise<void> {\n this._standardMetrics?.shutdown();\n this._liveMetrics?.shutdown();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../../../../src/metrics/quickpulse/export/exporter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,cAAc,GAGf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C,OAAO,EAAE,oCAAoC,EAAE,MAAM,UAAU,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAOnC;;;OAGG;IAEH,YAAY,OAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC;YACjC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,cAA8C;QAE9C,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACnE,IAAI,cAAc,GAAuB;YACvC,oBAAoB,EAAE,oCAAoC,CACxD,OAAO,EACP,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,cAAc,EAAE,CACtB;YACD,sBAAsB,EAAE,IAAI,CAAC,GAAG,EAAE;SACnC,CAAC;QACF,6DAA6D;QAC7D,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YAC/D,IAAI;
|
|
1
|
+
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../../../../src/metrics/quickpulse/export/exporter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,cAAc,GAGf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAgB,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C,OAAO,EAAE,oCAAoC,EAAE,MAAM,UAAU,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAOnC;;;OAGG;IAEH,YAAY,OAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC;YACjC,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAChE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CACV,OAAwB,EACxB,cAA8C;QAE9C,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QACnE,IAAI,cAAc,GAAuB;YACvC,oBAAoB,EAAE,oCAAoC,CACxD,OAAO,EACP,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,cAAc,EAAE,CACtB;YACD,sBAAsB,EAAE,IAAI,CAAC,GAAG,EAAE;SACnC,CAAC;QACF,6DAA6D;QAC7D,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE;YAC/D,IAAI,CAAC;gBACH,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC1D,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAChC,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC7B,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,4BAA4B,CAAC,cAA8B;QAChE,IACE,cAAc,KAAK,cAAc,CAAC,eAAe;YACjD,cAAc,KAAK,cAAc,CAAC,0BAA0B,EAC5D,CAAC;YACD,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,sBAAsB,CAAC,KAAK,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { context, diag } from \"@opentelemetry/api\";\nimport {\n AggregationTemporality,\n InstrumentType,\n PushMetricExporter,\n ResourceMetrics,\n} from \"@opentelemetry/sdk-metrics\";\nimport { ExportResult, ExportResultCode, suppressTracing } from \"@opentelemetry/core\";\nimport { QuickpulseExporterOptions } from \"../types\";\nimport { QuickpulseSender } from \"./sender\";\nimport {\n DocumentIngress,\n MonitoringDataPoint,\n PostOptionalParams,\n PostResponse,\n} from \"../../../generated\";\nimport { resourceMetricsToQuickpulseDataPoint } from \"../utils\";\n\n/**\n * Quickpulse Metric Exporter.\n */\nexport class QuickpulseMetricExporter implements PushMetricExporter {\n private sender: QuickpulseSender;\n private postCallback: (response: PostResponse | undefined) => void;\n private getDocumentsFn: () => DocumentIngress[];\n // Monitoring data point with common properties\n private baseMonitoringDataPoint: MonitoringDataPoint;\n\n /**\n * Initializes a new instance of the AzureMonitorMetricExporter class.\n * @param AzureExporterConfig - Exporter configuration.\n */\n\n constructor(options: QuickpulseExporterOptions) {\n this.sender = new QuickpulseSender({\n endpointUrl: options.endpointUrl,\n instrumentationKey: options.instrumentationKey,\n aadAudience: options.aadAudience,\n credential: options.credential,\n });\n this.postCallback = options.postCallback;\n this.getDocumentsFn = options.getDocumentsFn;\n this.baseMonitoringDataPoint = options.baseMonitoringDataPoint;\n diag.debug(\"QuickpulseMetricExporter was successfully setup\");\n }\n\n /**\n * Export OpenTelemetry resource metrics.\n * @param metrics - Resource metrics to export.\n * @param resultCallback - Result callback.\n */\n async export(\n metrics: ResourceMetrics,\n resultCallback: (result: ExportResult) => void,\n ): Promise<void> {\n diag.info(`Exporting Live metrics(s). Converting to envelopes...`);\n let optionalParams: PostOptionalParams = {\n monitoringDataPoints: resourceMetricsToQuickpulseDataPoint(\n metrics,\n this.baseMonitoringDataPoint,\n this.getDocumentsFn(),\n ),\n xMsQpsTransmissionTime: Date.now(),\n };\n // Supress tracing until OpenTelemetry Metrics SDK support it\n await context.with(suppressTracing(context.active()), async () => {\n try {\n let postResponse = await this.sender.post(optionalParams);\n this.postCallback(postResponse);\n resultCallback({ code: ExportResultCode.SUCCESS });\n } catch (error) {\n this.postCallback(undefined);\n resultCallback({ code: ExportResultCode.FAILED });\n }\n });\n }\n\n /**\n * Shutdown Exporter.\n */\n public async shutdown(): Promise<void> {\n diag.info(\"QuickpulseMetricExporter shutting down\");\n return Promise.resolve();\n }\n\n /**\n * Select aggregation temporality\n */\n public selectAggregationTemporality(instrumentType: InstrumentType): AggregationTemporality {\n if (\n instrumentType === InstrumentType.UP_DOWN_COUNTER ||\n instrumentType === InstrumentType.OBSERVABLE_UP_DOWN_COUNTER\n ) {\n return AggregationTemporality.CUMULATIVE;\n }\n return AggregationTemporality.DELTA;\n }\n\n /**\n * Force flush\n */\n public async forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * Get Sender\n */\n public getSender(): QuickpulseSender {\n return this.sender;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../../../../../src/metrics/quickpulse/export/sender.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAKL,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,2BAA2B,GAAG,qCAAqC,CAAC;AAE1E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAK3B,YAAY,OAKX;QACC,gEAAgE;QAChE,IAAI,CAAC,uBAAuB,GAAG;YAC7B,IAAI,EAAE,OAAO,CAAC,WAAW;SAC1B,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAErD,IAAI,OAAO,CAAC,UAAU,EAAE;
|
|
1
|
+
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../../../../../src/metrics/quickpulse/export/sender.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAKL,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,2BAA2B,GAAG,qCAAqC,CAAC;AAE1E;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAK3B,YAAY,OAKX;QACC,gEAAgE;QAChE,IAAI,CAAC,uBAAuB,GAAG;YAC7B,IAAI,EAAE,OAAO,CAAC,WAAW;SAC1B,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QAErD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAC7D,uBAAuB;YACvB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,UAAU;gBACV,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,GAAG,CAAC,2BAA2B,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE3E,kCAAkC;QAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,cAAkC;QAC3C,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,cAAkC;QAC3C,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,uBAAuB,CAAC,QAA4B;QAClD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport url from \"url\";\nimport { redirectPolicyName } from \"@azure/core-rest-pipeline\";\nimport {\n PingOptionalParams,\n PingResponse,\n PostOptionalParams,\n PostResponse,\n QuickpulseClient,\n QuickpulseClientOptionalParams,\n} from \"../../../generated\";\nimport { TokenCredential } from \"@azure/core-auth\";\n\nconst applicationInsightsResource = \"https://monitor.azure.com//.default\";\n\n/**\n * Quickpulse sender class\n * @internal\n */\nexport class QuickpulseSender {\n private readonly quickpulseClient: QuickpulseClient;\n private quickpulseClientOptions: QuickpulseClientOptionalParams;\n private instrumentationKey: string;\n\n constructor(options: {\n endpointUrl: string;\n instrumentationKey: string;\n credential?: TokenCredential;\n aadAudience?: string;\n }) {\n // Build endpoint using provided configuration or default values\n this.quickpulseClientOptions = {\n host: options.endpointUrl,\n };\n\n this.instrumentationKey = options.instrumentationKey;\n\n if (options.credential) {\n this.quickpulseClientOptions.credential = options.credential;\n // Add credentialScopes\n if (options.aadAudience) {\n this.quickpulseClientOptions.credentialScopes = [options.aadAudience];\n } else {\n // Default\n this.quickpulseClientOptions.credentialScopes = [applicationInsightsResource];\n }\n }\n this.quickpulseClient = new QuickpulseClient(this.quickpulseClientOptions);\n\n // Handle redirects in HTTP Sender\n this.quickpulseClient.pipeline.removePolicy({ name: redirectPolicyName });\n }\n\n /**\n * Ping Quickpulse service\n * @internal\n */\n async ping(optionalParams: PingOptionalParams): Promise<PingResponse> {\n let response = await this.quickpulseClient.ping(this.instrumentationKey, optionalParams);\n return response;\n }\n\n /**\n * Post Quickpulse service\n * @internal\n */\n async post(optionalParams: PostOptionalParams): Promise<PostResponse> {\n let response = await this.quickpulseClient.post(this.instrumentationKey, optionalParams);\n return response;\n }\n\n handlePermanentRedirect(location: string | undefined) {\n if (location) {\n const locUrl = new url.URL(location);\n if (locUrl && locUrl.host) {\n this.quickpulseClient.host = \"https://\" + locUrl.host;\n }\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveMetrics.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/liveMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as os from \"os\";\nimport {\n MeterProvider,\n MeterProviderOptions,\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { InternalConfig } from \"../../shared/config\";\nimport {\n Histogram,\n Meter,\n ObservableGauge,\n ObservableResult,\n SpanKind,\n ValueType,\n context,\n} from \"@opentelemetry/api\";\nimport { RandomIdGenerator, ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { LogRecord } from \"@opentelemetry/sdk-logs\";\nimport { isExceptionTelemetry } from \"../utils\";\nimport {\n DocumentIngress,\n Exception,\n MonitoringDataPoint,\n PingOptionalParams,\n PingResponse,\n PostResponse,\n RemoteDependency,\n Request,\n Trace,\n} from \"../../generated\";\nimport {\n getCloudRole,\n getCloudRoleInstance,\n getLogDocument,\n getSdkVersion,\n getSpanDocument,\n} from \"./utils\";\nimport { QuickpulseMetricExporter } from \"./export/exporter\";\nimport { QuickpulseSender } from \"./export/sender\";\nimport { ConnectionStringParser } from \"../../utils/connectionStringParser\";\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_LIVEMETRICS_ENDPOINT } from \"../../types\";\nimport { QuickPulseOpenTelemetryMetricNames, QuickpulseExporterOptions } from \"./types\";\nimport { hrTimeToMilliseconds, suppressTracing } from \"@opentelemetry/core\";\n\nconst POST_INTERVAL = 1000;\nconst MAX_POST_WAIT_TIME = 20000;\nconst PING_INTERVAL = 5000;\nconst MAX_PING_WAIT_TIME = 60000;\nconst FALLBACK_INTERVAL = 60000;\n\n/**\n * Azure Monitor Live Metrics\n * @internal\n */\nexport class LiveMetrics {\n private config: InternalConfig;\n private meterProvider: MeterProvider | undefined;\n private metricReader: PeriodicExportingMetricReader | undefined;\n private meter: Meter | undefined;\n private requestDurationHistogram: Histogram | undefined;\n private dependencyDurationHistogram: Histogram | undefined;\n private requestRateGauge: ObservableGauge | undefined;\n private requestFailedRateGauge: ObservableGauge | undefined;\n private dependencyRateGauge: ObservableGauge | undefined;\n private dependencyFailedRateGauge: ObservableGauge | undefined;\n private memoryCommitedGauge: ObservableGauge | undefined;\n private processorTimeGauge: ObservableGauge | undefined;\n private exceptionsRateGauge: ObservableGauge | undefined;\n\n private documents: DocumentIngress[] = [];\n private pingInterval: number;\n private postInterval: number;\n private quickpulseExporter: QuickpulseMetricExporter;\n private pingSender: QuickpulseSender;\n private isCollectingData: boolean;\n private lastSuccessTime: number = Date.now();\n private handle: NodeJS.Timer;\n // Monitoring data point with common properties\n private baseMonitoringDataPoint: MonitoringDataPoint;\n private totalRequestCount = 0;\n private totalFailedRequestCount = 0;\n private totalDependencyCount = 0;\n private totalFailedDependencyCount = 0;\n private totalExceptionCount = 0;\n private lastRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastExceptionRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastCpus:\n | {\n model: string;\n speed: number;\n times: { user: number; nice: number; sys: number; idle: number; irq: number };\n }[]\n | undefined;\n\n /**\n * Initializes a new instance of the StandardMetrics class.\n * @param config - Distro configuration.\n * @param options - Standard Metrics options.\n */\n constructor(config: InternalConfig) {\n this.config = config;\n let idGenerator = new RandomIdGenerator();\n const streamId = idGenerator.generateTraceId();\n const machineName = os.hostname();\n const instance = getCloudRoleInstance(this.config.resource);\n const roleName = getCloudRole(this.config.resource);\n const version = getSdkVersion();\n this.baseMonitoringDataPoint = {\n version: version,\n invariantVersion: 1,\n instance: instance,\n roleName: roleName,\n machineName: machineName,\n streamId: streamId,\n };\n const parsedConnectionString = ConnectionStringParser.parse(\n this.config.azureMonitorExporterOptions.connectionString,\n );\n this.pingSender = new QuickpulseSender({\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || DEFAULT_BREEZE_ENDPOINT,\n });\n let exporterOptions: QuickpulseExporterOptions = {\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || DEFAULT_BREEZE_ENDPOINT,\n postCallback: this.quickPulseDone.bind(this),\n getDocumentsFn: this.getDocuments.bind(this),\n baseMonitoringDataPoint: this.baseMonitoringDataPoint,\n };\n this.quickpulseExporter = new QuickpulseMetricExporter(exporterOptions);\n this.isCollectingData = false;\n this.pingInterval = PING_INTERVAL; // Default\n this.postInterval = POST_INTERVAL;\n this.handle = <any>setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref(); // Don't block apps from terminating\n }\n\n public shutdown() {\n this.meterProvider?.shutdown();\n }\n\n private async goQuickpulse() {\n if (!this.isCollectingData) {\n // If not collecting, Ping\n try {\n let params: PingOptionalParams = {\n xMsQpsTransmissionTime: Date.now(),\n monitoringDataPoint: this.baseMonitoringDataPoint,\n };\n await context.with(suppressTracing(context.active()), async () => {\n let response = await this.pingSender.ping(params);\n this.quickPulseDone(response);\n });\n } catch (error) {\n this.quickPulseDone(undefined);\n }\n this.handle = <any>setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n if (this.isCollectingData) {\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n\n private async quickPulseDone(response: PostResponse | PingResponse | undefined) {\n if (!response) {\n if (!this.isCollectingData) {\n if (Date.now() - this.lastSuccessTime >= MAX_PING_WAIT_TIME) {\n this.pingInterval = FALLBACK_INTERVAL;\n }\n } else {\n if (Date.now() - this.lastSuccessTime >= MAX_POST_WAIT_TIME) {\n this.postInterval = FALLBACK_INTERVAL;\n this.deactivateMetrics();\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n } else {\n this.postInterval = POST_INTERVAL;\n // Update using response if needed\n this.lastSuccessTime = Date.now();\n this.isCollectingData =\n response.xMsQpsSubscribed && response.xMsQpsSubscribed === \"true\" ? true : false;\n\n // If collecting was stoped\n if (!this.isCollectingData && this.meterProvider) {\n this.deactivateMetrics();\n this.handle = <any>setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n\n this.pingSender.handlePermanentRedirect(response.xMsQpsServiceEndpointRedirectV2);\n this.quickpulseExporter\n .getSender()\n .handlePermanentRedirect(response.xMsQpsServiceEndpointRedirectV2);\n if (response.xMsQpsServicePollingIntervalHint) {\n this.pingInterval = Number(response.xMsQpsServicePollingIntervalHint);\n } else {\n this.pingInterval = PING_INTERVAL;\n }\n }\n }\n\n // Activate live metrics collection\n public activateMetrics(options?: { collectionInterval: number }) {\n if (this.meterProvider) {\n return;\n }\n this.lastCpus = os.cpus();\n this.totalDependencyCount = 0;\n this.totalExceptionCount = 0;\n this.totalFailedDependencyCount = 0;\n this.totalFailedRequestCount = 0;\n this.totalRequestCount = 0;\n this.lastRequestRate = { count: 0, time: 0 };\n this.lastFailedRequestRate = { count: 0, time: 0 };\n this.lastDependencyRate = { count: 0, time: 0 };\n this.lastFailedDependencyRate = { count: 0, time: 0 };\n this.lastExceptionRate = { count: 0, time: 0 };\n\n const meterProviderConfig: MeterProviderOptions = {\n resource: this.config.resource,\n };\n this.meterProvider = new MeterProvider(meterProviderConfig);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.quickpulseExporter,\n exportIntervalMillis: options?.collectionInterval,\n };\n this.metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n this.meterProvider.addMetricReader(this.metricReader);\n this.meter = this.meterProvider.getMeter(\"AzureMonitorLiveMetricsMeter\");\n\n this.requestDurationHistogram = this.meter.createHistogram(\n QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyDurationHistogram = this.meter.createHistogram(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.requestRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.requestFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.memoryCommitedGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.COMMITTED_BYTES,\n {\n valueType: ValueType.INT,\n },\n );\n\n this.processorTimeGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.exceptionsRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.requestRateGauge.addCallback(this.getRequestRate.bind(this));\n this.requestFailedRateGauge.addCallback(this.getRequestFailedRate.bind(this));\n this.dependencyRateGauge.addCallback(this.getDependencyRate.bind(this));\n this.dependencyFailedRateGauge.addCallback(this.getDependencyFailedRate.bind(this));\n this.exceptionsRateGauge.addCallback(this.getExceptionRate.bind(this));\n this.memoryCommitedGauge.addCallback(this.getCommitedMemory.bind(this));\n this.processorTimeGauge.addCallback(this.getProcessorTime.bind(this));\n }\n\n /**\n * Deactivate metric collection\n */\n public deactivateMetrics() {\n this.documents = [];\n this.meterProvider?.shutdown();\n this.meterProvider = undefined;\n }\n\n /**\n * Force flush Meter Provider.\n */\n public async flush(): Promise<void> {\n await this.meterProvider?.forceFlush();\n }\n\n /**\n *Get OpenTelemetry MeterProvider\n */\n public getMeterProvider(): MeterProvider | undefined {\n return this.meterProvider;\n }\n\n public getDocuments(): DocumentIngress[] {\n return this.documents;\n }\n\n private addDocument(document: DocumentIngress) {\n if (document) {\n // Limit risk of memory leak by limiting doc length to something manageable\n if (this.documents.length > 20) {\n this.documents.shift(); // Remove oldest document\n }\n this.documents.push(document);\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n if (this.isCollectingData) {\n // Add document and calculate metrics\n let document: Request | RemoteDependency = getSpanDocument(span);\n this.addDocument(document);\n const durationMs = hrTimeToMilliseconds(span.duration);\n const statusCode = String(span.attributes[\"http.status_code\"]);\n let success = statusCode === \"200\" ? true : false;\n\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n if (success) {\n this.totalRequestCount++;\n } else {\n this.totalFailedRequestCount++;\n }\n this.requestDurationHistogram?.record(durationMs);\n } else {\n if (success) {\n this.totalDependencyCount++;\n } else {\n this.totalFailedDependencyCount++;\n }\n this.dependencyDurationHistogram?.record(durationMs);\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n this.totalExceptionCount++;\n }\n });\n }\n }\n }\n\n /**\n * Record LogRecord metrics, add attribute so data is not aggregated again in ingestion\n * @internal\n */\n public recordLog(logRecord: LogRecord): void {\n if (this.isCollectingData) {\n let document: Trace | Exception = getLogDocument(logRecord);\n this.addDocument(document);\n if (isExceptionTelemetry(logRecord)) {\n this.totalExceptionCount++;\n }\n }\n }\n\n private getRequestRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalRequests = this.totalRequestCount - this.lastRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastRequestRate = {\n count: this.totalRequestCount,\n time: currentTime,\n };\n }\n\n private getRequestFailedRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalRequests = this.totalFailedRequestCount - this.lastFailedRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedRequestRate = {\n count: this.totalFailedRequestCount,\n time: currentTime,\n };\n }\n\n private getDependencyRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalData = this.totalDependencyCount - this.lastDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastDependencyRate = {\n count: this.totalDependencyCount,\n time: currentTime,\n };\n }\n\n private getDependencyFailedRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalData = this.totalFailedDependencyCount - this.lastFailedDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedDependencyRate = {\n count: this.totalFailedDependencyCount,\n time: currentTime,\n };\n }\n\n private getExceptionRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalData = this.totalExceptionCount - this.lastExceptionRate.count || 0;\n const elapsedMs = currentTime - this.lastExceptionRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastExceptionRate = {\n count: this.totalExceptionCount,\n time: currentTime,\n };\n }\n\n private getCommitedMemory(observableResult: ObservableResult) {\n var freeMem = os.freemem();\n var committedMemory = os.totalmem() - freeMem;\n observableResult.observe(committedMemory);\n }\n\n private getTotalCombinedCpu(cpus: os.CpuInfo[], lastCpus: os.CpuInfo[]) {\n let totalUser = 0;\n let totalSys = 0;\n let totalNice = 0;\n let totalIdle = 0;\n let totalIrq = 0;\n for (let i = 0; !!cpus && i < cpus.length; i++) {\n const cpu = cpus[i];\n const lastCpu = lastCpus[i];\n const times = cpu.times;\n const lastTimes = lastCpu.times;\n // user cpu time (or) % CPU time spent in user space\n let user = times.user - lastTimes.user;\n user = user > 0 ? user : 0; // Avoid negative values\n totalUser += user;\n // system cpu time (or) % CPU time spent in kernel space\n let sys = times.sys - lastTimes.sys;\n sys = sys > 0 ? sys : 0; // Avoid negative values\n totalSys += sys;\n // user nice cpu time (or) % CPU time spent on low priority processes\n let nice = times.nice - lastTimes.nice;\n nice = nice > 0 ? nice : 0; // Avoid negative values\n totalNice += nice;\n // idle cpu time (or) % CPU time spent idle\n let idle = times.idle - lastTimes.idle;\n idle = idle > 0 ? idle : 0; // Avoid negative values\n totalIdle += idle;\n // irq (or) % CPU time spent servicing/handling hardware interrupts\n let irq = times.irq - lastTimes.irq;\n irq = irq > 0 ? irq : 0; // Avoid negative values\n totalIrq += irq;\n }\n const combinedTotal = totalUser + totalSys + totalNice + totalIdle + totalIrq;\n return {\n combinedTotal: combinedTotal,\n totalUser: totalUser,\n totalIdle: totalIdle,\n };\n }\n\n private getProcessorTime(observableResult: ObservableResult) {\n // this reports total ms spent in each category since the OS was booted, to calculate percent it is necessary\n // to find the delta since the last measurement\n const cpus = os.cpus();\n if (cpus && cpus.length && this.lastCpus && cpus.length === this.lastCpus.length) {\n const cpuTotals = this.getTotalCombinedCpu(cpus, this.lastCpus);\n\n const value =\n cpuTotals.combinedTotal > 0\n ? ((cpuTotals.combinedTotal - cpuTotals.totalIdle) / cpuTotals.combinedTotal) * 100\n : 0;\n observableResult.observe(value);\n }\n this.lastCpus = cpus;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"liveMetrics.js","sourceRoot":"","sources":["../../../../src/metrics/quickpulse/liveMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as os from \"os\";\nimport {\n MeterProvider,\n MeterProviderOptions,\n PeriodicExportingMetricReader,\n PeriodicExportingMetricReaderOptions,\n} from \"@opentelemetry/sdk-metrics\";\nimport { InternalConfig } from \"../../shared/config\";\nimport {\n Histogram,\n Meter,\n ObservableGauge,\n ObservableResult,\n SpanKind,\n ValueType,\n context,\n} from \"@opentelemetry/api\";\nimport { RandomIdGenerator, ReadableSpan, TimedEvent } from \"@opentelemetry/sdk-trace-base\";\nimport { LogRecord } from \"@opentelemetry/sdk-logs\";\nimport { isExceptionTelemetry } from \"../utils\";\nimport {\n DocumentIngress,\n Exception,\n MonitoringDataPoint,\n PingOptionalParams,\n PingResponse,\n PostResponse,\n RemoteDependency,\n Request,\n Trace,\n} from \"../../generated\";\nimport {\n getCloudRole,\n getCloudRoleInstance,\n getLogDocument,\n getSdkVersion,\n getSpanDocument,\n} from \"./utils\";\nimport { QuickpulseMetricExporter } from \"./export/exporter\";\nimport { QuickpulseSender } from \"./export/sender\";\nimport { ConnectionStringParser } from \"../../utils/connectionStringParser\";\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_LIVEMETRICS_ENDPOINT } from \"../../types\";\nimport { QuickPulseOpenTelemetryMetricNames, QuickpulseExporterOptions } from \"./types\";\nimport { hrTimeToMilliseconds, suppressTracing } from \"@opentelemetry/core\";\n\nconst POST_INTERVAL = 1000;\nconst MAX_POST_WAIT_TIME = 20000;\nconst PING_INTERVAL = 5000;\nconst MAX_PING_WAIT_TIME = 60000;\nconst FALLBACK_INTERVAL = 60000;\n\n/**\n * Azure Monitor Live Metrics\n * @internal\n */\nexport class LiveMetrics {\n private config: InternalConfig;\n private meterProvider: MeterProvider | undefined;\n private metricReader: PeriodicExportingMetricReader | undefined;\n private meter: Meter | undefined;\n private requestDurationHistogram: Histogram | undefined;\n private dependencyDurationHistogram: Histogram | undefined;\n private requestRateGauge: ObservableGauge | undefined;\n private requestFailedRateGauge: ObservableGauge | undefined;\n private dependencyRateGauge: ObservableGauge | undefined;\n private dependencyFailedRateGauge: ObservableGauge | undefined;\n private memoryCommitedGauge: ObservableGauge | undefined;\n private processorTimeGauge: ObservableGauge | undefined;\n private exceptionsRateGauge: ObservableGauge | undefined;\n\n private documents: DocumentIngress[] = [];\n private pingInterval: number;\n private postInterval: number;\n private quickpulseExporter: QuickpulseMetricExporter;\n private pingSender: QuickpulseSender;\n private isCollectingData: boolean;\n private lastSuccessTime: number = Date.now();\n private handle: NodeJS.Timer;\n // Monitoring data point with common properties\n private baseMonitoringDataPoint: MonitoringDataPoint;\n private totalRequestCount = 0;\n private totalFailedRequestCount = 0;\n private totalDependencyCount = 0;\n private totalFailedDependencyCount = 0;\n private totalExceptionCount = 0;\n private lastRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedRequestRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastFailedDependencyRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastExceptionRate: { count: number; time: number } = { count: 0, time: 0 };\n private lastCpus:\n | {\n model: string;\n speed: number;\n times: { user: number; nice: number; sys: number; idle: number; irq: number };\n }[]\n | undefined;\n\n /**\n * Initializes a new instance of the StandardMetrics class.\n * @param config - Distro configuration.\n * @param options - Standard Metrics options.\n */\n constructor(config: InternalConfig) {\n this.config = config;\n let idGenerator = new RandomIdGenerator();\n const streamId = idGenerator.generateTraceId();\n const machineName = os.hostname();\n const instance = getCloudRoleInstance(this.config.resource);\n const roleName = getCloudRole(this.config.resource);\n const version = getSdkVersion();\n this.baseMonitoringDataPoint = {\n version: version,\n invariantVersion: 1,\n instance: instance,\n roleName: roleName,\n machineName: machineName,\n streamId: streamId,\n };\n const parsedConnectionString = ConnectionStringParser.parse(\n this.config.azureMonitorExporterOptions.connectionString,\n );\n this.pingSender = new QuickpulseSender({\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || DEFAULT_BREEZE_ENDPOINT,\n });\n let exporterOptions: QuickpulseExporterOptions = {\n endpointUrl: parsedConnectionString.liveendpoint || DEFAULT_LIVEMETRICS_ENDPOINT,\n instrumentationKey: parsedConnectionString.instrumentationkey || DEFAULT_BREEZE_ENDPOINT,\n postCallback: this.quickPulseDone.bind(this),\n getDocumentsFn: this.getDocuments.bind(this),\n baseMonitoringDataPoint: this.baseMonitoringDataPoint,\n };\n this.quickpulseExporter = new QuickpulseMetricExporter(exporterOptions);\n this.isCollectingData = false;\n this.pingInterval = PING_INTERVAL; // Default\n this.postInterval = POST_INTERVAL;\n this.handle = <any>setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref(); // Don't block apps from terminating\n }\n\n public shutdown() {\n this.meterProvider?.shutdown();\n }\n\n private async goQuickpulse() {\n if (!this.isCollectingData) {\n // If not collecting, Ping\n try {\n let params: PingOptionalParams = {\n xMsQpsTransmissionTime: Date.now(),\n monitoringDataPoint: this.baseMonitoringDataPoint,\n };\n await context.with(suppressTracing(context.active()), async () => {\n let response = await this.pingSender.ping(params);\n this.quickPulseDone(response);\n });\n } catch (error) {\n this.quickPulseDone(undefined);\n }\n this.handle = <any>setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n if (this.isCollectingData) {\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n\n private async quickPulseDone(response: PostResponse | PingResponse | undefined) {\n if (!response) {\n if (!this.isCollectingData) {\n if (Date.now() - this.lastSuccessTime >= MAX_PING_WAIT_TIME) {\n this.pingInterval = FALLBACK_INTERVAL;\n }\n } else {\n if (Date.now() - this.lastSuccessTime >= MAX_POST_WAIT_TIME) {\n this.postInterval = FALLBACK_INTERVAL;\n this.deactivateMetrics();\n this.activateMetrics({ collectionInterval: this.postInterval });\n }\n }\n } else {\n this.postInterval = POST_INTERVAL;\n // Update using response if needed\n this.lastSuccessTime = Date.now();\n this.isCollectingData =\n response.xMsQpsSubscribed && response.xMsQpsSubscribed === \"true\" ? true : false;\n\n // If collecting was stoped\n if (!this.isCollectingData && this.meterProvider) {\n this.deactivateMetrics();\n this.handle = <any>setTimeout(this.goQuickpulse.bind(this), this.pingInterval);\n this.handle.unref();\n }\n\n this.pingSender.handlePermanentRedirect(response.xMsQpsServiceEndpointRedirectV2);\n this.quickpulseExporter\n .getSender()\n .handlePermanentRedirect(response.xMsQpsServiceEndpointRedirectV2);\n if (response.xMsQpsServicePollingIntervalHint) {\n this.pingInterval = Number(response.xMsQpsServicePollingIntervalHint);\n } else {\n this.pingInterval = PING_INTERVAL;\n }\n }\n }\n\n // Activate live metrics collection\n public activateMetrics(options?: { collectionInterval: number }) {\n if (this.meterProvider) {\n return;\n }\n this.lastCpus = os.cpus();\n this.totalDependencyCount = 0;\n this.totalExceptionCount = 0;\n this.totalFailedDependencyCount = 0;\n this.totalFailedRequestCount = 0;\n this.totalRequestCount = 0;\n this.lastRequestRate = { count: 0, time: 0 };\n this.lastFailedRequestRate = { count: 0, time: 0 };\n this.lastDependencyRate = { count: 0, time: 0 };\n this.lastFailedDependencyRate = { count: 0, time: 0 };\n this.lastExceptionRate = { count: 0, time: 0 };\n\n const meterProviderConfig: MeterProviderOptions = {\n resource: this.config.resource,\n };\n this.meterProvider = new MeterProvider(meterProviderConfig);\n const metricReaderOptions: PeriodicExportingMetricReaderOptions = {\n exporter: this.quickpulseExporter,\n exportIntervalMillis: options?.collectionInterval,\n };\n this.metricReader = new PeriodicExportingMetricReader(metricReaderOptions);\n this.meterProvider.addMetricReader(this.metricReader);\n this.meter = this.meterProvider.getMeter(\"AzureMonitorLiveMetricsMeter\");\n\n this.requestDurationHistogram = this.meter.createHistogram(\n QuickPulseOpenTelemetryMetricNames.REQUEST_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyDurationHistogram = this.meter.createHistogram(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_DURATION,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.requestRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.requestFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.REQUEST_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.dependencyFailedRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.DEPENDENCY_FAILURE_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.memoryCommitedGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.COMMITTED_BYTES,\n {\n valueType: ValueType.INT,\n },\n );\n\n this.processorTimeGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.PROCESSOR_TIME,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n this.exceptionsRateGauge = this.meter.createObservableGauge(\n QuickPulseOpenTelemetryMetricNames.EXCEPTION_RATE,\n {\n valueType: ValueType.DOUBLE,\n },\n );\n\n this.requestRateGauge.addCallback(this.getRequestRate.bind(this));\n this.requestFailedRateGauge.addCallback(this.getRequestFailedRate.bind(this));\n this.dependencyRateGauge.addCallback(this.getDependencyRate.bind(this));\n this.dependencyFailedRateGauge.addCallback(this.getDependencyFailedRate.bind(this));\n this.exceptionsRateGauge.addCallback(this.getExceptionRate.bind(this));\n this.memoryCommitedGauge.addCallback(this.getCommitedMemory.bind(this));\n this.processorTimeGauge.addCallback(this.getProcessorTime.bind(this));\n }\n\n /**\n * Deactivate metric collection\n */\n public deactivateMetrics() {\n this.documents = [];\n this.meterProvider?.shutdown();\n this.meterProvider = undefined;\n }\n\n /**\n * Force flush Meter Provider.\n */\n public async flush(): Promise<void> {\n await this.meterProvider?.forceFlush();\n }\n\n /**\n *Get OpenTelemetry MeterProvider\n */\n public getMeterProvider(): MeterProvider | undefined {\n return this.meterProvider;\n }\n\n public getDocuments(): DocumentIngress[] {\n return this.documents;\n }\n\n private addDocument(document: DocumentIngress) {\n if (document) {\n // Limit risk of memory leak by limiting doc length to something manageable\n if (this.documents.length > 20) {\n this.documents.shift(); // Remove oldest document\n }\n this.documents.push(document);\n }\n }\n\n /**\n * Record Span metrics\n * @internal\n */\n public recordSpan(span: ReadableSpan): void {\n if (this.isCollectingData) {\n // Add document and calculate metrics\n let document: Request | RemoteDependency = getSpanDocument(span);\n this.addDocument(document);\n const durationMs = hrTimeToMilliseconds(span.duration);\n const statusCode = String(span.attributes[\"http.status_code\"]);\n let success = statusCode === \"200\" ? true : false;\n\n if (span.kind === SpanKind.SERVER || span.kind === SpanKind.CONSUMER) {\n if (success) {\n this.totalRequestCount++;\n } else {\n this.totalFailedRequestCount++;\n }\n this.requestDurationHistogram?.record(durationMs);\n } else {\n if (success) {\n this.totalDependencyCount++;\n } else {\n this.totalFailedDependencyCount++;\n }\n this.dependencyDurationHistogram?.record(durationMs);\n }\n if (span.events) {\n span.events.forEach((event: TimedEvent) => {\n event.attributes = event.attributes || {};\n if (event.name === \"exception\") {\n this.totalExceptionCount++;\n }\n });\n }\n }\n }\n\n /**\n * Record LogRecord metrics, add attribute so data is not aggregated again in ingestion\n * @internal\n */\n public recordLog(logRecord: LogRecord): void {\n if (this.isCollectingData) {\n let document: Trace | Exception = getLogDocument(logRecord);\n this.addDocument(document);\n if (isExceptionTelemetry(logRecord)) {\n this.totalExceptionCount++;\n }\n }\n }\n\n private getRequestRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalRequests = this.totalRequestCount - this.lastRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastRequestRate = {\n count: this.totalRequestCount,\n time: currentTime,\n };\n }\n\n private getRequestFailedRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalRequests = this.totalFailedRequestCount - this.lastFailedRequestRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedRequestRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalRequests / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedRequestRate = {\n count: this.totalFailedRequestCount,\n time: currentTime,\n };\n }\n\n private getDependencyRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalData = this.totalDependencyCount - this.lastDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastDependencyRate = {\n count: this.totalDependencyCount,\n time: currentTime,\n };\n }\n\n private getDependencyFailedRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalData = this.totalFailedDependencyCount - this.lastFailedDependencyRate.count || 0;\n const elapsedMs = currentTime - this.lastFailedDependencyRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastFailedDependencyRate = {\n count: this.totalFailedDependencyCount,\n time: currentTime,\n };\n }\n\n private getExceptionRate(observableResult: ObservableResult) {\n const currentTime = +new Date();\n const intervalData = this.totalExceptionCount - this.lastExceptionRate.count || 0;\n const elapsedMs = currentTime - this.lastExceptionRate.time;\n if (elapsedMs > 0) {\n const elapsedSeconds = elapsedMs / 1000;\n const dataPerSec = intervalData / elapsedSeconds;\n observableResult.observe(dataPerSec);\n }\n this.lastExceptionRate = {\n count: this.totalExceptionCount,\n time: currentTime,\n };\n }\n\n private getCommitedMemory(observableResult: ObservableResult) {\n var freeMem = os.freemem();\n var committedMemory = os.totalmem() - freeMem;\n observableResult.observe(committedMemory);\n }\n\n private getTotalCombinedCpu(cpus: os.CpuInfo[], lastCpus: os.CpuInfo[]) {\n let totalUser = 0;\n let totalSys = 0;\n let totalNice = 0;\n let totalIdle = 0;\n let totalIrq = 0;\n for (let i = 0; !!cpus && i < cpus.length; i++) {\n const cpu = cpus[i];\n const lastCpu = lastCpus[i];\n const times = cpu.times;\n const lastTimes = lastCpu.times;\n // user cpu time (or) % CPU time spent in user space\n let user = times.user - lastTimes.user;\n user = user > 0 ? user : 0; // Avoid negative values\n totalUser += user;\n // system cpu time (or) % CPU time spent in kernel space\n let sys = times.sys - lastTimes.sys;\n sys = sys > 0 ? sys : 0; // Avoid negative values\n totalSys += sys;\n // user nice cpu time (or) % CPU time spent on low priority processes\n let nice = times.nice - lastTimes.nice;\n nice = nice > 0 ? nice : 0; // Avoid negative values\n totalNice += nice;\n // idle cpu time (or) % CPU time spent idle\n let idle = times.idle - lastTimes.idle;\n idle = idle > 0 ? idle : 0; // Avoid negative values\n totalIdle += idle;\n // irq (or) % CPU time spent servicing/handling hardware interrupts\n let irq = times.irq - lastTimes.irq;\n irq = irq > 0 ? irq : 0; // Avoid negative values\n totalIrq += irq;\n }\n const combinedTotal = totalUser + totalSys + totalNice + totalIdle + totalIrq;\n return {\n combinedTotal: combinedTotal,\n totalUser: totalUser,\n totalIdle: totalIdle,\n };\n }\n\n private getProcessorTime(observableResult: ObservableResult) {\n // this reports total ms spent in each category since the OS was booted, to calculate percent it is necessary\n // to find the delta since the last measurement\n const cpus = os.cpus();\n if (cpus && cpus.length && this.lastCpus && cpus.length === this.lastCpus.length) {\n const cpuTotals = this.getTotalCombinedCpu(cpus, this.lastCpus);\n\n const value =\n cpuTotals.combinedTotal > 0\n ? ((cpuTotals.combinedTotal - cpuTotals.totalIdle) / cpuTotals.combinedTotal) * 100\n : 0;\n observableResult.observe(value);\n }\n this.lastCpus = cpus;\n }\n}\n"]}
|