UNPKG

applicationinsights

Version:

Microsoft Application Insights module for Node.js

118 lines 5.61 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT license. Object.defineProperty(exports, "__esModule", { value: true }); exports.flushAzureMonitor = exports.shutdownAzureMonitor = exports.useAzureMonitor = void 0; const monitor_opentelemetry_1 = require("@azure/monitor-opentelemetry"); const api_1 = require("@opentelemetry/api"); const api_logs_1 = require("@opentelemetry/api-logs"); const sdk_metrics_1 = require("@opentelemetry/sdk-metrics"); const sdk_logs_1 = require("@opentelemetry/sdk-logs"); const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node"); const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http"); const exporter_logs_otlp_http_1 = require("@opentelemetry/exporter-logs-otlp-http"); const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http"); const autoCollectLogs_1 = require("./logs/autoCollectLogs"); const exceptions_1 = require("./logs/exceptions"); const types_1 = require("./types"); const config_1 = require("./shared/configuration/config"); const logsApi_1 = require("./shim/logsApi"); const performanceCounters_1 = require("./metrics/performanceCounters"); const spanProcessor_1 = require("./traces/spanProcessor"); const types_2 = require("./shim/types"); let autoCollectLogs; let exceptions; let perfCounters; /** * Initialize Azure Monitor * @param options Configuration */ function useAzureMonitor(options) { // Must set statsbeat features before they are read by the distro process.env[types_1.AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({ instrumentation: types_2.StatsbeatInstrumentation.NONE, feature: types_2.StatsbeatFeature.SHIM }); (0, monitor_opentelemetry_1.useAzureMonitor)(options); const internalConfig = new config_1.ApplicationInsightsConfig(options); const logApi = new logsApi_1.LogApi(api_logs_1.logs.getLogger("ApplicationInsightsLogger")); autoCollectLogs = new autoCollectLogs_1.AutoCollectLogs(); if (internalConfig.enableAutoCollectExceptions) { exceptions = new exceptions_1.AutoCollectExceptions(logApi); } if (internalConfig.enableAutoCollectPerformance) { try { perfCounters = new performanceCounters_1.PerformanceCounterMetrics(internalConfig); // Add SpanProcessor to calculate Request Metrics if (typeof api_1.trace.getTracerProvider().addSpanProcessor === "function") { api_1.trace.getTracerProvider().addSpanProcessor(new spanProcessor_1.AzureMonitorSpanProcessor(perfCounters)); } } catch (err) { api_1.diag.error("Failed to initialize PerformanceCounterMetrics: ", err); } } autoCollectLogs.enable(internalConfig.instrumentationOptions); _addOtlpExporters(internalConfig); } exports.useAzureMonitor = useAzureMonitor; /** * Shutdown Azure Monitor */ async function shutdownAzureMonitor() { await (0, monitor_opentelemetry_1.shutdownAzureMonitor)(); autoCollectLogs.shutdown(); exceptions === null || exceptions === void 0 ? void 0 : exceptions.shutdown(); perfCounters === null || perfCounters === void 0 ? void 0 : perfCounters.shutdown(); } exports.shutdownAzureMonitor = shutdownAzureMonitor; /** *Try to send all queued telemetry if present. */ async function flushAzureMonitor() { try { await api_1.metrics.getMeterProvider().forceFlush(); await (api_1.trace.getTracerProvider().getDelegate()).forceFlush(); await api_logs_1.logs.getLoggerProvider().forceFlush(); } catch (err) { api_1.diag.error("Failed to flush telemetry", err); } } exports.flushAzureMonitor = flushAzureMonitor; function _addOtlpExporters(internalConfig) { var _a, _b, _c; if ((_a = internalConfig.otlpMetricExporterConfig) === null || _a === void 0 ? void 0 : _a.enabled) { const otlpMetricsExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter(internalConfig.otlpMetricExporterConfig); const otlpMetricReader = new sdk_metrics_1.PeriodicExportingMetricReader({ exporter: otlpMetricsExporter, }); try { api_1.metrics.getMeterProvider().addMetricReader(otlpMetricReader); } catch (err) { api_1.diag.error("Failed to set OTLP Metric Exporter", err); } } if ((_b = internalConfig.otlpLogExporterConfig) === null || _b === void 0 ? void 0 : _b.enabled) { const otlpLogExporter = new exporter_logs_otlp_http_1.OTLPLogExporter(internalConfig.otlpLogExporterConfig); const otlpLogProcessor = new sdk_logs_1.BatchLogRecordProcessor(otlpLogExporter); try { api_logs_1.logs.getLoggerProvider().addLogRecordProcessor(otlpLogProcessor); } catch (err) { api_1.diag.error("Failed to set OTLP Log Exporter", err); } } if ((_c = internalConfig.otlpTraceExporterConfig) === null || _c === void 0 ? void 0 : _c.enabled) { const otlpTraceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter(internalConfig.otlpTraceExporterConfig); const otlpSpanProcessor = new sdk_trace_node_1.BatchSpanProcessor(otlpTraceExporter); try { api_1.trace.getTracerProvider().getDelegate().addSpanProcessor(otlpSpanProcessor); } catch (err) { api_1.diag.error("Failed to set OTLP Trace Exporter", err); } } } //# sourceMappingURL=main.js.map