Bewaking configureren voor Azure Functions

Azure Functions integreert met Application Insights, zodat je je functie-apps beter kunt bewaken. Application Insights, een functie van Azure Monitor, is een uitbreidbare APM-service (Application Performance Management) die gegevens verzamelt die door uw functie-app worden gegenereerd, inclusief informatie die uw app naar logboeken schrijft. Application Insights-integratie wordt doorgaans ingeschakeld wanneer uw functie-app wordt gemaakt. Als uw app niet beschikt over de instrumentatiesleutelset, moet u eerst Application Insights-integratie inschakelen.

Je kunt Application Insights gebruiken zonder aangepaste configuratie. De standaardconfiguratie kan leiden tot grote hoeveelheden gegevens. Als u een Visual Studio Azure-abonnement gebruikt, bereikt u mogelijk uw gegevenslimiet voor Application Insights. Zie Application Insights-facturering voor meer informatie over de kosten van Application Insights. Zie Oplossingen met een groot aantal telemetriegegevens voor meer informatie.

Verderop in dit artikel leert u hoe u de gegevens configureert en aanpast die uw functies naar Application Insights verzenden. Algemene configuratie voor logboekregistratie kan worden ingesteld in het host.json-bestand. Deze instellingen bepalen standaard ook aangepaste logboeken die door uw code worden verzonden, hoewel dit gedrag in sommige gevallen kan worden uitgeschakeld ten gunste van opties die u meer controle geven over logboekregistratie. Zie aangepaste toepassingslogboeken voor meer informatie.

Notitie

U kunt speciaal geconfigureerde toepassingsinstellingen gebruiken om specifieke instellingen in een host.json-bestand voor een specifieke omgeving weer te geven. Hiermee kunt u de host.json-instellingen effectief wijzigen zonder het host.json-bestand opnieuw te publiceren in uw project. Voor meer informatie, zie Host.json-waarden overschrijven.

Aangepaste toepassingslogboeken

Aangepaste toepassingslogboeken die u schrijft, worden standaard verzonden naar de Functions-host, die ze vervolgens via de categorie Worker naar Application Insights verzendt. Met sommige taalstacks kunt u in plaats daarvan de logboeken rechtstreeks naar Application Insights verzenden, zodat u volledige controle hebt over hoe logboeken die u schrijft, worden verzonden. De pijplijn voor logboekregistratie verandert van worker -> Functions host -> Application Insights in worker -> Application Insights.

De volgende tabel bevat een overzicht van de opties die beschikbaar zijn voor elke stack:

Taalstack Configuratie van aangepaste logboeken
.NET (model in proces) host.json
.NET (geïsoleerd model) Standaard: host.json
Optie om logboeken rechtstreeks te verzenden: Application Insights configureren in hostbuilder
Node.JS host.json
Python host.json
Java Standaard: host.json
Optie om logboeken rechtstreeks te verzenden: de Application Insights Java-agent configureren
PowerShell host.json

Wanneer aangepaste toepassingslogboeken rechtstreeks worden verzonden, verzendt de host deze niet meer en host.json bepaalt het gedrag niet meer. Op dezelfde manier zijn de opties die door elke stack worden weergegeven, alleen van toepassing op aangepaste logboeken en wijzigen ze niet het gedrag van de andere runtimelogboeken die in dit artikel worden beschreven. Als u het gedrag van alle logboeken wilt beheren, moet u mogelijk wijzigingen aanbrengen voor beide configuraties.

Categorieën configureren

De Azure Functions-logboekregistratie bevat een categorie voor elk logboek. De categorie geeft aan welk deel van de runtime-code of je functiecode het logboek heeft geschreven. Categorieën verschillen tussen versie 1.x en latere versies.

Categorienamen worden anders toegewezen in Functions in vergelijking met andere .NET Frameworks. Wanneer u bijvoorbeeld in ASP.NET gebruikt ILogger<T> , is de categorie de naam van het algemene type. C#-functies gebruiken ILogger<T>ook, maar in plaats van de algemene typenaam in te stellen als categorie, wijst de runtime categorieën toe op basis van de bron. Voorbeeld:

  • Vermeldingen met betrekking tot het uitvoeren van een functie worden toegewezen aan een categorie van Function.<FUNCTION_NAME>.
  • Vermeldingen die zijn gemaakt door gebruikerscode in de functie, zoals bij het aanroepen logger.LogInformation(), krijgen een categorie van Function.<FUNCTION_NAME>.User.

