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

  1. Verwenden Sie im SSH-Terminal den auf dem virtuellen Computer bereitgestellten Text-Editor Nano, um index.js zu öffnen.

    sudo nano index.js
    
  2. 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()}`)
    })
    
  3. 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.

  4. 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
    
  5. 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
  1. 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
    
  2. Das Protokoll enthält den Aufruf Ihres lokalen Computers.

    grep "Hello world app listening on port 3000!" /var/log/pm2.log
    
  3. 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.

Nächster Schritt