5. Installieren der Azure SDK-Clientbibliothek zum Überwachen der Web-App
In diesem Schritt wird dem Code auf dem virtuellen Computer die Azure SDK-Clientbibliothek hinzugefügt, um mit dem Sammeln von App-Protokollen in der Azure-Cloud zu beginnen.
Bearbeiten von „index.js“ für die Protokollierung mit Azure Monitor Application Insights
Verwenden Sie im SSH-Terminal den auf dem virtuellen Computer bereitgestellten Text-Editor Nano, um
index.js
zu öffnen.sudo nano index.js
Bearbeiten Sie die Datei
index.js
, um die Clientbibliothek und den Protokollierungscode hinzuzufügen, wie im Anschluss hervorgehoben. Bei vielen Bash-Shells können Daten kopiert und direkt in Nano eingefügt werden.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()}`) })
Speichern Sie im SSH-Terminal die Datei im Nano-Editor mit STRG + X. Geben Sie bei entsprechender Aufforderung Y zum Speichern ein. Akzeptieren Sie bei entsprechender Aufforderung den Dateinamen.
Änderungen an der Web-App werden von PM2 überwacht. Durch diese Änderung wurde die App neu gestartet, ohne den virtuellen Computer neu starten zu müssen.
Damit PM2 die Umgebungsvariable lädt und in „index.js“ zur Verfügung stellt, starten Sie PM2 mit dem folgenden Befehl neu:
sudo npm run-script restart
Testen Sie die App mit der neuen Route
trace
in einem Webbrowser:http://YOUR-VM-PUBLIC-IP-ADDRESS/trace
Im Browser wird die Antwort
trace route demo-vm YOUR-CLIENT-IP VM-DATE-TIME
mit Ihrer IP-Adresse angezeigt.
Anzeigen des Protokolls für NGINX
Der virtuelle Computer (VM) sammelt Protokolle für NGINX, die zum Anzeigen verfügbar sind.
Dienst | Speicherort des Protokolls |
---|---|
NGINX | /var/log/nginx/access.log |
Zeigen Sie im SSH-Terminal das VM-Protokoll für den NGINX-Proxydienst mit dem folgenden Befehl an, um das Protokoll einzusehen:
cat /var/log/nginx/access.log
Das Protokoll enthält den Aufruf Ihres lokalen Computers.
"GET /trace HTTP/1.1" 200 10 "-"
Anzeigen des Protokolls für PM2
Der virtuelle Computer sammelt Protokolle für PM2, die für die Ansicht verfügbar sind.
Dienst | Speicherort des Protokolls |
---|---|
PM2 | /var/log/pm2.log |
Zeigen Sie das VM-Protokoll für den PM2-Dienst an. Dabei handelt es sich um Ihre Express.js-Node-Web-App. Verwenden Sie in der gleichen Bash-Shell den folgenden Befehl, um das Protokoll anzuzeigen:
cat /var/log/pm2.log
Das Protokoll enthält den Aufruf Ihres lokalen Computers.
grep "Hello world app listening on port 3000!" /var/log/pm2.log
Das Protokoll enthält außerdem Ihre Umgebungsvariablen (einschließlich Ihres ApplicationInsights-Schlüssels), die im npm-Startskript übergeben werden. Verwenden Sie den folgenden grep-Befehl, um zu überprüfen, ob Ihr Schlüssel in den Umgebungsvariablen enthalten ist:
grep APPINSIGHTS_INSTRUMENTATIONKEY /var/log/pm2.log
Dadurch wird Ihr PM2-Protokoll mit dem in einer anderen Farbe hervorgehobenen Instrumentierungsschlüssel (
APPINSIGHTS_INSTRUMENTATIONKEY
) angezeigt.
VM-Protokollierung und Cloudprotokollierung
In dieser Anwendung werden unter Verwendung von console.log
die Nachrichten nur in die auf dem virtuellen Computer gefundenen PM2-Protokolle geschrieben. Wenn Sie die Protokolle oder den virtuellen Computer löschen, gehen diese Informationen verloren.
Wenn Sie die Protokolle über die Lebensdauer Ihres virtuellen Computers hinaus beibehalten möchten, verwenden Sie Application Insights.
Problembehandlung
Verwenden Sie bei Problemen die folgende Tabelle, um zu verstehen, wie Sie Ihr Problem beheben können:
Problem | Lösung |
---|---|
Gatewayfehler 502 | Dieser Fehler kann darauf hindeuten, dass die Datei „index.js“ oder „package.js“ einen Fehler enthält. Weitere Informationen finden Sie in Ihren PM2-Protokollen unter /var/log/pm2.log . Der zuletzt aufgetretene Fehler befindet sich am Ende der Datei. Wenn Sie sicher sind, dass diese Dateien korrekt sind, beenden und starten Sie PM2 mithilfe der npm-Skripts in package.json . |