in AutoCollection/NativePerformance.ts [55:96]
public enable(isEnabled: boolean, disabledMetrics: IDisabledExtendedMetrics = {}, collectionInterval = 60000): void {
if (!AutoCollectNativePerformance.isNodeVersionCompatible()) {
return;
}
if (AutoCollectNativePerformance._metricsAvailable == undefined && isEnabled && !this._isInitialized) {
// Try to require in the native-metrics library. If it's found initialize it, else do nothing and never try again.
try {
const NativeMetricsEmitters = require("applicationinsights-native-metrics");
AutoCollectNativePerformance._emitter = new NativeMetricsEmitters();
AutoCollectNativePerformance._metricsAvailable = true;
Logging.info("Native metrics module successfully loaded!");
} catch (err) {
// Package not available. Never try again
AutoCollectNativePerformance._metricsAvailable = false;
return;
}
}
this._isEnabled = isEnabled;
this._disabledMetrics = disabledMetrics
if (this._isEnabled && !this._isInitialized) {
this._isInitialized = true;
}
// Enable the emitter if we were able to construct one
if (this._isEnabled && AutoCollectNativePerformance._emitter) {
// enable self
AutoCollectNativePerformance._emitter.enable(true, collectionInterval);
if (!this._handle) {
this._handle = setInterval(() => this._trackNativeMetrics(), collectionInterval);
this._handle.unref();
}
} else if (AutoCollectNativePerformance._emitter) {
// disable self
AutoCollectNativePerformance._emitter.enable(false);
if (this._handle) {
clearInterval(this._handle);
this._handle = undefined;
}
}
}