Memantau sumber daya dan aplikasi Azure Anda

Gunakan Azure Monitor untuk mengumpulkan log, metrik, dan pemberitahuan di seluruh aplikasi JavaScript Anda dan layanan Azure yang bergantung padanya. Azure Monitor adalah layanan platform pusat yang mengumpulkan dan menyimpan telemetri Anda. Anda dapat melengkapi aplikasi Anda dengan Application Insights. Anda harus memantau layanan aplikasi yang dihosting, layanan Azure yang diintegrasikan aplikasi, dan kode sumber aplikasi itu sendiri.

Memahami log, metrik, dan pemberitahuan

Telemetri adalah data yang dikumpulkan dari aplikasi dan layanan Anda untuk memantau kesehatan, performa, dan penggunaannya. Dalam Azure, telemetri dikategorikan ke dalam log, metrik, dan pemberitahuan.

Azure menawarkan empat jenis telemetri:

Jenis telemetri Apa yang diberikannya kepada Anda Tempat menemukannya untuk setiap layanan
Metode pengukuran Numerik, data rangkaian waktu (CPU, memori, dll.) Metrik di portal atau az monitor metrics CLI
Notifikasi Pemberitahuan proaktif saat ambang mencapai Pemberitahuan di portal atau az monitor metrics alert CLI
Catatan Peristiwa dan diagnostik berbasis teks (web, aplikasi) Log Layanan Aplikasi, Pemantauan Fungsi, Diagnostik Aplikasi Kontainer
Log kustom Telemetri aplikasi Anda sendiri melalui App Insights Tabel Log (Penelusuran) dari sumber daya Application Insights Anda

Pilih telemetri yang tepat untuk pertanyaan Anda:

Skenario Gunakan log... Gunakan metrik... Gunakan pemberitahuan...
Apakah aplikasi web saya sudah aktif dan merespons? Log server web App Service (Log) Tidak tersedia Tidak tersedia
Apakah fungsi saya kedaluwarsa atau gagal? Log pemanggilan fungsi (Monitor) Metrik waktu eksekusi fungsi Peringatan pada "Kesalahan Fungsi >0"
Seberapa padat layanan saya dan apakah layanan tersebut dapat ditingkatkan skalanya? Tidak tersedia Throughput/CPU layanan dalam Metrik Pemberitahuan skala otomatis pada CPU% > 70%
"Apa pengecualian yang dilemparkan oleh kode saya?" Log Jejak Kustom di Application Insights Tidak tersedia Pemberitahuan tentang "ServerExceptions >0"
"Apakah saya telah melebihi batas transaksi atau kuota saya?" Tidak tersedia Metrik terkait kuota (Transaksi, Pembatasan laju) Peringatan pada "ThrottlingCount >0"

Pengoptimalan biaya

Anda dapat secara signifikan mengurangi biaya untuk Azure Monitor dengan memahami praktik terbaik untuk opsi konfigurasi dan peluang guna mengurangi jumlah data yang dikumpulkannya.

Mengaktifkan pengelogan dan metrik untuk semua sumber daya Azure

Setiap layanan di Azure memiliki kemampuan pengelogan dan metriknya sendiri. Aktifkan pengelogan pada setiap sumber daya Azure untuk memastikan Anda memiliki telemetri yang Anda butuhkan untuk memantau seluruh aplikasi end to end Anda.

Membuat sumber daya Azure Monitor

Anda dapat membuat sumber daya Azure Monitor untuk mengumpulkan log dan metrik dari sumber daya Azure Anda. Sumber daya ini biasanya merupakan ruang kerja Log Analytics, yang merupakan tempat log dan metrik disimpan.

Anda dapat membuat sumber daya ini dengan beberapa cara:

  • portal Azure: Gunakan portal Azure untuk membuat ruang kerja Log Analytics dan mengonfigurasi pengaturan diagnostik untuk sumber daya Anda.
  • Azure CLI: Gunakan Azure CLI untuk membuat ruang kerja Log Analytics dan mengonfigurasi pengaturan diagnostik untuk sumber daya Anda.
  • PowerShell: Gunakan PowerShell untuk membuat ruang kerja Log Analytics dan mengonfigurasi pengaturan diagnostik untuk sumber daya Anda.
  • Bicep: Gunakan templat Bicep untuk menentukan dan menyebarkan sumber daya Azure Monitor Anda secara deklaratif.

Membuat ruang kerja Log Analytics menggunakan Azure CLI

Gunakan Azure CLI untuk membuat ruang kerja Log Analytics, di mana log dan metrik disimpan. Contoh:

# Variables
resourceGroup="myResourceGroup"
location="eastus"
workspaceName="myWorkspace"
webAppName="myWebApp"
diagName="${webAppName}/appServiceLogging"
SUBSCRIPTION_ID=$(az account show --query id -o tsv)

# 1) Create a Log Analytics workspace
workspaceId=$(az monitor log-analytics workspace create \
  --resource-group $resourceGroup \
  --workspace-name $workspaceName \
  --location $location \
  --query id -o tsv)

# 2) Enable diagnostic settings on your App Service
az monitor diagnostic-settings create \
  --name "$diagName" \
  --resource "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$webAppName" \
  --workspace $workspaceId \
  --logs '[{"category": "Administrative", "enabled": true},{"category":"AppServiceConsoleLogs","enabled":true},{"category":"AppServiceHTTPLogs","enabled":true}]' \
  --metrics '[{"category":"AllMetrics","enabled":true}]'

Membuat ruang kerja Log Analytics menggunakan Bicep

Gunakan Bicep untuk menentukan dan menyebarkan sumber daya Azure Monitor Anda secara deklaratif. Contoh ini membuat ruang kerja Log Analytics dan mengonfigurasi pengaturan diagnostik untuk App Service.

Sertakan pencatatan, metrik, dan pemberitahuan dalam templat IaC Anda dengan referensi sumber daya Bicep diagnosticSettings. Contoh (Bicep):

param webAppName string

resource webApp 'Microsoft.Web/sites@2022-09-01' existing = {
  name: webAppName
}

resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
  name: 'myWorkspace'
  location: resourceGroup().location
}

resource diagSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
  name: '${webApp.name}/appServiceLogging'
  properties: {
    workspaceId: logAnalytics.id
    logs: [
      { category: 'AppServiceConsoleLogs'; enabled: true }
      { category: 'AppServiceHTTPLogs'; enabled: true }
    ]
    metrics: [
      { category: 'AllMetrics'; enabled: true }
    ]
  }
}

Membuat pemberitahuan untuk sumber daya Anda

Anda dapat menyiapkan pemberitahuan untuk metrik di portal Azure atau dengan menggunakan Azure CLI. Pemberitahuan dapat mencakup metrik tertentu, aliran komunikasi (seperti email), dan frekuensi.

Gunakan contoh berikut untuk membuat pemberitahuan metrik di portal atau secara terprogram:

  • Azure CLI: penyiapan cepat melalui az monitor metrics alert
  • Bicep: Definisi IaC deklaratif untuk Microsoft.Insights/metricAlerts

Pemberitahuan dapat menentukan metrik target, saluran pemberitahuan (email, webhook), tingkat keparahan, frekuensi evaluasi, dan grup tindakan.

az monitor metrics alert create \
  --name HighCpuAlert \
  --resource-group MyResourceGroup \
  --scopes /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/myApp \
  --condition "avg CpuPercentage > 70" \
  --description "Alert when CPU goes above 70%" \
  --severity 2 \
  --window-size 5m \
  --evaluation-frequency 1m \
  --action /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup
resource cpuAlert 'Microsoft.Insights/metricAlerts@2018-03-01' = {
  name: 'highCpuAlert'
  location: resourceGroup().location
  properties: {
    description: 'Alert when CPU goes above 70%'
    severity: 2
    enabled: true
    scopes: [
      webApp.id
    ]
    evaluationFrequency: 'PT1M'
    windowSize: 'PT5M'
    criteria: {
      allOf: [
        {
          criterionType: 'StaticThresholdCriterion'
          name: 'HighCpu'
          metricName: 'CpuPercentage'
          metricNamespace: 'Microsoft.Web/sites'
          operator: 'GreaterThan'
          threshold: 70
          timeAggregation: 'Average'
        }
      ]
    }
    autoMitigate: false
    actions: [
      {
        actionGroupId: '/subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup'
      }
    ]
  }
}

Menampilkan data log

Untuk melihat data log di portal Azure, navigasikan ke ruang kerja Log Analytics Anda dan pilih Logs. Anda dapat menjalankan kueri Kusto Query Language (KQL) terhadap log.

Catatan Aliran

Gunakan tabel berikut untuk mempelajari selengkapnya tentang cara melakukan streaming log.

Azure MCP Server

Saat mengembangkan secara lokal, Anda dapat menggunakan Azure MCP Servermonitor alat untuk mengkueri log tanpa meninggalkan IDE Anda. Setelah Anda instal server, contoh perintah Copilot meliputi:

  • Mencantumkan ruang kerja: "Perlihatkan saya semua ruang kerja Log Analytics di langganan saya."
  • Temukan tabel: "Cantumkan semua tabel di ruang kerja saya 'security-logs'"
  • Kueri kompleks: "Tampilkan tren penggunaan CPU untuk server web saya selama 24 jam terakhir"

Menambahkan pengelogan ke kode Anda

Untuk pengelogan aplikasi, Application Insights dapat menyediakan:

  • Pengelogan standar di layanan Azure dan dalam kode sumber Anda, tergantung pada inisialisasi.
  • Pengelogan kustom dari alur penyebaran Anda dan di kode sumber Anda.

Pengelogan konsol standar (stdout/stderr)

Azure aplikasi web dan Azure Functions secara otomatis menyediakan pengelogan kustom untuk stdout dan stderr, jika Anda menggunakan fungsi pengelogan yang benar:

  • Aplikasi web menggunakan console.log('your message here').
  • Aplikasi fungsi menggunakan context.log('your message here').

Menambahkan pencatatan log kustom Application Insights

Anda dapat menambahkan pengelogan kustom yang lebih kaya dengan menggunakan Wawasan Aplikasi di Azure Monitor. Application Insights menawarkan skenario server (Node.js) dan klien (browser):

  • Tambahkan Application Insights SDK ke kode sumber Anda.
  • Log dari Node.js melalui paket npm.
    • Pastikan untuk mengonfigurasi SDK Node.js dengan enableAutoCollectConsole: true untuk mengumpulkan log konsol kustom.
  • Log dari kode klien Anda dengan menggunakan paket npm.
  • Masuk dari kluster Kubernetes atau Azure mesin virtual.

Aktifkan log alur SDK (@Azure/logger)

Kontrol verbositas SDK dengan menggunakan AZURE_LOG_LEVEL variabel lingkungan atau @azure/logger paket npm:

import { setLogLevel } from "@azure/logger";
// Options: 'error', 'warning', 'info', 'verbose'
setLogLevel(process.env.AZURE_LOG_LEVEL || "info");

Konfigurasi SDK Application Insights Node.js

Mulailah Application Insights untuk Node.js SDK dengan penyampelan, pengumpulan dependensi, dan pengambilan log konsol:;

import appInsights from "applicationinsights";
appInsights
  .setup(process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR_CONNECTION_STRING>")
  .setAutoCollectConsole(true, true)        // collect console.log
  .setAutoCollectDependencies(true)        // track outgoing requests
  .setInternalLogging(false, true)         // SDK internal logs
  .start();

// Optional: add custom properties to all telemetry
appInsights.defaultClient.commonProperties = { serviceName: "my-service" };

Menambahkan korelasi dan pelacakan terdistribusi

Application Insights SDK secara otomatis menyuntikkan ID operasi dan korelasi ke dalam permintaan. Untuk menambahkan korelasi atau properti kustom:

appInsights.defaultClient.trackTrace({
  message: "Custom trace",
  properties: { userId: user.id }
});

Pelajari lebih lanjut: panduan pelacakan terdistribusi

Bersihkan telemetri dalam skrip pengembangan

Pastikan log dikirim sebelum proses keluar selama pengembangan lokal:

appInsights.defaultClient.flush({
  callback: () => process.exit(0)
});

Penyiapan telemetri sisi klien

Untuk aplikasi klien, gunakan @microsoft/applicationinsights-web paket :

import { ApplicationInsights } from "@microsoft/applicationinsights-web";
const ai = new ApplicationInsights({ config: {
  connectionString: "<YOUR_CONNECTION_STRING>",
  enableAutoRouteTracking: true
}});
ai.loadAppInsights();