diff --git a/src/main.ts b/src/main.ts index 82712fc2..63471314 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,11 +13,12 @@ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { AutoCollectLogs } from "./logs/autoCollectLogs"; import { AutoCollectExceptions } from "./logs/exceptions"; -import { AzureMonitorOpenTelemetryOptions } from "./types"; +import { AZURE_MONITOR_STATSBEAT_FEATURES, AzureMonitorOpenTelemetryOptions } from "./types"; import { ApplicationInsightsConfig } from "./shared/configuration/config"; import { LogApi } from "./shim/logsApi"; import { PerformanceCounterMetrics } from "./metrics/performanceCounters"; import { AzureMonitorSpanProcessor } from "./traces/spanProcessor"; +import { StatsbeatFeature, StatsbeatInstrumentation } from "./shim/types"; let autoCollectLogs: AutoCollectLogs; let exceptions: AutoCollectExceptions; @@ -28,6 +29,11 @@ let perfCounters: PerformanceCounterMetrics; * @param options Configuration */ export function useAzureMonitor(options?: AzureMonitorOpenTelemetryOptions) { + // Must set statsbeat features before they are read by the distro + process.env[AZURE_MONITOR_STATSBEAT_FEATURES] = JSON.stringify({ + instrumentation: StatsbeatInstrumentation.NONE, + feature: StatsbeatFeature.SHIM + }); distroUseAzureMonitor(options); const internalConfig = new ApplicationInsightsConfig(options); const logApi = new LogApi(logs.getLogger("ApplicationInsightsLogger")); diff --git a/src/shim/shim-jsonConfig.ts b/src/shim/shim-jsonConfig.ts index a54bfe19..353edec0 100644 --- a/src/shim/shim-jsonConfig.ts +++ b/src/shim/shim-jsonConfig.ts @@ -75,8 +75,6 @@ export class ShimJsonConfig implements IJsonConfig { constructor() { // Load environment variables first this.connectionString = process.env[ENV_connectionString]; - this.proxyHttpUrl = process.env[ENV_http_proxy]; - this.proxyHttpsUrl = process.env[ENV_https_proxy]; this.noDiagnosticChannel = !!process.env[ENV_noDiagnosticChannel]; this.noHttpAgentKeepAlive = !!process.env[ENV_noHttpAgentKeepAlive]; this.noPatchModules = process.env[ENV_noPatchModules] || ""; diff --git a/src/shim/types.ts b/src/shim/types.ts index 91cc73f1..2e3995e0 100644 --- a/src/shim/types.ts +++ b/src/shim/types.ts @@ -330,4 +330,31 @@ export interface IWebInstrumentationConfig { * value provided to replace the default config value above */ value: string | boolean | number; -} \ No newline at end of file +} + +/** + * Statsbeat feature bit flags + */ +export enum StatsbeatFeature { + NONE = 0, + DISK_RETRY = 1, + AAD_HANDLING = 2, + BROWSER_SDK_LOADER = 4, + DISTRO = 8, + LIVE_METRICS = 16, + SHIM = 32, +} + +/** + * Statsbeat instrumentation bit flags + */ +export enum StatsbeatInstrumentation { + NONE = 0, + AZURE_CORE_TRACING = 1, + MONGODB = 2, + MYSQL = 4, + REDIS = 8, + POSTGRES = 16, + BUNYAN = 32, + WINSTON = 64, +} diff --git a/src/types.ts b/src/types.ts index 008fa50e..c236a2de 100644 --- a/src/types.ts +++ b/src/types.ts @@ -9,6 +9,7 @@ import { OTLPExporterNodeConfigBase } from "@opentelemetry/otlp-exporter-base"; export const APPLICATION_INSIGHTS_OPENTELEMETRY_VERSION = "3.1.0"; export const DEFAULT_ROLE_NAME = "Web"; +export const AZURE_MONITOR_STATSBEAT_FEATURES = "AZURE_MONITOR_STATSBEAT_FEATURES"; /** * Azure Monitor OpenTelemetry Options diff --git a/test/unitTests/shim/jsonConfig.tests.ts b/test/unitTests/shim/jsonConfig.tests.ts index 6ab3521f..4c842abc 100644 --- a/test/unitTests/shim/jsonConfig.tests.ts +++ b/test/unitTests/shim/jsonConfig.tests.ts @@ -67,8 +67,6 @@ describe("Json Config", () => { const env = <{ [id: string]: string }>{}; env["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "TestConnectionString"; env["APPLICATION_INSIGHTS_NO_PATCH_MODULES"] = "azuresdk"; - env["http_proxy"] = "testProxyHttpUrl2"; - env["https_proxy"] = "testProxyHttpsUrl2"; env["APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL"] = "disabled"; env["APPLICATION_INSIGHTS_NO_HTTP_AGENT_KEEP_ALIVE"] = "disabled"; env["APPLICATIONINSIGHTS_WEB_INSTRUMENTATION_ENABLED"] = "true"; @@ -77,8 +75,6 @@ describe("Json Config", () => { process.env = env; const config = ShimJsonConfig.getInstance(); assert.equal(config.connectionString, "TestConnectionString"); - assert.equal(config.proxyHttpUrl, "testProxyHttpUrl2"); - assert.equal(config.proxyHttpsUrl, "testProxyHttpsUrl2"); assert.equal(config.noDiagnosticChannel, true, "wrong noDiagnosticChannel"); assert.equal(config.noHttpAgentKeepAlive, true, "wrong noHttpAgentKeepAlive"); assert.equal(config.noPatchModules, "azuresdk");