Backward compatibility functions and setup methods for migrating from Application Insights 2.x. These functions provide the traditional initialization pattern while leveraging the modern OpenTelemetry-based implementation underneath.
Traditional setup pattern compatible with Application Insights 2.x code.
/**
* Initializes the default client with connection string or instrumentation key
* @param setupString - Connection string or instrumentation key (optional, reads from environment if not provided)
* @returns Configuration class for method chaining
*/
function setup(setupString?: string): typeof Configuration;
/**
* Starts automatic collection of telemetry
* @returns Configuration class for method chaining
*/
function start(): typeof Configuration;
/**
* Disposes the default client and all auto collectors
* Allows reinitialization with different configuration
*/
function dispose(): void;Usage Examples:
const appInsights = require("applicationinsights");
// Traditional setup with connection string
appInsights
.setup("InstrumentationKey=12345678-1234-1234-1234-123456789abc;IngestionEndpoint=...")
.start();
// Setup with environment variable
appInsights
.setup() // Reads APPLICATIONINSIGHTS_CONNECTION_STRING
.start();
// Dispose and reinitialize
appInsights.dispose();
appInsights
.setup("new-connection-string")
.start();Access to the global default telemetry client instance.
/**
* The default client, initialized when setup was called
* Use this for manual telemetry tracking with the default configuration
*/
let defaultClient: TelemetryClient;Usage Examples:
const appInsights = require("applicationinsights");
// Initialize
appInsights.setup().start();
// Use default client for tracking
appInsights.defaultClient.trackEvent({
name: "UserAction",
properties: { action: "button-click" }
});
appInsights.defaultClient.trackTrace({
message: "Application started",
severity: appInsights.Contracts.SeverityLevel.Information
});Access to all telemetry contract types and enums for backward compatibility.
/**
* All telemetry contract types and interfaces
*/
export const Contracts: {
AvailabilityTelemetry: typeof AvailabilityTelemetry;
TraceTelemetry: typeof TraceTelemetry;
ExceptionTelemetry: typeof ExceptionTelemetry;
EventTelemetry: typeof EventTelemetry;
PageViewTelemetry: typeof PageViewTelemetry;
RequestTelemetry: typeof RequestTelemetry;
DependencyTelemetry: typeof DependencyTelemetry;
MetricTelemetry: typeof MetricTelemetry;
Telemetry: typeof Telemetry;
TelemetryType: typeof TelemetryType;
SeverityLevel: typeof SeverityLevel;
};
/**
* Distributed tracing modes
*/
export const DistributedTracingModes: {
AI: 0;
AI_AND_W3C: 1;
};
/**
* HTTP request interface for context
*/
export const HttpRequest: typeof HttpRequest;Usage Examples:
const appInsights = require("applicationinsights");
// Use contract types
appInsights.defaultClient.trackTrace({
message: "Debug information",
severity: appInsights.Contracts.SeverityLevel.Verbose,
properties: { component: "auth-service" }
});
appInsights.defaultClient.trackException({
exception: new Error("Something went wrong"),
severity: appInsights.Contracts.SeverityLevel.Error
});
// Check telemetry types
if (telemetryType === appInsights.Contracts.TelemetryType.Event) {
// Handle event telemetry
}Chain configuration methods using the traditional Application Insights 2.x pattern.
/**
* Traditional fluent configuration pattern
*/
interface FluentConfiguration {
setup(setupString?: string): typeof Configuration;
setAutoCollectRequests(value: boolean): typeof Configuration;
setAutoCollectPerformance(value: boolean, collectExtendedMetrics?: any): typeof Configuration;
setAutoCollectExceptions(value: boolean): typeof Configuration;
setAutoCollectDependencies(value: boolean): typeof Configuration;
setAutoCollectConsole(value: boolean, collectConsoleLog?: boolean): typeof Configuration;
setAutoCollectPreAggregatedMetrics(value: boolean): typeof Configuration;
setAutoCollectHeartbeat(value: boolean): typeof Configuration;
setUseDiskRetryCaching(value: boolean, resendInterval?: number, maxBytesOnDisk?: number): typeof Configuration;
setAutoDependencyCorrelation(value: boolean, useAsyncHooks?: boolean): typeof Configuration;
setInternalLogging(enableDebugLogger?: boolean, enableWarningLogger?: boolean): typeof Configuration;
setSendLiveMetrics(enable?: boolean): typeof Configuration;
enableWebInstrumentation(value: boolean, webSnippetConnectionString?: string): typeof Configuration;
start(): typeof Configuration;
}Usage Examples:
const appInsights = require("applicationinsights");
// Traditional fluent configuration
appInsights
.setup() // Connection string from environment
.setAutoCollectRequests(true)
.setAutoCollectPerformance(true, true)
.setAutoCollectExceptions(true)
.setAutoCollectDependencies(true)
.setAutoDependencyCorrelation(true)
.setAutoCollectConsole(true, false)
.setUseDiskRetryCaching(true)
.setInternalLogging(false, true)
.start();Automatic configuration from environment variables following Application Insights 2.x conventions.
/**
* Supported environment variables:
* - APPLICATIONINSIGHTS_CONNECTION_STRING: Primary connection string
* - APPINSIGHTS_INSTRUMENTATIONKEY: Legacy instrumentation key (deprecated)
*/Usage Examples:
# Environment variables
export APPLICATIONINSIGHTS_CONNECTION_STRING="InstrumentationKey=...;IngestionEndpoint=..."
# Or legacy (deprecated)
export APPINSIGHTS_INSTRUMENTATIONKEY="12345678-1234-1234-1234-123456789abc"// Application code - no connection string needed
const appInsights = require("applicationinsights");
appInsights
.setup() // Automatically reads environment variables
.start();Common patterns for migrating from Application Insights 2.x to 3.x.
Basic Migration:
// Application Insights 2.x
const appInsights = require("applicationinsights");
appInsights.setup().start();
// Application Insights 3.x (no changes needed)
const appInsights = require("applicationinsights");
appInsights.setup().start();Manual Telemetry Migration:
// Application Insights 2.x
appInsights.defaultClient.trackEvent({
name: "UserLogin",
properties: { userId: "123" }
});
// Application Insights 3.x (same API)
appInsights.defaultClient.trackEvent({
name: "UserLogin",
properties: { userId: "123" }
});Configuration Migration:
// Application Insights 2.x
appInsights
.setup()
.setAutoCollectRequests(true)
.setAutoCollectDependencies(true)
.setAutoCollectExceptions(true)
.start();
// Application Insights 3.x (same API)
appInsights
.setup()
.setAutoCollectRequests(true)
.setAutoCollectDependencies(true)
.setAutoCollectExceptions(true)
.start();Features that were available in Application Insights 2.x but are no longer supported in 3.x.
/**
* Deprecated methods that throw errors or log warnings:
*/
// Throws error - not implemented
client.track(telemetry: any, telemetryType: any): never;
client.clearTelemetryProcessors(): never;
client.setUseDiskRetryCaching(): never;
// Logs warning - no-op
client.trackNodeHttpRequestSync(telemetry: any): void;
client.trackNodeHttpRequest(telemetry: any): void;
client.trackNodeHttpDependency(telemetry: any): void;
client.addTelemetryProcessor(processor: any): void;
client.setAutoPopulateAzureProperties(): void;
client.getAuthorizationHandler(config: any): void;
client.getStatsbeat(): any; // Returns nullconst appInsights = require("applicationinsights");
// Traditional Application Insights 2.x style initialization
appInsights
.setup() // Uses APPLICATIONINSIGHTS_CONNECTION_STRING environment variable
.setAutoCollectRequests(true)
.setAutoCollectPerformance(true, true)
.setAutoCollectExceptions(true)
.setAutoCollectDependencies(true)
.setAutoCollectConsole(true, false)
.setAutoCollectPreAggregatedMetrics(true)
.setUseDiskRetryCaching(true, 30000, 50 * 1024 * 1024)
.setAutoDependencyCorrelation(true)
.setSendLiveMetrics(false)
.start();
// Manual telemetry tracking
appInsights.defaultClient.trackEvent({
name: "ApplicationStarted",
properties: {
version: process.env.npm_package_version,
environment: process.env.NODE_ENV
}
});
appInsights.defaultClient.trackTrace({
message: "Application Insights initialized successfully",
severity: appInsights.Contracts.SeverityLevel.Information
});
// Graceful shutdown
process.on('SIGTERM', () => {
appInsights.dispose();
process.exit(0);
});