5. Installera Azure SDK-klientbiblioteket för att övervaka webbappen
I det här steget lägger du till Azure SDK-klientbiblioteket i koden på den virtuella datorn för att börja samla in apploggar i Azure-molnet.
Redigera index.js för loggning med Azure Monitor Application Insights
Fortfarande i SSH-terminalen använder du Nano-textredigeraren som finns på den virtuella datorn för att öppna .
sudo nano index.jsRedigera filen
index.jsför att lägga till klientbiblioteket och loggningskoden, markerade nedan. Med många bash-gränssnitt kan du kopiera och klistra in direkt i 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()}`) })Spara filen i Nano-redigeraren med kontroll X i SSH-terminalen. Ange Y för att spara när du uppmanas att göra det. Acceptera filnamnet när du uppmanas att göra det.
Ändringar i webbappen övervakas av PM2. Den här ändringen orsakade en omstart av appen utan att behöva starta om den virtuella datorn.
Om du vill att PM2 ska läsa in miljövariabeln och ha den tillgänglig i index.js startar du om PM2 med följande kommando:
sudo npm run-script restartTesta appen med den nya vägen i en
tracewebbläsare:http://YOUR-VM-PUBLIC-IP-ADDRESS/traceWebbläsaren visar svaret med
trace route demo-vm YOUR-CLIENT-IP VM-DATE-TIMEdin IP-adress.
Visa loggen för NGINX
Den virtuella datorn (VM) samlar in loggar för NGINX, som är tillgängliga att visa.
| Tjänst | Loggplats |
|---|---|
| NGINX | /var/log/nginx/access.log |
I SSH-terminalen visar du VM-loggen för NGINX-proxytjänsten med följande kommando för att visa loggen:
cat /var/log/nginx/access.log
Loggen innehåller anropet från den lokala datorn.
"GET /trace HTTP/1.1" 200 10 "-"
Visa loggen för PM2
Den virtuella datorn samlar in loggar för PM2, som är tillgängliga för visning.
| Tjänst | Loggplats |
|---|---|
| PM2 | /var/log/pm2.log |
Visa VM-loggen för PM2-tjänsten, som är Express.js Node-webbappen. I samma bash-gränssnitt använder du följande kommando för att visa loggen:
cat /var/log/pm2.logLoggen innehåller anropet från den lokala datorn.
grep "Hello world app listening on port 3000!" /var/log/pm2.logLoggen innehåller även dina miljövariabler, inklusive din ApplicationInsights-nyckel, som skickades i startskriptet för npm. använd följande grep-kommando för att verifiera att nyckeln finns i miljövariablerna.
grep APPINSIGHTS_INSTRUMENTATIONKEY /var/log/pm2.logDå visas PM2-loggen
APPINSIGHTS_INSTRUMENTATIONKEYmed markerad i en annan färg.
VM-loggning och molnloggning
I det här programmet skriver med console.log hjälp av meddelanden till PM2-loggarna som endast finns på den virtuella datorn. Om du tar bort loggarna eller den virtuella datorn förlorar du den informationen.
Om du vill behålla loggarna utöver livslängden för den virtuella datorn använder du Application Insights.
Felsökning
Om du har problem kan du använda följande tabell för att förstå hur du löser problemet:
| Problem | Lösning |
|---|---|
| 502 Gateway-fel | Detta kan tyda på index.js eller package.js fil har ett fel. Mer information finns i DINA /var/log/pm2.log PM2-loggar på. Det senaste felet finns längst ned i filen. Om du är säker på att filerna är korrekta stoppar du och startar PM2 med npm-skripten i package.json . |