node.jsazureloggingappinsights

Configure the Azure AppInsights for Node.js application


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;

Solution

  • 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}!`));
    
    

    Output:

    enter image description here

    enter image description here

    enter image description here

    enter image description here