Dela via


Övervaka Azure Functions med Azure Monitor Application Insights

Azure Functions erbjuder inbyggd integrering med Application Insights för att övervaka funktioner. För andra språk än .NET och .NET Core behövs andra språkspecifika arbetare/tillägg för att få de fullständiga fördelarna med distribuerad spårning.

Application Insights samlar in logg-, prestanda- och feldata och identifierar automatiskt prestandaavvikelser. Application Insights innehåller kraftfulla analysverktyg som hjälper dig att diagnostisera problem och förstå hur dina funktioner används. När du har insyn i dina programdata kan du kontinuerligt förbättra prestanda och användbarhet. Du kan till och med använda Application Insights under projektutvecklingen för lokala funktionsappar.

Den nödvändiga Application Insights-instrumentationen är inbyggd i Azure Functions. Allt du behöver är en giltig anslutningssträng för att ansluta funktionsappen till en Application Insights-resurs. Anslutningssträng ska läggas till i dina programinställningar när funktionsappresursen skapas i Azure. Om funktionsappen inte redan har en anslutningssträng kan du ange den manuellt. För mer information, se Övervaka körningar i Azure Functions och Anslutningssträngar.

Kommentar

Stödet för inmatning av instrumentationsnycklar upphör den 31 mars 2025. Inmatningen av instrumenteringsnyckeln fortsätter att fungera, men vi kommer inte längre att tillhandahålla uppdateringar eller stöd för funktionen. Övergå till anslutningssträng för att dra nytta av nya funktioner.

En lista över scenarier med automatisk instrumentering som stöds finns i Miljöer, språk och resursprovidrar som stöds.

Distribuerad spårning för Java-program

Kommentar

Den här funktionen hade tidigare en kallstartseffekt på 8 till 9 sekunder, som har reducerats till mindre än 1 sekund. Om du var en tidig användare av den här funktionen (till exempel före februari 2023) läser du Långsamma starttider för att uppdatera till den aktuella versionen och dra nytta av den nya snabbare starten.

Om du vill visa mer data från dina Java-baserade Azure Functions-program än vad som samlas in som standard aktiverar du Application Insights Java 3.x-agenten. Med den här agenten kan Application Insights automatiskt samla in och korrelera beroenden, loggar och mått från populära bibliotek och Azure Software Development Kits (SDK:er). Denna telemetri är i tillägg till den begäranstelemetri som redan har samlats in av funktionerna.

Genom att använda programkartan och få en mer fullständig vy över transaktioner från slutpunkt till slutpunkt kan du bättre diagnostisera problem. Du har en topologisk vy över hur system interagerar tillsammans med data om genomsnittliga prestanda- och felfrekvenser. Du har också mer data för diagnostik från slutpunkt till slutpunkt. Du kan använda programkartan för att enkelt hitta rotorsaken till tillförlitlighetsproblem och flaskhalsar för prestanda per begäran.

För mer avancerade användningsfall kan du ändra telemetri genom att lägga till intervall, uppdatera span-status och lägga till spanattribut. Du kan också skicka anpassad telemetri med hjälp av standard-API:er.

Aktivera distribuerad spårning för Java-funktionsappar

Gå till Application Insights i funktionsappens översiktsfönster. Under Samlingsnivå väljer du Rekommenderas.

Skärmbild som visar hur du aktiverar AppInsights Java-agenten.

Konfiguration

Om du vill konfigurera den här funktionen för en Azure-funktionsapp som inte finns i en förbrukningsplan lägger du till miljövariabler i Appinställningar. Mer information om tillgängliga konfigurationer finns i Konfigurationsalternativ: Azure Monitor Application Insights för Java.

För Azure Functions i en förbrukningsplan är de tillgängliga konfigurationsalternativen begränsade till APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL och APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL. Om du vill göra ytterligare konfigurationer på en förbrukningsplansfunktion distribuerar du din egen agent. Mer information finns i Anpassad distribuerad spårningsagent för Java Functions.

Om du distribuerar en egen agent får du en längre konsekvens av kallstart för förbrukningsplanen Functions.

Felsökning

Felsökningsvägledning finns i Problem med Java-app som körs på Azure Functions.

Distribuerad spårning för Node.js funktionsappar

Om du vill visa mer data från ditt Node.js program som körs på Azure Functions än vad som samlas in som standard med automatisk instrumentering kan du instrumentera programmet manuellt med hjälp av Azure Monitor OpenTelemetry Distro.

Distribuerad spårning för Python-funktionsappar

Om du vill samla in telemetri från tjänster som Begäranden, urllib3, httpx, PsycoPG2 med mera använder du Azure Monitor OpenTelemetry Distro. Spårade inkommande begäranden som kommer till ditt Python-program i Azure Functions korreleras inte automatiskt med telemetri som spåras i det. Du kan uppnå spårningskorrelation manuellt genom att extrahera TraceContext direkt på följande sätt:

import azure.functions as func

from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract

# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()

def main(req: func.HttpRequest, context) -> func.HttpResponse:
   ...
   # Store current TraceContext in dictionary format
   carrier = {
      "traceparent": context.trace_context.Traceparent,
      "tracestate": context.trace_context.Tracestate,
   }
   tracer = trace.get_tracer(__name__)
   # Start a span using the current context
   with tracer.start_as_current_span(
      "http_trigger_span",
      context=extract(carrier),
   ):
      ...

Nästa steg