Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
- Konfigurieren Sie unbedingt das Node.js SDK mit
- 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();