Uitvoeringen bewaken in Azure Functions

Azure Functions biedt ingebouwde integratie met Azure-toepassing Insights om de uitvoering van functies te bewaken. Dit artikel bevat een overzicht van de bewakingsmogelijkheden van Azure voor het bewaken van Azure Functions.

Application Insights verzamelt logboek-, prestatie- en foutgegevens. Door automatisch prestatieafwijkingen en krachtige analysehulpprogramma's te detecteren, kunt u gemakkelijker problemen diagnosticeren en beter begrijpen hoe uw functies worden gebruikt. Deze hulpprogramma's zijn ontworpen om u te helpen de prestaties en bruikbaarheid van uw functies continu te verbeteren. U kunt Application Insights zelfs gebruiken tijdens het ontwikkelen van een lokaal functie-app-project. Zie Wat is Application Insights?voor meer informatie.

Aangezien Application Insights-instrumentatie is ingebouwd in Azure Functions, hebt u een geldige instrumentatiesleutel nodig om uw functie-app te verbinden met een Application Insights-resource. De instrumentatiesleutel wordt toegevoegd aan uw toepassingsinstellingen wanneer u uw functie-app-resource maakt in Azure. Als uw functie-app deze sleutel nog niet heeft, kunt u deze handmatig instellen.

U kunt de functie-app zelf ook bewaken met behulp van Azure Monitor. Zie Bewaking Azure Functions met Azure Monitor voor meer informatie.

Prijzen en limieten voor Application Insights

U kunt Application Insights-integratie gratis uitproberen met Azure Functions met een dagelijkse limiet voor het gratis verwerken van gegevens.

Als u Applications Insights inschakelt tijdens de ontwikkeling, bereikt u deze limiet tijdens het testen. Azure biedt portal- en e-mailmeldingen wanneer u uw dagelijkse limiet nadert. Als u deze waarschuwingen mist en de limiet bereikt, worden nieuwe logboeken niet weergegeven in Application Insights-query's. Houd rekening met de limiet om onnodige probleemoplossingstijd te voorkomen. Zie Application Insights-facturering voor meer informatie.

Belangrijk

Application Insights heeft een samplingfunctie die u kan beschermen tegen het produceren van te veel telemetriegegevens over voltooide uitvoeringen op momenten van piekbelasting. Steekproeven zijn standaard ingeschakeld. Als er gegevens ontbreken, moet u mogelijk de steekproefinstellingen aanpassen aan uw specifieke bewakingsscenario. Zie Sampling configureren voor meer informatie.

De volledige lijst met Application Insights-functies die beschikbaar zijn voor uw functie-app, wordt beschreven in Application Insights voor Azure Functions ondersteunde functies.

Application Insights-integratie

Normaal gesproken maakt u een Application Insights-exemplaar wanneer u uw functie-app maakt. In dit geval is de instrumentatiesleutel die vereist is voor de integratie al ingesteld als een toepassingsinstelling met de naam APPINSIGHTS_INSTRUMENTATIONKEY. Als uw functie-app om een of andere reden niet beschikt over de instrumentatiesleutelset, moet u Application Insights-integratie inschakelen.

Belangrijk

Soevereine clouds, zoals Azure Government, vereisen het gebruik van de Application Insights-connection string (APPLICATIONINSIGHTS_CONNECTION_STRING) in plaats van de instrumentatiesleutel. Zie de APPLICATIONINSIGHTS_CONNECTION_STRING referentie voor meer informatie.

Telemetriegegevens verzamelen

Als Application Insights-integratie is ingeschakeld, worden telemetriegegevens verzonden naar uw verbonden Application Insights-exemplaar. Deze gegevens omvatten logboeken die zijn gegenereerd door de Functions-host, traceringen die zijn geschreven uit uw functiecode en prestatiegegevens.

Notitie

Naast gegevens van uw functies en de Functions-host kunt u ook gegevens verzamelen van de Controller voor functions-schaal.

Logboekniveaus en -categorieën

Wanneer u traceringen schrijft vanuit uw toepassingscode, moet u een logboekniveau toewijzen aan de traceringen. Logboekniveaus bieden een manier om de hoeveelheid gegevens te beperken die uit uw traceringen wordt verzameld.

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

Logniveau Code Description
Tracering 0 Logboeken die de meest gedetailleerde berichten bevatten. Deze berichten bevatten mogelijk gevoelige toepassingsgegevens. Deze berichten zijn standaard uitgeschakeld en mogen 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 langetermijnwaarde hebben.
Informatie 2 Logboeken waarmee de algemene stroom van de toepassing wordt bijgehouden. 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.
Fout 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 waarin een onherstelbare toepassing of systeemcrash wordt beschreven, of een onherstelbare fout waarvoor onmiddellijke aandacht is vereist.
Geen 6 Hiermee schakelt u logboekregistratie voor de opgegeven categorie uit.

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

Zie Logboekniveaus configureren voor meer informatie over logboekniveaus.

Door vastgelegde items toe te wijzen aan een categorie, hebt u meer controle over telemetrie die is gegenereerd op basis van specifieke bronnen in uw functie-app. Met categorieën kunt u eenvoudiger analyses uitvoeren op verzamelde gegevens. Traceringen die zijn geschreven vanuit uw functiecode, worden toegewezen aan afzonderlijke categorieën op basis van de functienaam. Zie Categorieën configureren voor meer informatie over categorieën.

Aangepaste telemetriegegevens

In C#, JavaScript en Python kunt u een Application Insights SDK gebruiken om aangepaste telemetriegegevens te schrijven.

Afhankelijkheden

Vanaf versie 2.x van Functions verzamelt Application Insights automatisch gegevens over afhankelijkheden voor bindingen die gebruikmaken van bepaalde client-SDK's. Gedistribueerde tracering en afhankelijkheidstracering van Application Insights worden momenteel niet ondersteund voor C#-apps die worden uitgevoerd in een geïsoleerd proces. Application Insights verzamelt gegevens over de volgende afhankelijkheden:

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Azure Storage-services (blob, wachtrij en tabel)

HTTP-aanvragen en databaseoproepen die worden gebruikt SqlClient , worden ook vastgelegd. Zie automatisch bijgehouden afhankelijkheden voor de volledige lijst met afhankelijkheden die worden ondersteund door Application Insights.

Application Insights genereert een toepassingsoverzicht van verzamelde afhankelijkheidsgegevens. Hier volgt een voorbeeld van een toepassingstoewijzing van een HTTP-triggerfunctie met een Queue Storage-uitvoerbinding.

Toepassingsoverzicht met afhankelijkheid

Afhankelijkheden worden geschreven op het Information niveau. Als u filtert op Warning of hoger, ziet u de afhankelijkheidsgegevens niet. Het automatisch verzamelen van afhankelijkheden vindt ook plaats op een niet-gebruikersbereik. Als u afhankelijkheidsgegevens wilt vastleggen, moet u ervoor zorgen dat het niveau is ingesteld op ten minste Information buiten het gebruikersbereik (Function.<YOUR_FUNCTION_NAME>.User) in uw host.

Naast het automatisch verzamelen van afhankelijkheidsgegevens kunt u ook een van de taalspecifieke Application Insights SDK's gebruiken om aangepaste afhankelijkheidsinformatie naar de logboeken te schrijven. Zie een van de volgende taalspecifieke voorbeelden voor een voorbeeld van het schrijven van aangepaste afhankelijkheden:

Schrijven naar logboeken

De manier waarop u schrijft naar logboeken en de API's die u gebruikt, is afhankelijk van de taal van uw functie-app-project.
Zie de ontwikkelaarshandleiding voor uw taal voor meer informatie over het schrijven van logboeken vanuit uw functies.

Gegevens analyseren

De gegevens die zijn verzameld uit uw functie-app, worden standaard opgeslagen in Application Insights. In de Azure Portal biedt Application Insights een uitgebreide set visualisaties van uw telemetriegegevens. U kunt inzoomen op foutenlogboeken en querygebeurtenissen en metrische gegevens. Zie Analyseren Azure Functions telemetrie in Application Insights voor meer informatie, inclusief basisvoorbeelden van het weergeven en opvragen van uw verzamelde gegevens.

Streaminglogboeken

Tijdens het ontwikkelen van een toepassing wilt u vaak zien wat er in bijna realtime naar de logboeken wordt geschreven bij het uitvoeren in Azure.

Er zijn twee manieren om een stroom van de logboekgegevens weer te geven die worden gegenereerd door uw functie-uitvoeringen.

  • Ingebouwde logboekstreaming: met het App Service-platform kunt u een stroom van uw toepassingslogboekbestanden bekijken. Deze stroom is gelijk aan de uitvoer die wordt weergegeven wanneer u fouten in uw functies opspoort tijdens de lokale ontwikkeling en wanneer u het tabblad Testen in de portal gebruikt. Alle op logboeken gebaseerde informatie wordt weergegeven. Zie Stream-logboeken voor meer informatie. Deze streamingmethode ondersteunt slechts één exemplaar en kan niet worden gebruikt met een app die wordt uitgevoerd in Linux in een verbruiksplan.

  • Live Metrics Stream: wanneer uw functie-app is verbonden met Application Insights, kunt u logboekgegevens en andere metrische gegevens in bijna realtime weergeven in de Azure Portal met behulp van Live Metrics Stream. Gebruik deze methode bij het bewaken van functies die worden uitgevoerd op meerdere exemplaren of op Linux in een verbruiksplan. Deze methode maakt gebruik van voorbeeldgegevens.

Logboekstreams kunnen zowel in de portal als in de meeste lokale ontwikkelomgevingen worden weergegeven. Zie Logboeken voor streaminguitvoering inschakelen in Azure Functions voor meer informatie over het inschakelen van logboekstreams.

Diagnostische logboeken

Met Application Insights kunt u telemetriegegevens exporteren naar langetermijnopslag of andere analysis services.

Omdat Functions ook kan worden geïntegreerd met Azure Monitor, kunt u ook diagnostische instellingen gebruiken om telemetriegegevens naar verschillende bestemmingen te verzenden, waaronder Azure Monitor-logboeken. Zie Bewaking Azure Functions met Azure Monitor-logboeken voor meer informatie.

Controllerlogboeken schalen

De Azure Functions schaalcontroller bewaakt exemplaren van de Azure Functions host waarop uw app wordt uitgevoerd. Deze controller neemt beslissingen over het toevoegen of verwijderen van exemplaren op basis van de huidige prestaties. U kunt de schaalcontroller logboeken laten verzenden naar Application Insights om beter inzicht te krijgen in de beslissingen die de schaalcontroller neemt voor uw functie-app. U kunt de gegenereerde logboeken ook opslaan in Blob Storage voor analyse door een andere service.

Als u deze functie wilt inschakelen, voegt u een toepassingsinstelling toe met de naam aan SCALE_CONTROLLER_LOGGING_ENABLED de instellingen van uw functie-app. Zie Schaalcontrollerlogboeken configureren voor meer informatie.

Metrische gegevens van Azure Monitor

Naast telemetriegegevens op basis van logboeken die worden verzameld door Application Insights, kunt u ook gegevens ophalen over hoe de functie-app wordt uitgevoerd vanuit Metrische gegevens van Azure Monitor. Zie Bewaking met Azure Monitor voor meer informatie.

Problemen melden

Als u een probleem wilt melden met Application Insights-integratie in Functions of een suggestie of aanvraag wilt doen, maakt u een probleem in GitHub.

Volgende stappen

Zie de volgende resources voor meer informatie: