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
Todavía en el terminal SSH, use el editor de texto Nano proporcionado en la máquina virtual para abrir .
sudo nano index.jsEdite el archivo
index.jspara 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()}`) })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.
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 restartEn un explorador web, pruebe la aplicación con la nueva ruta
trace:http://YOUR-VM-PUBLIC-IP-ADDRESS/traceEl explorador muestra la respuesta
trace route demo-vm YOUR-CLIENT-IP VM-DATE-TIMEcon 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 |
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.logEl registro incluye la llamada desde el equipo local.
grep "Hello world app listening on port 3000!" /var/log/pm2.logEl 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.logEsto muestra el registro de PM2 con el valor de
APPINSIGHTS_INSTRUMENTATIONKEYresaltado 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. |