In de volgende grafiek worden de belangrijkste categorieën logboeken beschreven die door de runtime worden gemaakt:

Categorie Table Beschrijving
Function Sporen Bevat gestarte en voltooide logboeken voor alle functieuitvoeringen. Voor geslaagde uitvoeringen zijn deze logboeken op het Information niveau. Uitzonderingen worden vastgelegd op het Error niveau. De runtime maakt Warning ook niveaulogboeken, zoals wanneer wachtrijberichten naar de gifwachtrij worden verzonden.
Function.<YOUR_FUNCTION_NAME> Afhankelijkheden Afhankelijkheidsgegevens worden automatisch verzameld voor sommige services. Voor geslaagde uitvoeringen zijn deze logboeken op het Information niveau. Zie voor meer informatie Afhankelijkheden. Uitzonderingen worden vastgelegd op het Error niveau. De runtime maakt Warning ook niveaulogboeken, zoals wanneer wachtrijberichten naar de gifwachtrij worden verzonden.
Function.<YOUR_FUNCTION_NAME> customMetrics
customEvents
Met C# en JavaScript SDK's kunt u aangepaste metrische gegevens verzamelen en aangepaste gebeurtenissen registreren. Zie Aangepaste telemetriegegevens voor meer informatie.
Function.<YOUR_FUNCTION_NAME> Sporen Bevat gestarte en voltooide logboeken voor specifieke functieuitvoeringen. Voor geslaagde uitvoeringen zijn deze logboeken op het Information niveau. Uitzonderingen worden vastgelegd op het Error niveau. De runtime maakt Warning ook niveaulogboeken, zoals wanneer wachtrijberichten naar de gifwachtrij worden verzonden.
Function.<YOUR_FUNCTION_NAME>.User Sporen Door de gebruiker gegenereerde logboeken, die elk logboekniveau kunnen zijn. Zie Schrijven naar logboeken voor meer informatie over het schrijven naar logboeken vanuit uw functies.
Host.Aggregator customMetrics Deze door runtime gegenereerde logboeken bieden aantallen en gemiddelden van functie-aanroepen gedurende een configureerbare periode. De standaardperiode is 30 seconden of 1000 resultaten, afhankelijk van wat het eerst voorkomt. Voorbeelden zijn het aantal uitvoeringen, het slagingspercentage en de duur. Al deze logboeken worden op Information niveau geschreven. Als u filtert op Warning of boven, ziet u geen van deze gegevens.
Host.Results Verzoeken Deze door runtime gegenereerde logboeken geven aan dat een functie is geslaagd of mislukt. Al deze logboeken worden op Information niveau geschreven. Als u filtert op Warning of boven, ziet u geen van deze gegevens.
Microsoft Sporen Volledig gekwalificeerde logboekcategorie die overeenkomt met een .NET Runtime-onderdeel dat door de host wordt aangeroepen.
Worker Sporen Logboeken die zijn gegenereerd door het taalwerkproces voor non-.NET talen. Taalwerklogboeken kunnen ook worden geregistreerd in een Microsoft.* categorie, zoals Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. Deze logboeken worden op Information niveau geschreven.

Notitie

Voor .NET-klassenbibliotheekfuncties gaan deze categorieën ervan uit dat u gebruikt ILogger en niet ILogger<T>. Zie de documentatie over Functions ILogger voor meer informatie.

De kolom Tabel geeft aan aan welke tabel in Application Insights het logboek is geschreven.

Logboekniveaus configureren

Er wordt een logboekniveau toegewezen aan elk logboek. De waarde is een geheel getal dat het relatieve belang aangeeft:

