5. Instalación de la biblioteca cliente del SDK de Azure para supervisar la aplicación web

En este paso agregará la biblioteca cliente del SDK de Azure al código en la máquina virtual para comenzar a recopilar registros de aplicación en la nube de Azure.

Edición del archivo index.js para el registro con Application Insights de Azure Monitor

  1. Todavía en el terminal SSH, use el editor de texto Nano proporcionado en la máquina virtual para abrir .

    sudo nano index.js
    
  2. Edite el archivo index.js para agregar la biblioteca cliente y el código de registro, resaltados a continuación. Muchos shells de Bash permiten copiar y pegar directamente en nano.

    const express = require('express')
    const app = express()
    const os = require('os');
    
    console.log(JSON.stringify(process.env));
    
    const AppInsights = require('applicationinsights');
    
    AppInsights.setup(process.env.APPINSIGHTS_INSTRUMENTATIONKEY)
    .setAutoDependencyCorrelation(true)
    .setAutoCollectRequests(true)
    .setAutoCollectPerformance(true, true)
    .setAutoCollectExceptions(true)
    .setAutoCollectDependencies(true)
    .setAutoCollectConsole(true)
    .setUseDiskRetryCaching(true)
    .setSendLiveMetrics(false)
    .setDistributedTracingMode(AppInsights.DistributedTracingModes.AI)
    .start();
    
    const AppInsightsClient = AppInsights.defaultClient;
    
       
    app.get('/trace', (req, res) => {
    
        const clientIP = req.headers['x-forwarded-for'];
        const msg = `trace route ${os.hostname()} ${clientIP} ${new Date()}`;
    
        console.log(msg)
    
        AppInsightsClient.trackPageView();
        AppInsightsClient.trackTrace({ message: msg})
        AppInsightsClient.flush();
        
        res.send(`${msg}`)
    })
    
    app.get('/', function (req, res) {
    
        const clientIP = req.headers['x-forwarded-for'];
        const msg = `root route ${os.hostname()} ${clientIP} ${new Date()}`
    
        console.log(msg)
    
        res.send(msg)
    
    })
    app.listen(3000, function () {
        console.log(`Hello world app listening on port 3000! ${os.hostname()}`)
    })
    
  3. Todavía en el terminal SSH, guarde el archivo en el editor Nano con el controlX. Escriba Y para guardar cuando se le solicite. Acepte el nombre de archivo cuando se le solicite.

    PM2 vigila los cambios en la aplicación web; este cambio provocó un reinicio de la aplicación, sin tener que reiniciar la máquina virtual.

  4. Para que PM2 cargue la variable de entorno y esté disponible en el archivo index.js, reinicie PM2 con el siguiente comando:

    sudo npm run-script restart
    
  5. En un explorador web, pruebe la aplicación con la nueva ruta trace:

    http://YOUR-VM-PUBLIC-IP-ADDRESS/trace
    

    El explorador muestra la respuesta trace route demo-vm YOUR-CLIENT-IP VM-DATE-TIME con la dirección IP.

Visualización del registro de NGINX

La máquina virtual (VM) recopila los registros de NGINX, que están disponibles para su visualización.

Servicio Ubicación del registro
NGINX /var/log/nginx/access.log

Todavía en el terminal SSH, consulte el registro de la máquina virtual para el servicio de proxy NGINX con el siguiente comando para ver el registro:

cat /var/log/nginx/access.log

El registro incluye la llamada desde el equipo local.

"GET /trace HTTP/1.1" 200 10 "-"

Visualización del registro de PM2

La máquina virtual recopila los registros de PM2, que están disponibles para su visualización.

Servicio Ubicación del registro
PM2 /var/log/pm2.log
  1. Consulte el registro de la máquina virtual para el servicio PM2, que es la aplicación web de Node de Express.js. En el mismo shell de Bash, use el siguiente comando para ver el registro:

    cat /var/log/pm2.log
    
  2. El registro incluye la llamada desde el equipo local.

    grep "Hello world app listening on port 3000!" /var/log/pm2.log
    
  3. El registro también incluye las variables de entorno, incluida la clave de ApplicationInsights, que se pasan en el script de inicio de npm. Utilice el siguiente comando grep para comprobar que la clave está en las variables de entorno.

    grep APPINSIGHTS_INSTRUMENTATIONKEY /var/log/pm2.log
    

    Esto muestra el registro de PM2 con el valor de APPINSIGHTS_INSTRUMENTATIONKEY resaltado en un color diferente.

Registro de máquinas virtuales y registro en la nube

En esta aplicación, el uso de console.log escribe solo los mensajes en los registros de PM2 que se encuentran en la máquina virtual. Si elimina los registros o la máquina virtual, perderá esa información.

Si desea conservar los registros más allá de la duración de la máquina virtual, use Application Insights.

Solución de problemas

Si tiene problemas, use la tabla siguiente para saber cómo resolver el problema:

Problema Resolución
Error de puerta de enlace incorrecta 502 Esto podría indicar que el archivo index.js o package.js tienen un error. Consulte los registros de PM2 en /var/log/pm2.log para más información. El error más reciente se encuentra en la parte inferior del archivo. Si está seguro de que esos archivos son correctos, detenga e inicie PM2 mediante los scripts npm de package.json.

Paso siguiente