Microsoft Application Insights module for comprehensive telemetry and application performance monitoring in Node.js applications
npx @tessl/cli install tessl/npm-applicationinsights@3.9.0Microsoft Application Insights module for comprehensive telemetry and application performance monitoring in Node.js applications. Built on OpenTelemetry standards, it enables automatic collection of distributed traces, metrics, and logs from Node.js services and their external dependencies including databases, caches, and web services.
npm install applicationinsightsFor modern OpenTelemetry-based usage:
import { useAzureMonitor, shutdownAzureMonitor, TelemetryClient, KnownSeverityLevel } from "applicationinsights";For legacy Application Insights 2.x compatibility:
const appInsights = require("applicationinsights");For ES modules with compatibility API:
import * as appInsights from "applicationinsights";import { useAzureMonitor } from "applicationinsights";
// Initialize with connection string from environment variable
useAzureMonitor({
connectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING
});const appInsights = require("applicationinsights");
// Initialize and start automatic collection
appInsights
.setup("YOUR_CONNECTION_STRING")
.setAutoCollectRequests(true)
.setAutoCollectPerformance(true)
.setAutoCollectExceptions(true)
.setAutoCollectDependencies(true)
.start();Application Insights for Node.js is built around several key components:
Primary initialization functions for setting up Application Insights monitoring with OpenTelemetry integration.
function useAzureMonitor(options?: AzureMonitorOpenTelemetryOptions): void;
function shutdownAzureMonitor(): Promise<void>;
function flushAzureMonitor(): Promise<void>;TelemetryClient for manually tracking custom telemetry including traces, events, exceptions, metrics, requests, and dependencies.
class TelemetryClient {
constructor(input?: string);
trackTrace(telemetry: TraceTelemetry): void;
trackEvent(telemetry: EventTelemetry): void;
trackException(telemetry: ExceptionTelemetry): void;
trackMetric(telemetry: MetricTelemetry): void;
trackRequest(telemetry: RequestTelemetry): void;
trackDependency(telemetry: DependencyTelemetry): void;
trackAvailability(telemetry: AvailabilityTelemetry): void;
trackPageView(telemetry: PageViewTelemetry): void;
flush(): Promise<void>;
shutdown(): Promise<void>;
}Configuration class and methods for controlling automatic telemetry collection behaviors.
class Configuration {
static start(): Configuration;
static setAutoCollectRequests(value: boolean): Configuration;
static setAutoCollectDependencies(value: boolean): Configuration;
static setAutoCollectExceptions(value: boolean): Configuration;
static setAutoCollectPerformance(value: boolean, collectExtendedMetrics?: any): Configuration;
static setAutoCollectConsole(value: boolean, collectConsoleLog?: boolean): Configuration;
static setUseDiskRetryCaching(value: boolean, resendInterval?: number, maxBytesOnDisk?: number): Configuration;
}Backward compatibility functions and setup methods for migrating from Application Insights 2.x.
function setup(setupString?: string): Configuration;
function start(): Configuration;
function dispose(): void;
let defaultClient: TelemetryClient;Functions for managing request context and distributed tracing correlation across components.
function getCorrelationContext(): ICorrelationContext;
function startOperation(context: any, request?: any): ICorrelationContext | null;
function wrapWithCorrelationContext<T>(fn: T, context?: ICorrelationContext): T;Comprehensive type definitions for all telemetry data structures including events, traces, exceptions, metrics, requests, dependencies, and availability tests.
interface Telemetry {
time?: Date;
properties?: { [key: string]: any };
}
interface EventTelemetry extends Telemetry {
name: string;
measurements?: { [key: string]: number };
}
interface TraceTelemetry extends Telemetry {
message: string;
severity?: SeverityLevel;
measurements?: { [propertyName: string]: number };
}