Logniveau Code Beschrijving
Trace 0 Logboeken die de meest gedetailleerde berichten bevatten. Deze berichten bevatten mogelijk gevoelige toepassingsgegevens. Deze berichten zijn standaard uitgeschakeld en moeten nooit worden ingeschakeld in een productieomgeving.
Fouten opsporen 1 Logboeken die worden gebruikt voor interactief onderzoek tijdens de ontwikkeling. Deze logboeken moeten voornamelijk informatie bevatten die nuttig is voor foutopsporing en geen waarde voor de lange termijn hebben.
Gegevens 2 Logboeken die de algemene stroom van de toepassing bijhouden. Deze logboeken moeten een langetermijnwaarde hebben.
Waarschuwing 3 Logboeken waarin een abnormale of onverwachte gebeurtenis in de toepassingsstroom wordt gemarkeerd, maar anders wordt de uitvoering van de toepassing niet gestopt.
Error 4 Logboeken die markeren wanneer de huidige uitvoeringsstroom wordt gestopt vanwege een fout. Deze fouten moeten duiden op een fout in de huidige activiteit, niet op een toepassingsbrede fout.
Kritiek 5 Logboeken die een onherstelbare toepassing of systeemcrash beschrijven, of een onherstelbare fout waarvoor onmiddellijke aandacht is vereist.
Geen 6 Schakelt logboekregistratie voor de opgegeven categorie uit.

De configuratie van het host.json-bestand bepaalt hoeveel logboekregistratie een functions-app naar Application Insights verzendt.

Voor elke categorie geeft u het minimale logboekniveau aan dat moet worden verzonden. De host.json-instellingen variëren afhankelijk van de runtimeversie van Functions.

In de onderstaande voorbeelden wordt logboekregistratie gedefinieerd op basis van de volgende regels:

  • Het standaardniveau voor logboekregistratie is zo ingesteld Warning dat overmatige logboekregistratie voor onverwachte categorieën wordt voorkomen.
  • Host.Aggregator en Host.Results worden ingesteld op lagere niveaus. Als u deze instelt op een te hoog niveau (met name hoger dan Information) kan dit leiden tot verlies van metrische gegevens en prestatiegegevens.
  • Logboekregistratie voor functieuitvoeringen is ingesteld op Information. Dit kan worden overschreven in lokale ontwikkeling naar Debug of Trace, indien nodig.
{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Warning",
      "Host.Aggregator": "Trace",
      "Host.Results": "Information",
      "Function": "Information"
    }
  }
}

Als host.json meerdere logboeken bevat die beginnen met dezelfde tekenreeks, worden de meer gedefinieerde logboeken eerst vergeleken. Bekijk het volgende voorbeeld dat alles in de runtime registreert, behalve Host.Aggregatorop het Error niveau:

{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

U kunt een instelling None op logboekniveau gebruiken om te voorkomen dat logboeken voor een categorie worden geschreven.

Let op

Azure Functions kan worden geïntegreerd met Application Insights door telemetrie-gebeurtenissen op te slaan in Application Insights-tabellen. Als u een categorielogboekniveau instelt op een andere waarde, Information wordt voorkomen dat de telemetrie naar deze tabellen stroomt. Als resultaat kunt u de gerelateerde gegevens niet zien op het tabblad Application Insights of Functiecontrole .

Uit bovenstaande voorbeelden:

  • Als de Host.Results categorie is ingesteld op Error logboekniveau, verzamelt deze alleen telemetriegebeurtenissen van de hostuitvoering in de requests tabel voor mislukte functieuitvoeringen, waardoor de uitvoeringsdetails van de host niet kunnen worden weergegeven op het tabblad Application Insights en Function Monitor .
  • Als de Function categorie is ingesteld op Error logboekniveau, stopt het verzamelen van functietelemetriegegevens met betrekking tot dependencies, customMetricsen customEvents voor alle functies, waardoor geen van deze gegevens in Application Insights kan worden weergegeven. De gegevens worden alleen verzameld traces met Error niveau.

In beide gevallen blijft u fouten en uitzonderingen verzamelen op het tabblad Application Insights en Function Monitor . Zie Oplossingen met een groot aantal telemetriegegevens voor meer informatie.

De aggregator configureren

Zoals u in de vorige sectie hebt genoteerd, worden in de runtime gegevens over functie-uitvoeringen gedurende een bepaalde periode samengevoegd. De standaardperiode is 30 seconden of 1000 uitvoeringen, afhankelijk van wat het eerst voorkomt. U kunt deze instelling configureren in het host.json-bestand. Hier volgt een voorbeeld:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

Steekproeven configureren

Application Insights heeft een samplingfunctie die u kan beschermen tegen het produceren van te veel telemetriegegevens bij voltooide uitvoeringen op momenten van piekbelasting. Wanneer de snelheid van binnenkomende uitvoeringen een opgegeven drempelwaarde overschrijdt, begint Application Insights een aantal binnenkomende uitvoeringen willekeurig te negeren. De standaardinstelling voor het maximum aantal uitvoeringen per seconde is 20 (vijf in versie 1.x). U kunt steekproeven configureren in host.json. Hier volgt een voorbeeld:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

U kunt bepaalde typen telemetrie uitsluiten van steekproeven. In dit voorbeeld worden gegevens van het type Request en Exception uitgesloten van steekproeven. Het zorgt ervoor dat alle uitvoeringen van functies (aanvragen) en uitzonderingen worden geregistreerd terwijl andere typen telemetrie onderhevig blijven aan steekproeven.

Als uw project afhankelijk is van de Application Insights SDK voor het handmatig bijhouden van telemetrie, kan het vreemd gedrag optreden als uw steekproefconfiguratie verschilt van de steekproefconfiguratie in uw functie-app. In dergelijke gevallen gebruikt u dezelfde steekproefconfiguratie als de functie-app. Zie Sampling in Application Insights voor meer informatie.

SQL-queryverzameling inschakelen

Application Insights verzamelt automatisch gegevens over afhankelijkheden voor HTTP-aanvragen, databaseaanroepen en voor verschillende bindingen. Zie voor meer informatie Afhankelijkheden. Voor SQL-aanroepen wordt de naam van de server en database altijd verzameld en opgeslagen, maar sql-querytekst wordt niet standaard verzameld. U kunt logboekregistratie van SQL-queryteksten inschakelen dependencyTrackingOptions.enableSqlCommandTextInstrumentation door (minimaal) het volgende in uw host.json-bestand in te stellen:

"logging": {
    "applicationInsights": {
        "enableDependencyTracking": true,    
        "dependencyTrackingOptions": {
            "enableSqlCommandTextInstrumentation": true
        }
    }
}

Zie Geavanceerde SQL-tracering voor meer informatie om een volledige SQL-query op te halen.

Schaalcontrollerlogboeken configureren

Deze functie is beschikbaar als preview-versie.

U kunt de Azure Functions-schaalcontroller logboeken laten verzenden naar Application Insights of blobopslag om beter inzicht te krijgen in de beslissingen die de schaalcontroller neemt voor uw functie-app.

Als u deze functie wilt inschakelen, kunt u een toepassingsinstelling met de naam SCALE_CONTROLLER_LOGGING_ENABLED toevoegen aan de instellingen van uw functie-app. De volgende waarde van de instelling moet de notatie <DESTINATION>:<VERBOSITY>hebben:

Eigenschappen Beschrijving
<DESTINATION> Het doel waarnaar logboeken worden verzonden. Geldige waarden zijn AppInsights en Blob.
Wanneer u deze gebruikt AppInsights, moet u ervoor zorgen dat Application Insights is ingeschakeld in uw functie-app.
Wanneer u het doel Blobinstelt, worden logboeken gemaakt in een blobcontainer met de naam azure-functions-scale-controller in het standaardopslagaccount dat is ingesteld in de AzureWebJobsStorage toepassingsinstelling.
<VERBOSITY> Hiermee geeft u het niveau van logboekregistratie op. Ondersteunde waarden zijn None, Warningen Verbose.
Wanneer dit is ingesteld Verbose, registreert de schaalcontroller een reden voor elke wijziging in het aantal werknemers en informatie over de triggers die in deze beslissingen van invloed zijn. Uitgebreide logboeken bevatten triggerwaarschuwingen en de hashes die door de triggers worden gebruikt voor en nadat de schaalcontroller wordt uitgevoerd.

Tip

Houd er rekening mee dat wanneer u de logboekregistratie van de schaalcontroller ingeschakeld laat, dit van invloed is op de mogelijke kosten voor het bewaken van uw functie-app. Overweeg logboekregistratie in te schakelen totdat u voldoende gegevens hebt verzameld om te begrijpen hoe de schaalcontroller werkt en deze vervolgens uit te schakelen.

Met de volgende Azure CLI-opdracht wordt uitgebreide logboekregistratie van de schaalcontroller naar Application Insights ingeschakeld:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose

Vervang in dit voorbeeld <FUNCTION_APP_NAME> respectievelijk <RESOURCE_GROUP_NAME> de naam van uw functie-app en de naam van de resourcegroep.

Met de volgende Azure CLI-opdracht wordt logboekregistratie uitgeschakeld door de uitgebreidheid in te stellen op None:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None

U kunt logboekregistratie ook uitschakelen door de SCALE_CONTROLLER_LOGGING_ENABLED instelling te verwijderen met behulp van de volgende Azure CLI-opdracht:

az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED

Als logboekregistratie van de schaalcontroller is ingeschakeld, kunt u nu query's uitvoeren op de logboeken van uw schaalcontroller.

Application Insights-integratie inschakelen

Als een functie-app gegevens naar Application Insights wil verzenden, moet deze verbinding maken met de Application Insights-resource met behulp van slechts een van deze toepassingsinstellingen:

Naam instelling Beschrijving
APPLICATIONINSIGHTS_CONNECTION_STRING Dit is de aanbevolen instelling, die vereist is wanneer uw Application Insights-exemplaar wordt uitgevoerd in een onafhankelijke cloud. De verbindingsreeks ondersteunt andere nieuwe mogelijkheden.
APPINSIGHTS_INSTRUMENTATIONKEY Verouderde instelling, die door Application Insights wordt afgeschaft ten gunste van de verbindingsreeks instelling.

Wanneer u uw functie-app maakt in Azure Portal vanaf de opdrachtregel met behulp van Azure Functions Core Tools of Visual Studio Code, wordt Application Insights-integratie standaard ingeschakeld. De Application Insights-resource heeft dezelfde naam als uw functie-app en wordt gemaakt in dezelfde regio of in de dichtstbijzijnde regio.

Nieuwe functie-app in de portal

Als u de Application Insights-resource wilt bekijken die wordt gemaakt, selecteert u deze om het Application Insights-venster uit te vouwen. U kunt de naam van de nieuwe resource wijzigen of een andere locatie selecteren in een Azure-geografie waar u uw gegevens wilt opslaan.

Screenshot of enabling Application Insights while creating a function app.

Wanneer u Maken selecteert, wordt er een Application Insights-resource gemaakt met uw functie-app, die is APPLICATIONINSIGHTS_CONNECTION_STRING ingesteld in toepassingsinstellingen. Alles is klaar om te gaan.

Toevoegen aan een bestaande functie-app

Als er geen Application Insights-resource is gemaakt met uw functie-app, gebruikt u de volgende stappen om de resource te maken. Vervolgens kunt u de verbindingsreeks vanuit die resource toevoegen als toepassingsinstelling in uw functie-app.

  1. Zoek en selecteer in Azure Portal de functie-app en selecteer vervolgens uw functie-app.

  2. Selecteer bovenaan het venster de banner Application Insights is not configured (Application Insights is niet geconfigureerd). Als u deze banner niet ziet staan, is Application Insights al ingeschakeld voor uw app.

    Screenshot of enabling Application Insights from the portal.

  3. Vouw Wijzig uw resource uit en maak een Application Insights-resource met behulp van de instellingen die zijn opgegeven in de volgende tabel:

    Instelling Voorgestelde waarde Beschrijving
    Nieuwe resourcenaam Unieke app-naam Het is het gemakkelijkst om dezelfde naam als voor uw functie-app te gebruiken. Deze naam moet uniek zijn in uw abonnement.
    Location Europa -west Gebruik indien mogelijk dezelfde regio als uw functie-app of de regio die zich dicht bij die regio bevindt.

    Screenshot of creating an Application Insights resource.

  4. Selecteer Toepassen.

    De Application Insights-resource wordt gemaakt in dezelfde resourcegroep en hetzelfde abonnement als uw functie-app. Nadat de resource is gemaakt, sluit u het Application Insights-venster .

  5. Selecteer Configuratie onder Instellingen in uw functie-app en selecteer vervolgens Toepassingsinstellingen. Als u een instelling met de naam APPLICATIONINSIGHTS_CONNECTION_STRING ziet, wordt de Application Insights-integratie ingeschakeld voor de functie-app die in Azure wordt uitgevoerd. Als deze instelling om een of andere reden niet bestaat, voegt u deze toe met uw Application Insights-verbindingsreeks als de waarde.

Notitie

Oudere functie-apps gebruiken APPINSIGHTS_INSTRUMENTATIONKEY mogelijk in plaats van APPLICATIONINSIGHTS_CONNECTION_STRING. Indien mogelijk moet u uw app bijwerken om de verbindingsreeks te gebruiken in plaats van de instrumentatiesleutel.

Ingebouwde logboekregistratie uitschakelen

Vroege versies van Functions hebben ingebouwde bewaking gebruikt, wat niet meer wordt aanbevolen. Wanneer u Application Insights inschakelt, schakelt u de ingebouwde logboekregistratie uit die gebruikmaakt van Azure Storage. De ingebouwde logboekregistratie is handig voor het testen met lichte werkbelastingen, maar is niet bedoeld voor productiegebruik met hoge belasting. Voor productiebewaking raden we Application Insights aan. Als ingebouwde logboekregistratie wordt gebruikt in productie, is de logboekregistratierecord mogelijk onvolledig vanwege beperking in Azure Storage.

Als u ingebouwde logboekregistratie wilt uitschakelen, verwijdert u de AzureWebJobsDashboard app-instelling. Zie de sectie Toepassingsinstellingen van Een functie-app beheren voor meer informatie over het verwijderen van app-instellingen in Azure Portal. Voordat u de app-instelling verwijdert, moet u ervoor zorgen dat er geen bestaande functies in dezelfde functie-app de instelling gebruiken voor Azure Storage-triggers of -bindingen.

Oplossingen met een groot aantal telemetriegegevens

Functie-apps zijn een essentieel onderdeel van oplossingen die grote hoeveelheden telemetrie kunnen veroorzaken, zoals IoT-oplossingen, snelle, gebeurtenisgestuurde oplossingen, financiële systemen met hoge belasting en integratiesystemen. In dit geval moet u rekening houden met extra configuratie om de kosten te verlagen en tegelijkertijd de waarneembaarheid te behouden.

De gegenereerde telemetrie kan worden gebruikt in realtime dashboards, waarschuwingen, gedetailleerde diagnostische gegevens, enzovoort. Afhankelijk van hoe de gegenereerde telemetrie wordt verbruikt, moet u een strategie definiëren om het aantal gegenereerde gegevens te verminderen. Met deze strategie kunt u uw functie-apps in productie op de juiste manier bewaken, gebruiken en diagnosticeren. U kunt de volgende opties overwegen:

  • Gebruik steekproeven: zoals eerder vermeld, helpt het om het volume van opgenomen telemetriegebeurtenissen aanzienlijk te verminderen en tegelijkertijd een statistisch juiste analyse te behouden. Het kan gebeuren dat u zelfs met behulp van steekproeven nog steeds een groot aantal telemetriegegevens krijgt. Inspecteer de opties die adaptieve steekproeven voor u bieden. Stel bijvoorbeeld de maxTelemetryItemsPerSecond waarde in op een waarde waarmee het volume dat is gegenereerd, wordt afgestemd op uw bewakingsbehoeften. Houd er rekening mee dat de telemetriesampling wordt toegepast per host die uw functie-app uitvoert.

  • Standaardlogboekniveau: gebruik Warning of Error als de standaardwaarde voor alle telemetriecategorieën. U kunt nu bepalen welke categorieën u op niveau wilt instellen Information , zodat u uw functies goed kunt controleren en diagnosticeren.

  • Uw functiestelemetrie afstemmen: als het standaardlogboekniveau is ingesteld op Error of Warning, worden er geen gedetailleerde gegevens van elke functie verzameld (afhankelijkheden, aangepaste metrische gegevens, aangepaste gebeurtenissen en traceringen). Voor deze functies die essentieel zijn voor productiebewaking, definieert u een expliciete vermelding voor Function.<YOUR_FUNCTION_NAME> de categorie en stelt u deze Informationin op , zodat u gedetailleerde informatie kunt verzamelen. Om te voorkomen dat door de gebruiker gegenereerde logboeken op Information niveau worden verzameld, stelt u de Function.<YOUR_FUNCTION_NAME>.User categorie Error in op of Warning op logboekniveau.

  • Host.Aggregator-categorie: Zoals beschreven in configuratiecategorieën, biedt deze categorie geaggregeerde informatie over functie-aanroepen. De informatie uit deze categorie wordt verzameld in de Application Insights-tabel customMetrics en wordt weergegeven op het tabblad Overzicht van de functie in Azure Portal. Afhankelijk van hoe u de aggregator configureert, moet u er rekening mee houden dat er een vertraging is, bepaald door de flushTimeout, in de verzamelde telemetrie. Als u deze categorie instelt op een andere waarde danInformation, stopt u met het verzamelen van de gegevens in de customMetrics tabel en worden geen metrische gegevens weergegeven op het tabblad Overzicht van de functie.

    In de volgende schermopname ziet Host.Aggregator u telemetriegegevens die worden weergegeven op het tabblad Overzicht van de functie:

    Screenshot of Host.Aggregator telemetry displayed in function Overview tab.

    In de volgende schermopname ziet Host.Aggregator u telemetriegegevens in de Application Insights-tabel customMetrics :

    Screenshot of Host.Aggregator telemetry in customMetrics Application Insights table.

  • Categorie Host.Results: Zoals beschreven in categorieën configureren, biedt deze categorie de door runtime gegenereerde logboeken die aangeven dat een functie aanroep is geslaagd of mislukt. De informatie uit deze categorie wordt verzameld in de Application Insights-tabel requests en wordt weergegeven op het tabblad Controle van de functie en in verschillende Application Insights-dashboards (prestaties, fouten, enzovoort). Als u deze categorie instelt op een andere waarde dan Information, verzamelt u alleen telemetrie die is gegenereerd op het gedefinieerde logboekniveau (of hoger). Als u deze bijvoorbeeld instelt op error resultaten in het bijhouden van aanvragen, worden alleen gegevens bijgehouden voor mislukte uitvoeringen.

    In de volgende schermopname ziet u de Host.Results telemetriegegevens die worden weergegeven op het tabblad Functiecontrole:

    Screenshot of Host.Results telemetry in function Monitor tab.

    In de volgende schermopname ziet Host.Results u telemetriegegevens die worden weergegeven in het Application Insights Performance-dashboard:

    Screenshot of Host.Results telemetry in Application Insights Performance dashboard.

  • Host.Aggregator versus Host.Results: Beide categorieën bieden goede inzichten over functie-uitvoeringen. Indien nodig kunt u de gedetailleerde informatie uit een van deze categorieën verwijderen, zodat u de andere kunt gebruiken voor bewaking en waarschuwingen. Hier volgt een voorbeeld:

{
  "version": "2.0",  
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Error",
      "Host.Aggregator": "Error",
      "Host.Results": "Information", 
      "Function.Function1": "Information",
      "Function.Function1.User": "Error"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
} 

Met deze configuratie hebt u het volgende:

  • De standaardwaarde voor alle functies en telemetriecategorieën is ingesteld op Warning (inclusief Microsoft- en Werkrolcategorieën). Alle fouten en waarschuwingen die worden gegenereerd door runtime en aangepaste logboekregistratie, worden dus standaard verzameld.

  • Het Function categorielogboekniveau is ingesteld op Error, dus voor alle functies worden standaard alleen uitzonderingen en foutenlogboeken verzameld (afhankelijkheden, door de gebruiker gegenereerde metrische gegevens en door de gebruiker gegenereerde gebeurtenissen worden overgeslagen).

  • Voor de Host.Aggregator categorie, omdat deze is ingesteld op Error logboekniveau, worden geaggregeerde gegevens uit functie-aanroepen niet verzameld in de customMetrics Application Insights-tabel en worden gegevens over het aantal uitvoeringen (totaal, geslaagd en mislukt) niet weergegeven in het dashboard van het functieoverzicht.

  • Voor de Host.Results categorie worden alle uitvoeringsinformatie van de host verzameld in de requests Application Insights-tabel. Alle resultaten van de aanroepen worden weergegeven in het dashboard van de functie Monitor en in Application Insights-dashboards.

  • Voor de aangeroepen Function1functie hebben we het logboekniveau ingesteld op Information. Voor deze concrete functie worden alle telemetriegegevens verzameld (afhankelijkheid, aangepaste metrische gegevens en aangepaste gebeurtenissen). Voor dezelfde functie is de categorie (door de Function1.User gebruiker gegenereerde traceringen) ingesteld op Error, zodat alleen aangepaste foutlogboekregistratie wordt verzameld.

    Notitie

    Configuratie per functie wordt niet ondersteund in v1.x.

  • Sampling is geconfigureerd voor het verzenden van één telemetrie-item per seconde per type, met uitzondering van de uitzonderingen. Deze steekproef vindt plaats voor elke serverhost waarop onze functie-app wordt uitgevoerd. Als we dus vier exemplaren hebben, worden met deze configuratie vier telemetrie-items per seconde per type verzonden en worden alle uitzonderingen die kunnen optreden, verzonden.

    Notitie

    Metrische tellingen, zoals aanvraagsnelheid en uitzonderingsfrequentie, worden aangepast om de steekproeffrequentie te compenseren, zodat ze ongeveer juiste waarden weergeven in Metric Explorer.

Tip

Experimenteer met verschillende configuraties om ervoor te zorgen dat u voldoet aan uw vereisten voor logboekregistratie, bewaking en waarschuwingen. Zorg er ook voor dat u gedetailleerde diagnostische gegevens hebt in geval van onverwachte fouten of storingen.

Bewakingsconfiguratie tijdens runtime overschrijven

Ten slotte kunnen er situaties zijn waarin u snel het logboekgedrag van een bepaalde categorie in productie moet wijzigen en u niet een hele implementatie wilt maken voor een wijziging in het host.json-bestand . In dergelijke gevallen kunt u de waarden host.json overschrijven.

Als u deze waarden wilt configureren op app-instellingenniveau (en het opnieuw implementeren van alleen host.json-wijzigingen wilt voorkomen), moet u specifieke host.json waarden overschrijven door een equivalente waarde te maken als een toepassingsinstelling. Wanneer de runtime een toepassingsinstelling in de indeling AzureFunctionsJobHost__path__to__settingvindt, wordt de equivalente host.json instelling path.to.setting in de JSON overschreven. Wanneer deze wordt uitgedrukt als een toepassingsinstelling, wordt de punt (.) die wordt gebruikt om aan te geven dat de JSON-hiërarchie wordt vervangen door een dubbel onderstrepingsteken (__). U kunt bijvoorbeeld de onderstaande app-instellingen gebruiken om afzonderlijke functielogboekniveaus te configureren, zoals hierboven host.json .

Host.json-pad App-instelling
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function__Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function__Function1__User

U kunt de instellingen rechtstreeks overschrijven op de blade Functie-appconfiguratie van de Azure-portal of met behulp van een Azure CLI- of PowerShell-script.

az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host__Aggregator=Information"

Notitie

Als u het host.json wijzigen van app-instellingen overschrijft, wordt uw functie-app opnieuw gestart. App-instellingen die een periode bevatten, worden niet ondersteund bij het uitvoeren op Linux in een Elastic Premium-abonnement of een Toegewezen (App Service)-abonnement. In deze hostingomgevingen moet u het host.json-bestand blijven gebruiken.

Functie-apps bewaken met statuscontrole

De functie Statuscontrole kan worden gebruikt voor het bewaken van functie-apps in de Abonnementen Premium (Elastic Premium) en Dedicated (App Service). Statuscontrole is geen optie voor het verbruiksabonnement. Zie App Service-exemplaren bewaken met behulp van statuscontrole voor meer informatie over het configureren ervan. Uw functie-app moet een HTTP-triggerfunctie hebben die reageert met een HTTP-statuscode van 200 op hetzelfde eindpunt als geconfigureerd op de parameter Path van de statuscontrole. U kunt deze functie ook extra controles laten uitvoeren om ervoor te zorgen dat afhankelijke services bereikbaar en werken.

Volgende stappen

Zie voor meer informatie over bewaking: