Even after configuring the Azure AppInsights for Node.js application, I get the NodeClient with properties like enableAutoCollectConsole,enableAutoDependencyCorrelation, etc as undefined. Please tell me what is wrong? Reference link: https://github.com/microsoft/ApplicationInsights-node.js/issues/560
appInsights.defaultClient NodeClient {
_telemetryProcessors: [],
config: Config {
_endpointBase: 'https://dc.services.visualstudio.com',
_connectionString: undefined,
_instrumentationKey: '3e9532',
correlationHeaderExcludedDomains: [
'*.core.windows.net',
'*.core.chinacloudapi.cn',
'*.core.cloudapi.de',
'*.core.usgovcloudapi.net',
'*.core.microsoft.scloud',
'*.core.eaglex.ic.gov'
],
correlationIdRetryIntervalMs: 30000,
disableAllExtendedMetrics: false,
disableAppInsights: false,
disableStatsbeat: false,
distributedTracingMode: undefined,
enableAutoCollectConsole: undefined,
enableLoggerErrorToTrace: undefined,
enableAutoCollectDependencies: undefined,
enableAutoCollectIncomingRequestAzureFunctions: undefined,
enableAutoCollectExceptions: undefined,
enableAutoCollectExtendedMetrics: undefined,
enableAutoCollectExternalLoggers: undefined,
enableAutoCollectHeartbeat: undefined,
enableAutoCollectPerformance: undefined,
enableAutoCollectPreAggregatedMetrics: undefined,
enableAutoCollectRequests: undefined,
enableAutoDependencyCorrelation: undefined,
enableInternalDebugLogging: undefined,
enableInternalWarningLogging: undefined,
enableResendInterval: undefined,
enableMaxBytesOnDisk: undefined,
enableSendLiveMetrics: undefined,
enableUseAsyncHooks: undefined,
enableUseDiskRetryCaching: undefined,
endpointUrl: 'https://centralindia-0.in.applicationinsights.azure.com/v2.1/track',
extendedMetricDisablers: undefined,
ignoreLegacyHeaders: false,
maxBatchIntervalMs: 15000,
maxBatchSize: 250,
proxyHttpUrl: undefined,
proxyHttpsUrl: undefined,
quickPulseHost: 'centralindia.livediagnostics.monitor.azure.com',
samplingPercentage: 100,
enableWebInstrumentation: false,
_webInstrumentationConnectionString: '',
webInstrumentationConfig: null,
webInstrumentationSrc: '',
enableAutoWebSnippetInjection: false,
_profileQueryEndpoint: 'https://centralindia-0.in.applicationinsights.azure.com/',
correlationId: 'cid-v1:'
},
Code: index.js
const express = require('express');
const querystring = require('querystring');
const url = require('url');
const appInsights = require('./appInsightsSetup'); // Import the appInsights setup from the separate file
const app = express();
const port = 3000;
app.get('/', (req, res) => {
console.log("appInsights.defaultClient", appInsights.defaultClient)
// Track the incoming request
appInsights.defaultClient.trackRequest({
name: req.path,
url: req.url,
duration: Date.now() - req.startTime,
resultCode: res.statusCode,
success: true
});
res.send('Hello World!');
});
app.get('/stdout', (req, res) => {
let logStr = querystring.parse(url.parse(req.url).query).log;
// logStr = "logging stdout"
process.stdout.write(logStr + '\n');
console.log('console: ' + logStr + '\n');
// Track the custom event
appInsights.defaultClient.trackEvent({ name: 'stdout', properties: { log: logStr } });
res.send('Received\n');
});
app.get('/stderr', (req, res) => {
let errStr = querystring.parse(url.parse(req.url).query).log;
process.stderr.write(errStr + '\n');
console.log('console: ' + errStr + '\n');
// Track the custom event
appInsights.defaultClient.trackEvent({ name: 'stderr', properties: { log: errStr } });
res.send('Received\n');
});
// Middleware to record request start time
app.use((req, res, next) => {
req.startTime = Date.now();
next();
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
appInsightsSetup.js
const appInsights = require('applicationinsights');
appInsights.setup("InstrumentationKey=;IngestionEndpoint=")
.setAutoDependencyCorrelation(false)
.setAutoCollectRequests(true)
.setAutoCollectPerformance(false)
.setAutoCollectExceptions(false)
.setAutoCollectDependencies(false)
.setAutoCollectConsole(true, true)
.setUseDiskRetryCaching(true)
.setSendLiveMetrics(false)
.setInternalLogging(true)
.start();
module.exports = appInsights;
appInsightsSetup.js:
const appInsights = require('applicationinsights');
// Replace 'YOUR_INSTRUMENTATION_KEY' with your actual Application Insights instrumentation key
const instrumentationKey = '886e0430-1007-4bc';
appInsights.setup(instrumentationKey)
.setAutoDependencyCorrelation(false)
.setAutoCollectRequests(true)
.setAutoCollectPerformance(false)
.setAutoCollectExceptions(false)
.setAutoCollectDependencies(false)
.setAutoCollectConsole(true)
.setUseDiskRetryCaching(true)
.setSendLiveMetrics(false)
.setInternalLogging(true)
.start();
module.exports = appInsights;
index.js /main.js:
const express = require('express');
const querystring = require('querystring');
const url = require('url');
const appInsights = require('./appInsightsSetup');
const app = express();
const port = 3000;
// Middleware to record request start time
app.use((req, res, next) => {
req.startTime = Date.now();
next();
});
app.get('/', (req, res) => {
// Track the incoming request
appInsights.defaultClient.trackRequest({
name: req.path,
url: req.url,
duration: Date.now() - req.startTime,
resultCode: res.statusCode,
success: true
});
res.send('Hello World!');
});
app.get('/stdout', (req, res) => {
let logStr = querystring.parse(url.parse(req.url).query).log;
process.stdout.write(logStr + '\n');
console.log('console: ' + logStr + '\n');
// Track the custom event
appInsights.defaultClient.trackEvent({ name: 'stdout', properties: { log: logStr } });
res.send('Received\n');
});
app.get('/stderr', (req, res) => {
let errStr = querystring.parse(url.parse(req.url).query).log;
process.stderr.write(errStr + '\n');
console.log('console: ' + errStr + '\n');
// Track the custom event
appInsights.defaultClient.trackEvent({ name: 'stderr', properties: { log: errStr } });
res.send('Received\n');
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
Install npm install applicationinsights express querystring url
.
The behavior you're experiencing, where certain properties like enableAutoCollectConsole
and enableAutoDependencyCorrelation
are showing as undefined
in the NodeClient
object, is expected due to the way the applicationinsights
package handles these configurations internally.
The telemetry tracking is working as expected and you are seeing data being collected in the Azure portal, you can rest assured that your setup is functioning correctly, despite the properties appearing as undefined
in the NodeClient
object.
The behavior you are observing is not an issue, and you can proceed with confidence that your Azure AppInsights setup is working as intended. Seeing telemetry data being collected in the Azure portal and your application is functioning correctly, there is no need to be concerned about the undefined
values for these properties in the NodeClient
object.
Output: