Azure kaynaklarınızı ve uygulamalarınızı izleme

JavaScript uygulamalarınız ve bağlı oldukları Azure hizmetleri genelinde günlükleri, ölçümleri ve uyarıları toplamak için Azure İzleyici kullanın. Azure İzleyici telemetrinizi toplayan ve depolayan merkezi platform hizmetidir. Uygulamalarınıza Application Insights ile izleme ekleyebilirsiniz. Barındırılan uygulama hizmetinizi, uygulamanın tümleştirlendiği Azure hizmetlerini ve uygulama kaynak kodunun kendisini izlemeniz gerekir.

Günlükleri, ölçümleri ve uyarıları anlama

Telemetri, uygulamalarınızdan ve hizmetlerinizden sağlık, performans ve kullanımlarını izlemek için toplanan verilerdir. Azure telemetri günlüklere, ölçümlere ve uyarılara ayrılır.

Azure dört tür telemetri sunar:

Telemetri türü Size ne verir? Her hizmet için nerede bulunur?
Ölçümler Sayısal, zaman serisi verileri (CPU, bellek vb.) Portalda veya CLI'da az monitor metrics
Uyarılar Eşikler aşıldığında proaktif bildirimler gönderilir. Portalda veya CLI'da az monitor metrics alert
Kayıtlar Metin tabanlı olaylar ve tanılama (web, uygulama) App Service Günlükleri , İşlevler İzleyicisi, Container Apps Tanılamaları
Özel günlükler App Insights aracılığıyla kendi uygulama telemetriniz Application Insights kaynağınızın Günlükler (İzleme) tablosu

Sorunuz için doğru telemetriyi seçin:

Senaryo Günlükleri kullan... Ölçümleri kullan... Uyarıları kullan...
"Web uygulamam başladı ve yanıt verdi mi?" App Service web sunucusu günlükleri (Günlükler) Mevcut Değil Mevcut Değil
"İşlevim zaman aşımına mı uğradı yoksa başarısız mı?" İşlev çağırma günlükleri (İzleyici) İşlev yürütme süresi ölçümü "Uyarı: 'İşlev Hataları >0'"
"Hizmetim ne kadar meşgul ve ölçeklendirilebilir mi?" Mevcut Değil Ölçümlerde Servis Aktarım Hızı/CPU CPU% 70% > otomatik ölçeklendirme uyarısı
Kodum hangi hataları atıyor? Application Insights'ta Özel İzleme günlükleri Mevcut Değil "ServerExceptions >0" uyarı
"İşlem veya kota sınırlarımı aştım mı?" Mevcut Değil Kotayla ilgili ölçümler (İşlemler, Sınırlama) "ThrottlingCount >0" uyarısı

Maliyet optimizasyonu

Azure İzleyici'un maliyetlerini, en iyi uygulamaları ve yapılandırma seçeneklerini anlayarak, topladığı veri miktarını azaltma fırsatlarından yararlanarak önemli ölçüde azaltabilirsiniz.

Tüm Azure kaynakları için günlüğe kaydetmeyi ve ölçümleri etkinleştirin

Azure'daki her hizmetin kendi günlük ve ölçüm özellikleri vardır. Her Azure kaynağında loglamayı etkinleştirerek uçtan uca uygulamanızın tamamını izlemek için gerekli telemetri verilerine sahip olduğunuzdan emin olun.

Azure İzleyici kaynağı oluşturma

Azure kaynaklarınızdan günlükleri ve ölçümleri toplamak için bir Azure İzleyici kaynağı oluşturabilirsiniz. Bu kaynak genellikle günlüklerin ve ölçümlerin depolandığı Log Analytics bir çalışma alanıdır.

Bu kaynağı çeşitli yollarla oluşturabilirsiniz:

  • Azure portal: Log Analytics çalışma alanı oluşturmak ve kaynaklarınız için tanılama ayarlarını yapılandırmak için Azure portal kullanın.
  • Azure CLI: Log Analytics çalışma alanı oluşturmak ve kaynaklarınız için tanılama ayarlarını yapılandırmak için Azure CLI kullanın.
  • PowerShell: Log Analytics çalışma alanı oluşturmak ve kaynaklarınızın tanılama ayarlarını yapılandırmak için PowerShell kullanın.
  • Bicep: Azure İzleyici kaynaklarınızı bildirimli olarak tanımlamak ve dağıtmak için Bicep şablonları kullanın.

Azure CLI kullanarak Log Analytics çalışma alanı oluşturma

günlüklerin ve ölçümlerin depolandığı bir Log Analytics çalışma alanı oluşturmak için Azure CLI kullanın. Örnek:

# 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}]'

Bicep kullanarak Log Analytics çalışma alanı oluşturma

Azure İzleyici kaynaklarınızı bildirimli olarak tanımlamak ve dağıtmak için Bicep kullanın. Bu örnekte bir Log Analytics çalışma alanı oluşturulur ve App Service için tanılama ayarları yapılandırılır.

Bicep diagnosticSettings kaynak başvurusu ile IaC şablonlarınıza günlük kaydı, metrikler ve uyarılar ekleyin. Örnek (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 }
    ]
  }
}

Kaynaklarınız için uyarılar oluşturma

ölçümler için uyarıları Azure portalında veya Azure CLI kullanarak ayarlayabilirsiniz. Uyarılar belirli ölçümleri, iletişim akışlarını (e-posta gibi) ve sıklığı içerebilir.

Portalda veya program aracılığıyla ölçüm uyarıları oluşturmak için aşağıdaki örnekleri kullanın:

  • Azure CLI: az monitor metrics alert aracılığıyla hızlı kurulum
  • Bicep: Microsoft.Insights/metricAlerts için deklaratif IaC tanımı

Uyarılar hedef ölçümleri, bildirim kanallarını (e-posta, web kancası), önem derecesini, değerlendirme sıklığını ve eylem gruplarını belirtebilir.

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'
      }
    ]
  }
}

Günlük verilerini göster

Azure portalında günlük verilerini görüntülemek için Log Analytics çalışma alanınıza gidin ve Logs öğesini seçin. Günlüklerde Kusto Sorgu Dili (KQL) sorguları yazabilir ve çalıştırabilirsiniz.

Akış günlükleri

Günlükleri akışla aktarma hakkında daha fazla bilgi edinmek için aşağıdaki tabloyu kullanın.

Azure MCP Sunucusu

Yerel olarak geliştirme yaparken, IDE'nizden çıkmadan günlükleri sorgulamak için Azure MCP Servermonitor aracını kullanabilirsiniz. sunucuyu yükledikten sonra, örnek Copilot istemleri şunlardır:

  • Çalışma alanlarını listele: "Aboneliğimdeki tüm Log Analytics çalışma alanlarını göster."
  • Tabloları bulma: "Çalışma alanımdaki tüm tabloları listele 'security-logs'"
  • Karmaşık sorgu: "Son 24 saat içindeki web sunucularım için CPU kullanım eğilimini göster"

Kodunuza günlük ekleyin

Application Insights, uygulama günlüğü için şunları sağlayabilir:

  • Başlatma durumuna bağlı olarak Azure hizmetinde ve kaynak kodunuzda standart günlük kaydı.
  • Dağıtım işlem hattınızdan ve kaynak kodunuzda özel kayıt tutma.

Standart konsol günlüğü (stdout/stderr)

Azure Web uygulamaları ve Azure İşlevleri, doğru günlük işlevlerini kullanıyorsanız, stdout ve stderr için otomatik olarak özel günlük kaydı sağlar.

  • Web uygulamaları console.log('your message here') kullanır.
  • İşlev uygulamaları kullanır context.log('your message here').

Özel Application Insights günlüğü ekleme

Azure İzleyici Application Insights kullanarak daha zengin özel günlük kaydı ekleyebilirsiniz. Application Insights sunucu (Node.js) ve istemci (tarayıcı) senaryoları sunar:

  • Application Insights SDK'sını kaynak kodunuza ekleyin.
  • npm paketini kullanarak Node.js oturum açın.
    • Node.js SDK'sını enableAutoCollectConsole: true ile yapılandırarak özel konsol günlüklerini topladığınızdan emin olun.
  • npm paketini kullanarak istemci kodunuzdan oturum açın.
  • Kubernetes kümenizden veya Azure sanal makinenizden oturum açın.

SDK işlem hattı günlüklerini etkinleştirme (@Azure/günlükçü)

Çevre değişkenini AZURE_LOG_LEVEL veya @azure/logger npm paketini kullanarak SDK ayrıntı düzeyini kontrol edin:

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

Application Insights Node.js SDK'sı yapılandırma

Örnekleme, bağımlılık koleksiyonu ve konsol günlüğü yakalama ile Node.js SDK için Application Insights'ı başlatın:

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" };

Bağıntı ve dağıtılmış izleme ekleme

Application Insights SDK'sı, işlem ve bağıntı kimliklerini isteklere otomatik olarak ekler. Özel bağıntı veya özellikler eklemek için:

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

Daha fazla bilgi edinin: dağıtılmış izleme kılavuzu

Geliştirme betiklerinde telemetriyi temizleme

Yerel geliştirme sırasında bir süreç sonlanmadan önce günlüklerin gönderildiğinden emin olun.

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

İstemci tarafı telemetri kurulumu

İstemci uygulamaları için paketini kullanın @microsoft/applicationinsights-web :

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