5. Azure SDK-clientbibliotheek installeren om de web-app te bewaken

In deze stap voegt u de Azure SDK-clientbibliotheek toe aan de code op de virtuele machine om te beginnen met het verzamelen van app-logboeken in de Azure-cloud.

De index.js voor logboekregistratie bewerken met Azure Monitor Application Insights

  1. Gebruik in de SSH-terminal de Nano-teksteditor in de virtuele machine om de te openen.

    sudo nano index.js
    
  2. Bewerk het index.js bestand om de clientbibliotheek en logboekregistratiecode toe te voegen, die hieronder zijn gemarkeerd. Met veel bash-shells kunt u rechtstreeks kopiƫren en plakken in 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. Sla in de SSH-terminal het bestand op in de Nano-editor met besturingselement X. Voer Y in om op te slaan wanneer u hier om wordt gevraagd. Accepteer de bestandsnaam wanneer u hier om wordt gevraagd.

    Wijzigingen in de web-app worden gevolgd door PM2; Door deze wijziging is de app opnieuw opgestart, zonder dat de VM opnieuw moet worden opgestart.

  4. Als u wilt dat PM2 de omgevingsvariabele laadt en deze beschikbaar maakt in de index.js start u PM2 opnieuw op met de volgende opdracht:

    sudo npm run-script restart
    
  5. Test de app in een webbrowser met de nieuwe trace route:

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

    In de browser wordt het antwoord met trace route demo-vm YOUR-CLIENT-IP VM-DATE-TIME uw IP-adres weergegeven.

Het logboek voor NGINX weergeven

De virtuele machine (VM) verzamelt logboeken voor NGINX, die kunnen worden bekeken.

Service Logboeklocatie
NGINX /var/log/nginx/access.log

Bekijk in de SSH-terminal het VM-logboek voor de NGINX-proxyservice met de volgende opdracht om het logboek weer te geven:

cat /var/log/nginx/access.log

Het logboek bevat de aanroep van uw lokale computer.

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

Het logboek voor PM2 weergeven

De virtuele machine verzamelt logboeken voor PM2, die kunnen worden bekeken.

Service Logboeklocatie
PM2 /var/log/pm2.log
  1. Bekijk het VM-logboek voor de PM2-service. Dit is uw Express.js Node-web-app. Gebruik in dezelfde bash-shell de volgende opdracht om het logboek weer te geven:

    cat /var/log/pm2.log
    
  2. Het logboek bevat de aanroep van uw lokale computer.

    grep "Hello world app listening on port 3000!" /var/log/pm2.log
    
  3. Het logboek bevat ook uw omgevingsvariabelen, met inbegrip van uw ApplicationInsights-sleutel, doorgegeven in het npm-startscript. Gebruik de volgende grep-opdracht om te controleren of uw sleutel zich in de omgevingsvariabelen.

    grep APPINSIGHTS_INSTRUMENTATIONKEY /var/log/pm2.log
    

    Hiermee wordt uw PM2-logboek weergegeven APPINSIGHTS_INSTRUMENTATIONKEY met een andere kleur gemarkeerd.

VM-logboekregistratie en logboekregistratie in de cloud

In deze toepassing worden met console.log behulp van de berichten alleen naar de PM2-logboeken op de VM verzonden. Als u de logboeken of de VM verwijdert, verliest u die informatie.

Als u de logboeken buiten de levensduur van uw virtuele machine wilt bewaren, gebruikt u Application Insights.

Problemen oplossen

Als u problemen hebt, gebruikt u de volgende tabel om te begrijpen hoe u het probleem kunt oplossen:

Probleem Oplossing
502 Gateway-fout Dit kan erop wijzen index.js of package.js een fout is opgetreden. Bekijk uw PM2-logboeken /var/log/pm2.log op voor meer informatie. De meest recente fout staat onderaan het bestand. Als u zeker weet dat deze bestanden juist zijn, stopt en start u pm2 met behulp van de npm-scripts in package.json .

Volgende stap