Freigeben über


Überwachen Ihrer Azure-Ressourcen und -Anwendungen

Verwenden Sie Azure Monitor, um Protokolle, Metriken und Warnungen in Ihren JavaScript-Anwendungen und den Azure-Diensten zu sammeln, von der sie abhängig sind. Azure Monitor ist der zentrale Plattformdienst, der Ihre Telemetrie sammelt und speichert. Sie können Ihre Anwendungen mit Application Insights instrumentieren. Sie sollten Ihren gehosteten Anwendungsdienst überwachen, die Azure-Dienste, in die die Anwendung integriert ist, und den Anwendungsquellcode selbst.

Grundlegendes zu Protokollen, Metriken und Warnungen

Telemetrie sind die Daten, die von Ihren Anwendungen und Diensten gesammelt werden, um deren Integrität, Leistung und Nutzung zu überwachen. In Azure werden Telemetrie in Protokolle, Metriken und Warnungen kategorisiert.

Azure bietet vier Arten von Telemetrie:

Telemetrietyp Was es Ihnen gibt Wo finde ich ihn für jeden Dienst?
Metriken Numerische Daten, Zeitreihendaten (CPU, Arbeitsspeicher usw.) Metriken im Portal oder az monitor metrics CLI
Alarmsignale Proaktive Benachrichtigungen, wenn Schwellenwerte erreicht werden Warnungen im Portal oder az monitor metrics alert in der CLI
Logdateien Textbasierte Ereignisse und Diagnosen (Web, App) App-Dienstprotokolle, Funktionsmonitor, Diagnose von Container-Apps
Benutzerdefinierte Protokolle Ihre eigene Anwendungstelemetrie über App Insights Protokolltabelle Ihrer Application Insights-Ressource (Trace)

Wählen Sie die richtige Telemetrie für Ihre Frage aus:

Szenario Protokolle verwenden... Metriken verwenden... Warnungen verwenden...
"Hat meine Web-App gestartet und geantwortet?" App Service-Webserverprotokolle (Protokolle) Nicht verfügbar Nicht verfügbar
"Wird meine Funktion abgebrochen oder schlägt sie fehl?" Funktionsaufrufprotokolle (Monitor) Metrik der Funktionsausführungsdauer Warnung bei "Funktionsfehler >0"
"Wie ausgelastet ist mein Dienst und kann es skalieren?" Nicht verfügbar Dienstdurchsatz/CPU in Metriken "Automatische Skalierungswarnung bei CPU-% > 70%"
"Welche Ausnahmen löst mein Code aus?" Benutzerdefinierte Ablaufverfolgungsprotokolle in Application Insights Nicht verfügbar Warnung für "ServerExceptions >0"
"Habe ich meine Transaktions- oder Kontingentbeschränkungen überschritten?" Nicht verfügbar Kontingentbezogene Metriken (Transaktionen, Drosselung) Warnung für "ThrottlingCount >0"

Kostenoptimierung

Sie können Ihre Kosten für Azure Monitor erheblich reduzieren, indem Sie die bewährten Methoden für Konfigurationsoptionen und Möglichkeiten verstehen, die Menge der gesammelten Daten zu reduzieren.

Aktivieren der Protokollierung und Metriken für alle Azure-Ressourcen

Jeder Dienst in Azure verfügt über eigene Protokollierungs- und Metrikfunktionen. Aktivieren Sie die Protokollierung für jede Azure-Ressource, um sicherzustellen, dass Sie über die Telemetrie verfügen, die Sie zum Überwachen des gesamten End-to-End-Anwendungs benötigen.

Erstellen einer Azure Monitor-Ressource

Sie können eine Azure Monitor-Ressource erstellen, um Protokolle und Metriken aus Ihren Azure-Ressourcen zu sammeln. Diese Ressource ist in der Regel ein Log Analytics-Arbeitsbereich, in dem Protokolle und Metriken gespeichert werden.

Sie können diese Ressource auf verschiedene Arten erstellen:

  • Azure-Portal: Verwenden Sie das Azure-Portal , um einen Log Analytics-Arbeitsbereich zu erstellen und Diagnoseeinstellungen für Ihre Ressourcen zu konfigurieren.
  • Azure CLI: Verwenden Sie die Azure CLI , um einen Log Analytics-Arbeitsbereich zu erstellen und Diagnoseeinstellungen für Ihre Ressourcen zu konfigurieren.
  • PowerShell: Verwenden Sie PowerShell , um einen Log Analytics-Arbeitsbereich zu erstellen und Diagnoseeinstellungen für Ihre Ressourcen zu konfigurieren.
  • Bicep: Verwenden Sie Bicep-Vorlagen, um Ihre Azure Monitor-Ressourcen deklarativ zu definieren und bereitzustellen.

Erstellen eines Log Analytics-Arbeitsbereichs mithilfe der Azure CLI

Verwenden Sie die Azure CLI, um einen Log Analytics-Arbeitsbereich zu erstellen, in dem Protokolle und Metriken gespeichert werden. Beispiel:

# Variables
resourceGroup="myResourceGroup"
location="eastus"
workspaceName="myWorkspace"
webAppName="myWebApp"
diagName="${webAppName}/appServiceLogging"

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

Erstellen eines Log Analytics-Arbeitsbereichs mit Bicep

Verwenden Sie Bicep, um Ihre Azure Monitor-Ressourcen deklarativ zu definieren und bereitzustellen. In diesem Beispiel wird ein Log Analytics-Arbeitsbereich erstellt und Diagnoseeinstellungen für einen App-Dienst konfiguriert:


Include logging, metrics, and alerting in your IaC templates with a [Bicep diagnosticSettings resource reference](/azure/templates/microsoft.insights/diagnosticsettings). Example (Bicep):

```bicep
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 }
    ]
  }
}

Erstellen Sie Warnungen für Ihre Ressourcen

Sie können Warnungen für Metriken im Azure-Portal oder mithilfe der Azure CLI einrichten. Warnungen können bestimmte Metriken, Kommunikationsdatenströme (z. B. E-Mail) und Häufigkeit umfassen.

Verwenden Sie die folgenden Beispiele, um metrische Warnungen im Portal oder programmgesteuert zu erstellen:

  • Azure CLI: Schnelle Einrichtung über az monitor metrics alert
  • Bicep: deklarative IaC-Definition für Microsoft.Insights/metricAlerts

Warnungen können Zielmetriken, Benachrichtigungskanäle (E-Mail, Webhook), Schweregrad, Auswertungshäufigkeit und Aktionsgruppen angeben.

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

Anzeigen von Protokolldaten

Um Protokolldaten im Azure-Portal anzuzeigen, navigieren Sie zu Ihrem Log Analytics-Arbeitsbereich, und wählen Sie "Protokolle" aus. Sie können Kusto Query Language (KQL)- Abfragen für die Protokolle ausführen.

Streaming von Protokollen

In der folgenden Tabelle erfahren Sie mehr über das Streamen von Protokollen.

Azure MCP-Server

Bei der lokalen Entwicklung können Sie das Azure MCPServer-Monitortool verwenden, um Protokolle abzufragen, ohne Ihre IDE zu verlassen. Nachdem Sie den Server installiert haben, umfassen Beispiel-Copilot-Eingabeaufforderungen Folgendes:

  • Arbeitsbereiche auflisten: "Alle Log Analytics-Arbeitsbereiche in meinem Abonnement anzeigen".
  • Suchen von Tabellen: "Alle Tabellen in meinem Arbeitsbereich 'Sicherheitsprotokolle' auflisten"
  • Komplexe Abfrage: "Zeigen Sie mir den CPU-Auslastungstrend für meine Webserver in den letzten 24 Stunden an"

Fügen Sie Ihrem Code Protokollierung hinzu

Für die Anwendungsprotokollierung können Application Insights Folgendes bereitstellen:

  • Standardprotokollierung im Azure-Dienst und im Quellcode, abhängig von der Initialisierung.
  • Benutzerdefinierte Protokollierung aus Ihrer Bereitstellungspipeline und im Quellcode.

Standardkonsolenprotokollierung (stdout/stderr)

Azure Web Apps und Azure Functions bieten automatisch eine benutzerdefinierte Protokollierung für stdout und stderr, wenn Sie die richtigen Protokollierungsfunktionen verwenden:

  • Webanwendungen verwenden console.log('your message here').
  • Funktions-Apps verwenden context.log('your message here').

Hinzufügen einer benutzerdefinierten Application Insights-Protokollierung

Sie können eine umfangreichere benutzerdefinierte Protokollierung hinzufügen, indem Sie Application Insights in Azure Monitor verwenden. Application Insights bietet Serverszenarien (Node.js) und Client (Browser):

  • Fügen Sie das Application Insights SDK zu Ihrem Quellcode hinzu.
  • Melden Sie sich über Node.js mithilfe eines npm-Pakets an.
    • Konfigurieren Sie unbedingt das Node.js SDK mit enableAutoCollectConsole: true, um benutzerdefinierte Konsolenprotokolle zu sammeln.
  • Melden Sie sich über Ihren Clientcode mithilfe eines npm-Pakets an.
  • Melden Sie sich von Ihrem Kubernetes-Cluster oder einem virtuellen Azure-Computer an.

Aktivieren von SDK-Pipelineprotokollen (@Azure/Logger)

Steuern Sie die SDK-Verbosität mithilfe der AZURE_LOG_LEVEL Umgebungsvariable oder des @azure/logger npm-Pakets:

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

Konfigurieren von Application Insights Node.js SDK

Initialisieren Sie die Application Insights für Node.js SDK mit Sampling, Abhängigkeitssammlung und Konsolenprotokollerfassung:

import appInsights from "applicationinsights";
appInsights
  .setup("<INSTRUMENTATION_KEY>")
  .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" };

Hinzufügen von Korrelation und verteilter Ablaufverfolgung

Das Application Insights SDK fügt Vorgänge und Korrelations-IDs automatisch in Anforderungen ein. So fügen Sie benutzerdefinierte Korrelation oder Eigenschaften hinzu:

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

Weitere Informationen: Anleitung zur verteilten Ablaufverfolgung

Telemetriedaten in Entwicklungsskripte ausschütten

Stellen Sie sicher, dass Protokolle vor dem Beenden des Prozesses während der lokalen Entwicklung gesendet werden:

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

Clientseitige Telemetrieeinrichtung

Verwenden Sie für Clientanwendungen das @microsoft/applicationinsights-web Paket :

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

Nächste Schritte