Monitorování azure Functions pomocí Azure Monitor Application Insights
Azure Functions nabízí integrovanou integraci s Application Insights 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í.
Application Insights shromažďuje data protokolů, výkonu a chyb a automaticky detekuje anomálie výkonu. Application Insights obsahuje výkonné analytické nástroje, které vám pomůžou diagnostikovat problémy a pochopit, jak se vaše funkce používají. Když máte přehled o datech aplikace, můžete průběžně zlepšit výkon a použitelnost. Application Insights můžete dokonce použít při vývoji projektu místní aplikace funkcí.
Požadovaná instrumentace Application Insights je integrovaná do Azure Functions. Jediné, co potřebujete, je platný připojovací řetězec pro připojení aplikace funkcí k prostředku Application Insights. 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řipojovacích řetězcích.
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.
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 Insights Java 3.x. Tento agent umožňuje Application Insights 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 Application Insights. V části Úroveň kolekce vyberte Doporučené.
Konfigurace
Pokud chcete tuto funkci nakonfigurovat pro aplikaci Funkcí Azure, která není v plánu consumption, přidejte proměnné prostředí v nastavení aplikace. Informace o dostupných konfiguracích najdete v tématu Možnosti konfigurace: Azure Monitor Application Insights pro Javu.
Pro Azure Functions v plánu consumption jsou dostupné možnosti konfigurace omezené na APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL a APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL. Pokud chcete provést další konfigurace funkce plánu Consumption, nasaďte vlastního agenta, podívejte se na vlastní distribuovaný agent trasování pro funkce Java Functions.
Nasazení vlastního agenta způsobí, že funkce plánu Consumption budou mít delší dopad na studené spuštění.
Ř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
Zkontrolujte, jestli existují následující nastavení, a odeberte je:
XDT_MicrosoftApplicationInsights_Java -> 1 ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
Pokud chcete povolit nejnovější verzi, přidejte toto nastavení:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Linux Dedicated/Premium
Zkontrolujte, jestli existují následující nastavení, a odeberte je:
ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
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 Application Insights v Javě, nahrajte ji ručně podle těchto pokynů.
Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
Sady Application Insights SDK a agenti 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 Insights.
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 Application Insights. 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 vaší aplikace v Pythonu hostované ve službě Azure Functions nejsou 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 takto:
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
- Přečtěte si další pokyny a informace o monitorování služby Azure Functions.
- Získejte přehled distribuovaného trasování.
- Podívejte se, co může mapa aplikace pro vaši firmu dělat.
- Přečtěte si o požadavcích a závislostech pro aplikace v Javě.
- Přečtěte si další informace o službě Azure Monitor a Application Insights.