Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj Azure Monitor, aby zbierać dzienniki, metryki i alerty w aplikacjach JavaScript i usługach Azure, od których zależą. Azure Monitor to centralna usługa platformy, która zbiera i przechowuje dane telemetryczne. Aplikacje można instrumentować za pomocą usługi Application Insights. Należy monitorować usługę aplikacji hostowanej, usługi Azure integrowane z aplikacją oraz sam kod źródłowy aplikacji.
Omówienie dzienników, metryk i alertów
Dane telemetryczne to dane zbierane z aplikacji i usług w celu monitorowania ich kondycji, wydajności i użycia. W Azure dane telemetryczne są podzielone na dzienniki, metryki i alerty.
Azure oferuje cztery rodzaje danych telemetrycznych:
| Typ telemetrii | Co to daje | Gdzie ją znaleźć dla każdej usługi |
|---|---|---|
| Wskaźniki | Dane liczbowe, szeregi czasowe (procesor CPU, pamięć itp.) |
Metryki w portalu lub az monitor metrics CLI |
| Powiadomienia | Powiadomienia proaktywne po osiągnięciu progów | Alerty w portalu lub konsoli |
| Dzienniki | Zdarzenia i diagnostyka oparta na tekście (internet, aplikacja) | App Service Logs, Monitor funkcji, Diagnostyka aplikacji kontenerowych |
| Dzienniki niestandardowe | Własne dane telemetryczne aplikacji za pośrednictwem usługi App Insights | Tabela Dzienniki (ślad) zasobu usługi Application Insights |
Wybierz odpowiednią telemetrię dla swojego pytania:
| Scenariusz | Użyj dzienników... | Użyj metryk... | Użyj alertów... |
|---|---|---|---|
| "Czy moja aplikacja internetowa została uruchomiona i odpowiedziała?" | Dzienniki serwera internetowego usługi App Service (dzienniki) | N/A | N/A |
| Czy mój limit czasu funkcji przekracza czas, czy ulega awarii? | Dzienniki wywołania funkcji (Monitor) | Metryka czasu trwania wykonywania funkcji | Alert dotyczący "Błędy funkcji >0" |
| Jak bardzo obciążona jest moja usługa i czy może się skalować? | N/A | Wydajność usługi/CPU w metrykach | Alert autoskalowania dla procesora CPU% > 70% |
| "Jakie wyjątki zgłasza mój kod?" | Niestandardowe logi śledzenia w usłudze Application Insights | N/A | Alert dotyczący błędu "ServerExceptions >0" |
| Czy przekroczyłem limity transakcji lub przydziału? | N/A | Metryki związane z limitami kwotowymi (transakcje, ograniczenia) | Alert dotyczący "ThrottlingCount >0" |
Optymalizacja kosztów
Możesz znacznie zmniejszyć koszty związane z Azure Monitor, rozumiejąc najlepsze praktyki dla opcji konfiguracji oraz możliwość zmniejszenia ilości zbieranych danych.
Włączanie rejestrowania i metryk dla wszystkich zasobów Azure
Każda usługa w Azure ma własne możliwości rejestrowania i metryk. Włącz rejestrowanie na każdym zasobie Azure, aby upewnić się, że masz dane telemetryczne potrzebne do monitorowania całej aplikacji kompleksowej.
Tworzenie zasobu Azure Monitor
Zasób Azure Monitor można utworzyć w celu zbierania dzienników i metryk z zasobów Azure. Ten zasób jest zazwyczaj obszarem roboczym Log Analytics, w którym są przechowywane dzienniki i metryki.
Ten zasób można utworzyć na kilka sposobów:
- portal Azure: Użyj portalu Azure, aby utworzyć obszar roboczy Log Analytics i skonfigurować ustawienia diagnostyczne zasobów.
- Azure CLI: Użyj Azure CLI aby utworzyć obszar roboczy Log Analytics i skonfigurować ustawienia diagnostyczne zasobów.
- PowerShell: Użyj PowerShell, aby utworzyć obszar roboczy Log Analytics i skonfigurować ustawienia diagnostyczne dla zasobów.
- Bicep: deklaratywne definiowanie i wdrażanie zasobów Azure Monitor za pomocą szablonów Bicep.
Tworzenie obszaru roboczego Log Analytics przy użyciu Azure CLI
Użyj Azure CLI, aby utworzyć obszar roboczy Log Analytics, w którym są przechowywane dzienniki i metryki. Przykład:
# 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}]'
Tworzenie obszaru roboczego Log Analytics przy użyciu Bicep
Użyj Bicep do deklaratywnego definiowania i wdrażania zasobów Azure Monitor. W tym przykładzie utworzono obszar roboczy Log Analytics i skonfigurowano ustawienia diagnostyczne dla usługi App Service.
Uwzględnij logowanie, metryki i alerty w szablonach IaC z wykorzystaniem odniesienia do zasobu Bicep diagnosticSettings. Przykład (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 }
]
}
}
Tworzenie alertów dotyczących zasobów
Alerty dotyczące metryk można skonfigurować w portalu Azure lub przy użyciu Azure CLI. Alerty mogą obejmować określone metryki, strumienie komunikacji (takie jak poczta e-mail) i częstotliwość.
Skorzystaj z poniższych przykładów, aby utworzyć powiadomienia metryczne w portalu lub programowo.
- Azure CLI: szybka konfiguracja za pośrednictwem
az monitor metrics alert - Bicep: deklaratywna definicja IaC dla
Microsoft.Insights/metricAlerts
Alerty mogą określać metryki docelowe, kanały powiadomień (wiadomość e-mail, element webhook), ważność, częstotliwość oceny i grupy akcji.
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'
}
]
}
}
Wyświetlanie danych dziennika
Aby wyświetlić dane dziennika w portalu Azure, przejdź do obszaru roboczego Log Analytics i wybierz pozycję Logs. Zapytania języka KQL (Kusto Query Language) można uruchamiać na logach.
Logi przesyłane strumieniowo
Skorzystaj z poniższej tabeli, aby uzyskać więcej informacji o zapisie dzienników.
serwer Azure MCP
Podczas tworzenia aplikacji lokalnie można użyć narzędzia Azure MCP Servermonitor do wykonywania zapytań dotyczących dzienników bez opuszczania środowiska IDE. Po zainstalowaniu serwera, przykładowe monity Copilot obejmują:
- Wyświetlanie listy obszarów roboczych: "Pokaż mi wszystkie obszary robocze Log Analytics w mojej subskrypcji".
- Znajdź tabele: "Wyświetl listę wszystkich tabel w obszarze roboczym "security-logs"
- Złożone zapytanie: "Pokaż trend użycia procesora CPU dla moich serwerów internetowych w ciągu ostatnich 24 godzin"
Dodaj rejestrowanie do kodu
W przypadku rejestrowania aplikacji usługa Application Insights może zapewnić następujące możliwości:
- Standardowe rejestrowanie w usłudze Azure i w twoim kodzie źródłowym, w zależności od inicjalizacji.
- Rejestrowanie niestandardowe z potoku wdrażania i w Twoim kodzie źródłowym.
Standardowe rejestrowanie konsoli (stdout/stderr)
Azure aplikacje internetowe i Azure Functions automatycznie oferują niestandardowe rejestrowanie dla stdout i stderr pod warunkiem, że używasz właściwych funkcji rejestrowania:
- Aplikacje internetowe używają
console.log('your message here'). - Aplikacje funkcji używają polecenia
context.log('your message here').
Dodaj niestandardowe logowanie Application Insights
Możesz dodać bogatsze rejestrowanie niestandardowe przy użyciu Application Insights w Azure Monitor. Usługa Application Insights oferuje scenariusze serwera (Node.js) i klienta (przeglądarka):
- Dodaj zestaw SDK usługi Application Insights do kodu źródłowego.
- Zaloguj się z Node.js przy użyciu pakietu npm.
- Pamiętaj, aby skonfigurować SDK Node.js z użyciem
enableAutoCollectConsole: true, aby zbierać niestandardowe dzienniki konsoli.
- Pamiętaj, aby skonfigurować SDK Node.js z użyciem
- Zaloguj się z kodu klienta przy użyciu pakietu npm.
- Zaloguj się z klastra Kubernetes lub Azure maszyny wirtualnej.
Włączanie dzienników potoków zestawu SDK (@Azure/rejestrator)
Kontrolowanie szczegółowości zestawu SDK przy użyciu zmiennej środowiskowej AZURE_LOG_LEVEL@azure/logger lub pakietu npm:
import { setLogLevel } from "@azure/logger";
// Options: 'error', 'warning', 'info', 'verbose'
setLogLevel(process.env.AZURE_LOG_LEVEL || "info");
Konfigurowanie zestawu SDK usługi Application Insights Node.js
Zainicjuj usługę Application Insights dla zestawu SDK Node.js przy użyciu próbkowania, zbierania zależności i przechwytywania dziennika konsoli:
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" };
Dodawanie korelacji i śledzenia rozproszonego
Zestaw SDK usługi Application Insights automatycznie wprowadza operację i identyfikatory korelacji do żądań. Aby dodać niestandardową korelację lub właściwości:
appInsights.defaultClient.trackTrace({
message: "Custom trace",
properties: { userId: user.id }
});
Dowiedz się więcej: wskazówki dotyczące śledzenia rozproszonego
Opróżnij dane telemetryczne w skryptach deweloperskich
Upewnij się, że dzienniki są wysyłane przed zakończeniem procesu podczas programowania lokalnego:
appInsights.defaultClient.flush({
callback: () => process.exit(0)
});
Konfiguracja telemetrii po stronie klienta
W przypadku aplikacji klienckich użyj @microsoft/applicationinsights-web pakietu :
import { ApplicationInsights } from "@microsoft/applicationinsights-web";
const ai = new ApplicationInsights({ config: {
connectionString: "<YOUR_CONNECTION_STRING>",
enableAutoRouteTracking: true
}});
ai.loadAppInsights();