Monitorování služby Azure Functions pomocí Přehledy aplikací Azure Monitoru

Azure Functions nabízí integrovanou integraci s aplikačními Přehledy pro monitorování funkcí. Pro jazyky jiné než .NET a .NET Core jsou potřeba další pracovní procesy a rozšíření specifické pro jazyk, aby bylo možné získat úplné výhody distribuovaného trasování.

Aplikační Přehledy shromažďuje data protokolů, výkonu a chyb a automaticky detekuje anomálie výkonu. Aplikační Přehledy zahrnuje výkonné analytické nástroje, které vám pomůžou diagnostikovat problémy a pochopit, jak se používají vaše funkce. Když máte přehled o datech aplikace, můžete průběžně zlepšit výkon a použitelnost. Aplikaci můžete dokonce použít Přehledy během vývoje projektu místní aplikace funkcí.

Požadovaná instrumentace Přehledy aplikace je integrovaná do Azure Functions. Potřebujete jen platný připojovací řetězec pro připojení aplikace k prostředku Přehledy aplikace. Připojovací řetězec byste měli přidat do nastavení aplikace při vytvoření prostředku aplikace funkcí v Azure. Pokud vaše aplikace funkcí ještě nemá připojovací řetězec, můžete ji nastavit ručně. Další informace najdete v tématu Monitorování spuštění ve službě Azure Functions a Připojení řetězců.

Poznámka:

Podpora příjmu dat založeného na instrumentačním klíči skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.

Seznampodporovanýchch

Distribuované trasování pro aplikace v Javě

Poznámka:

Tato funkce se používá k tomu, aby byla 8 až 9sekundová implikace studeného spouštění, která byla snížena na méně než 1 sekundu. Pokud jste byli dřívějším uživatelem této funkce (například před únorem 2023), projděte si část Řešení potíží a aktualizujte ji na aktuální verzi a využijte výhod nového rychlejšího spuštění.

Pokud chcete zobrazit více dat z aplikací Azure Functions založených na Javě, než se shromažďuje ve výchozím nastavení, povolte agenta Application Přehledy Java 3.x. Tento agent umožňuje aplikacím Přehledy automaticky shromažďovat a korelovat závislosti, protokoly a metriky z oblíbených knihoven a sad SDK (Azure Software Development Kit). Tato telemetrie je navíc k telemetrii požadavku, která už služba Functions zachytila.

Pomocí mapy aplikace a ucelenějším zobrazením komplexních transakcí můžete lépe diagnostikovat problémy. Máte topologický přehled o interakci systémů s daty o průměrném výkonu a chybovosti. Máte také další data pro kompletní diagnostiku. Pomocí mapy aplikace můžete snadno najít hlavní příčinu problémů se spolehlivostí a kritickými body výkonu na základě jednotlivých požadavků.

Pro pokročilejší případy použití můžete upravit telemetrii přidáním rozsahů, aktualizací stavu rozsahu a přidáním atributů span. Vlastní telemetrii můžete také odesílat pomocí standardních rozhraní API.

Povolení distribuovaného trasování pro aplikace funkcí Java

V podokně Přehled aplikace funkcí přejděte na Přehledy aplikace. V části Úroveň kolekce vyberte Doporučené.

Snímek obrazovky znázorňující, jak povolit aplikaci Přehledy agenta Java

Řešení problému

Pokud jste tuto funkci přijali před únorem 2023, funkce Java můžou mít pomalé spouštění. V podokně Přehled aplikace funkcí přejděte v navigační nabídce na levé straně do části Konfigurace. Pak vyberte Nastavení aplikace a pomocí následujícího postupu problém opravte.

Windows

  1. Zkontrolujte, jestli existují následující nastavení, a odeberte je:

    XDT_MicrosoftApplicationInsights_Java -> 1
    ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
    
  2. Pokud chcete povolit nejnovější verzi, přidejte toto nastavení:

    APPLICATIONINSIGHTS_ENABLE_AGENT: true
    

Linux Dedicated/Premium

  1. Zkontrolujte, jestli existují následující nastavení, a odeberte je:

    ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
    
  2. Pokud chcete povolit nejnovější verzi, přidejte toto nastavení:

    APPLICATIONINSIGHTS_ENABLE_AGENT: true
    

Poznámka:

Pokud není ve službě Azure Functions dostupná nejnovější verze agenta aplikace Přehledy Javě, nahrajte ji ručně podle těchto pokynů.

Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat

Sady SDK a agenti aplikace Přehledy odesílají telemetrii, aby se ingestovala jako volání REST do koncových bodů příjmu dat. Připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat můžete otestovat pomocí nezpracovaných klientů REST z příkazů PowerShellu nebo curl. Viz Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor application Přehledy.

Duplicitní protokoly

Pokud používáte log4j nebo logback používáte protokolování konzoly, distribuované trasování funkcí Java vytvoří duplicitní protokoly. Tyto duplicitní protokoly se pak odešlou do aplikace Přehledy. Pokud se chcete tomuto chování vyhnout, použijte následující alternativní řešení.

Log4j

Do log4j.xml přidejte následující filtr:

<Filters>
  <ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>

Příklad:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
      <Filters>
        <ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
      </Filters>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>
Zpětný protokol

Do logback.xml přidejte následující filtr:

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>OFF</level>
</filter>  

Příklad:

<configuration debug="true">
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are  by default assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>OFF</level>
      </filter>  
    </encoder>
  </appender>
  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Distribuované trasování pro aplikace funkcí Node.js

Pokud chcete zobrazit více dat z aplikací Node Azure Functions, než se shromažďuje ve výchozím nastavení, instrumentujte funkci pomocí distrou OpenTelemetry služby Azure Monitor.

Distribuované trasování pro aplikace funkcí Pythonu

Pokud chcete shromažďovat telemetrii ze služeb, jako jsou requests, urllib3, httpx, PsycoPG2 a další, použijte distro OpenTelemetry služby Azure Monitor. Sledované příchozí požadavky přicházející do aplikace Pythonu hostované ve službě Azure Functions nebudou automaticky korelovány s telemetrií, která se v ní sleduje. Korelaci trasování můžete ručně dosáhnout tak, že extrahujete TraceContext přímo, jak je znázorněno níže:

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),
   ):
      ...

Další kroky