5. Web uygulamasını izlemek için Azure SDK istemci kitaplığı 'nı yükler

Bu adımda, Azure bulutu 'nda uygulama günlüklerini toplamaya başlamak için sanal makinedeki koda Azure SDK istemci kitaplığı ekleyin.

Azure izleyici ile günlüğe kaydetme için index.js düzenleme Application Insights

  1. Hala SSH terminalinde, sanal makinede sunulan nano metin düzenleyicisini kullanarak öğesini açın .

    sudo nano index.js
    
  2. index.jsAşağıdaki vurgulanmış şekilde, istemci kitaplığı ve günlük kodu eklemek için dosyayı düzenleyin. Birçok Bash kabukları doğrudan nano 'ya kopyalayıp yapıştırmanıza olanak tanır.

    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. Hala SSH terminalinde, dosyayı ControlX ile Nano düzenleyicide saklayın . İstendiğinde, kaydetmek için Y girin. İstendiğinde dosya adını kabul edin.

    Web uygulamasındaki değişiklikler PM2 tarafından izleniyor; Bu değişiklik, VM 'yi yeniden başlatmaya gerek kalmadan uygulamanın yeniden başlatılmasına neden oldu.

  4. PM2 ortam değişkenini yüklemek ve index.js kullanılabilir olmasını sağlamak için, aşağıdaki komutla PM2 ' yi yeniden başlatın:

    sudo npm run-script restart
    
  5. Bir Web tarayıcısında, uygulamayı yeni rota ile test edin trace :

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

    Tarayıcı, yanıtı trace route demo-vm YOUR-CLIENT-IP VM-DATE-TIME IP adresinizle birlikte görüntüler.

NGıNX için günlüğü görüntüleme

Sanal makine (VM), görüntülemek için kullanılabilen NGıNX için günlükleri toplar.

Hizmet Günlük konumu
NGINX /var/log/Nginx/Access.log

Hala SSH terminalinde, günlüğü görüntülemek için aşağıdaki komutla NGıNX proxy hizmeti için VM günlüğünü görüntüleyin:

cat /var/log/nginx/access.log

Günlük, yerel bilgisayarınızdan gelen çağrıyı içerir.

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

PM2 için günlüğü görüntüleme

Sanal makine, görüntüleme için kullanılabilen PM2 için günlükleri toplar.

Hizmet Günlük konumu
PM2 /var/log/PM2,log
  1. Express.js node Web uygulamanız olan PM2 hizmeti için VM günlüğünü görüntüleyin. Aynı Bash kabuğunda, günlüğü görüntülemek için aşağıdaki komutu kullanın:

    cat /var/log/pm2.log
    
  2. Günlük, yerel bilgisayarınızdan gelen çağrıyı içerir.

    grep "Hello world app listening on port 3000!" /var/log/pm2.log
    
  3. Günlük Ayrıca, NPM başlangıç betiğine geçirilen ApplicationInsights anahtarınız dahil olmak üzere ortam değişkenlerinizi de içerir. anahtarlarınızın ortam değişkenlerinde olduğunu doğrulamak için aşağıdaki grep komutunu kullanın.

    grep APPINSIGHTS_INSTRUMENTATIONKEY /var/log/pm2.log
    

    Bu, PM2 günlüğlerinizi APPINSIGHTS_INSTRUMENTATIONKEY farklı bir renkle vurgulanmış şekilde görüntüler.

VM günlüğü ve bulut günlüğü

Bu uygulamada, kullanarak console.log iletileri yalnızca VM 'de bulunan PM2 günlüklerine yazar. Günlükleri veya VM 'yi silerseniz, bu bilgileri kaybedersiniz.

günlükleri sanal makinenizin kullanım ömrü ötesinde bekletmek istiyorsanız, Application Insights kullanın.

Sorun giderme

Sorunlarınız varsa, sorununuzu nasıl çözebileceğinizi anlamak için aşağıdaki tabloyu kullanın:

Sorun Çözüm
502 ağ geçidi hatası Bu, index.js veya package.js dosyanızda hata olduğunu gösteriyor olabilir. /var/log/pm2.logDaha fazla bilgi IÇIN PM2 günlüklerinizi görüntüleyin. En son hata dosyanın en altında bulunur. Bu dosyaların doğru olduğundan eminseniz, içindeki NPM betiklerini kullanarak PM2 'i durdurup başlatın package.json .

Sonraki adım