Uw Azure-resources en -toepassingen bewaken

Gebruik Azure Monitor om logboeken, metrische gegevens en waarschuwingen te verzamelen in uw JavaScript-toepassingen en de Azure services die ze afhankelijk zijn. Azure Monitor is de centrale platformservice die uw telemetrie verzamelt en opslaat. U kunt uw toepassingen instrumentiseren met Application Insights. U moet de gehoste toepassingsservice bewaken, de Azure services waarmee de toepassing is geïntegreerd en de broncode van de toepassing zelf.

Logboeken, metrische gegevens en waarschuwingen begrijpen

Telemetrie is de gegevens die worden verzameld van uw toepassingen en services om hun status, prestaties en gebruik te bewaken. In Azure worden telemetriegegevens gecategoriseerd in logboeken, metrische gegevens en waarschuwingen.

Azure biedt vier soorten telemetrie:

Telemetrietype Wat het u geeft Waar u deze voor elke service kunt vinden
Statistieken Numerieke, tijdreeksgegevens (CPU, geheugen, enzovoort) Metrische gegevens in de portal of az monitor metrics CLI
Waarschuwingen Proactieve meldingen wanneer drempelwaarden worden bereikt Waarschuwingen in het portaal of az monitor metrics alert CLI
Logboeken Op tekst gebaseerde gebeurtenissen en diagnostische gegevens (web, app) App Service-logboeken, Functie Monitor, Container-apps Diagnostische gegevens
Aangepaste logboeken Uw eigen toepassingstelemetrie via App Insights De Logboeken (Trace) tabel van uw Application Insights-resource

Kies de juiste telemetrie voor uw vraag:

Scenariobeschrijving Logboeken gebruiken... Metrische gegevens gebruiken... Waarschuwingen gebruiken...
Is mijn web-app gestart en reageert deze? App Service-webserverlogboeken (logboeken) Niet van toepassing. Niet van toepassing.
Heeft mijn functie een time-out of faalt deze? Aanroeplogboeken van functies (Monitor) Metrische waarde voor uitvoeringsduur van functie Waarschuwing voor 'Functiefouten >0'
"Hoe druk is mijn service en kan deze worden geschaald?" Niet van toepassing. Serviceverwerkingssnelheid/CPU in metrieken Automatische schaalaanpassingswaarschuwing voor CPU% > 70%
"Welke uitzonderingen werpt mijn code?" Aangepaste traceringslogboeken in Application Insights Niet van toepassing. Waarschuwing op "ServerExceptions >0"
"Heb ik mijn transactie- of quotumlimieten overschreden?" Niet van toepassing. Metrische gegevens over quota (transacties, beperking) Waarschuwing over 'ThrottlingCount >0'

Kostenoptimalisatie

U kunt uw cost voor Azure Monitor aanzienlijk verminderen door inzicht te krijgen in bestprocedures voor configuratieopties en mogelijkheden om de hoeveelheid gegevens te verminderen die door deze worden verzameld.

Logboekregistratie en metrische gegevens inschakelen voor alle Azure resources

Elke service in Azure heeft zijn eigen mogelijkheden voor logboekregistratie en metrische gegevens. Schakel logboekregistratie in op elke Azure resource om ervoor te zorgen dat u beschikt over de telemetrie die u nodig hebt om uw volledige end-to-end-toepassing te bewaken.

Azure Monitor-resource maken

U kunt een Azure Monitor resource maken om logboeken en metrische gegevens van uw Azure-resources te verzamelen. Deze resource is doorgaans een Log Analytics werkruimte, waar logboeken en metrische gegevens worden opgeslagen.

U kunt deze resource op verschillende manieren maken:

  • Azure portal: gebruik de Azure portal om een Log Analytics werkruimte te maken en diagnostische instellingen voor uw resources te configureren.
  • Azure CLI: gebruik de Azure CLI om een Log Analytics werkruimte te maken en diagnostische instellingen voor uw resources te configureren.
  • PowerShell: gebruik PowerShell om een Log Analytics werkruimte te maken en diagnostische instellingen voor uw resources te configureren.
  • Bicep: gebruik Bicep sjablonen om uw Azure Monitor resources declaratief te definiëren en te implementeren.

Een Log Analytics werkruimte maken met behulp van de Azure CLI

Gebruik de Azure CLI om een Log Analytics werkruimte te maken. Hier worden logboeken en metrische gegevens opgeslagen. Voorbeeld:

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

Een Log Analytics werkruimte maken met behulp van Bicep

Gebruik Bicep om uw Azure Monitor resources declaratief te definiëren en te implementeren. In dit voorbeeld wordt een Log Analytics werkruimte gemaakt en worden diagnostische instellingen voor een App Service geconfigureerd.

Neem logboekregistratie, metrische gegevens en waarschuwingen op in uw IaC-sjablonen met een Bicep diagnosticSettings-resourceverwijzing. Voorbeeld (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 }
    ]
  }
}

Waarschuwingen voor uw resources maken

U kunt waarschuwingen instellen voor metrische gegevens in de Azure portal of met behulp van de Azure CLI. Waarschuwingen kunnen specifieke metrische gegevens, communicatiestromen (zoals e-mail) en frequentie bevatten.

Gebruik de volgende voorbeelden om metrische waarschuwingen te maken in de portal of programmatisch:

  • Azure CLI: snelle installatie via az monitor metrics alert
  • Bicep: declaratieve IaC-definitie voor Microsoft.Insights/metricAlerts

Waarschuwingen kunnen metrische doelgegevens, meldingskanalen (e-mail, webhook), ernst, evaluatiefrequentie en actiegroepen opgeven.

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

Logboekgegevens weergeven

Als u logboekgegevens in de Azure-portal wilt weergeven, gaat u naar uw Log Analytics werkruimte en selecteert u Logs. U kunt KQL-query's (Kusto Query Language) uitvoeren op de logboeken.

Logbestanden streamen

Gebruik de volgende tabel voor meer informatie over het streamen van logboeken.

Azure MCP-server

Wanneer u lokaal ontwikkelt, kunt u het hulpprogramma Azure MCP Servermonitor gebruiken om logboeken op te vragen zonder uw IDE te verlaten. Zodra u de server installeert, zijn voorbeelden van Copilot prompts:

  • Werkruimten weergeven: 'Toon alle Log Analytics werkruimten in mijn abonnement'.
  • Tabellen zoeken: 'Alle tabellen in mijn werkruimte 'security-logs' weergeven
  • Complexe query: 'Toon de trend van het CPU-gebruik voor mijn webservers in de afgelopen 24 uur'

Logging toevoegen aan je code

Voor toepassingslogboeken kan Application Insights het volgende bieden:

  • Standaardlogboekregistratie in de Azure-service en in uw broncode, afhankelijk van de initialisatie.
  • Aangepaste logboekregistratie vanuit uw implementatiepijplijn en in uw broncode.

Standaardconsolelogboekregistratie (stdout/stderr)

Azure web-apps en Azure Functions voorzien automatisch in aangepaste logboekregistratie voor stdout en stderr, als u de juiste logboek registratie functies gebruikt.

  • Web-apps gebruiken console.log('your message here').
  • Functieapplicaties maken gebruik van context.log('your message here').

Aangepaste Application Insights-logboekregistratie toevoegen

U kunt uitgebreidere aangepaste logboekregistratie toevoegen met behulp van Application Insights in Azure Monitor. Application Insights biedt serverscenario's (Node.js) en clientscenario's (browser):

  • Voeg de Application Insights-SDK toe aan uw broncode.
  • Meld u aan bij Node.js met behulp van een npm-pakket.
    • Zorg ervoor dat u de Node.js SDK configureert met enableAutoCollectConsole: true om aangepaste consolelogs te verzamelen.
  • Houd een logboek bij vanuit uw clientcode met behulp van een npm-pakket.
  • Meld u aan bij uw Kubernetes-cluster of Azure virtuele machine.

SDK-pijplijnlogboeken inschakelen (@Azure/logger)

De uitvoer van de SDK beheren met behulp van de AZURE_LOG_LEVEL omgevingsvariabele of het @azure/logger npm-pakket:

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

Application Insights Node.js SDK configureren

Initialiseer de Application Insights voor Node.js SDK met steekproeven, afhankelijkheidsverzameling en logboekopname van de console:

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

Correlatie en gedistribueerde tracering toevoegen

De Application Insights SDK injecteert automatisch bewerkings- en correlatie-id's in aanvragen. Aangepaste correlatie of eigenschappen toevoegen:

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

Meer informatie: richtlijnen voor gedistribueerde tracering

Telemetrie leegmaken in dev-scripts

Zorg ervoor dat logboeken worden verzonden voordat het proces wordt afgesloten tijdens de lokale ontwikkeling:

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

Telemetrie-instellingen aan de clientzijde

Gebruik het @microsoft/applicationinsights-web pakket voor clienttoepassingen:

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