Az Azure Functions monitorozása az Azure Monitor Application Insights használatával
Az Azure Functions beépített integrációt kínál az Application Insightsszal a függvények monitorozásához. A .NET-en és a .NET Core-n kívüli nyelvek esetében más nyelvspecifikus feldolgozókra/bővítményekre van szükség az elosztott nyomkövetés előnyeinek teljes kihasználásához.
Az Application Insights napló-, teljesítmény- és hibaadatokat gyűjt, és automatikusan észleli a teljesítmény rendellenességeit. Az Application Insights hatékony elemzési eszközöket tartalmaz, amelyekkel diagnosztizálhatja a problémákat, és megismerheti a függvények használatát. Ha látható az alkalmazás adataiban, folyamatosan javíthatja a teljesítményt és a használhatóságot. Az Application Insightst a helyi függvényalkalmazás-projektfejlesztés során is használhatja.
A szükséges Application Insights-rendszerállapot be van építve az Azure Functionsbe. Mindössze egy érvényes kapcsolati sztring kell csatlakoztatnia a függvényalkalmazást egy Application Insights-erőforráshoz. A kapcsolati sztring hozzá kell adni az alkalmazásbeállításokhoz, amikor a függvényalkalmazás-erőforrás létrejön az Azure-ban. Ha a függvényalkalmazás még nem rendelkezik kapcsolati sztring, manuálisan is beállíthatja. További információ: Végrehajtások monitorozása az Azure Functionsben és a kapcsolati sztringekben.
Feljegyzés
2025. március 31-én megszűnik az eszközkulcsalapú betöltés támogatása. A rendszerállapot-kulcsok betöltése továbbra is működni fog, de a továbbiakban nem biztosítunk frissítéseket vagy támogatást a funkcióhoz. Váltás kapcsolati sztring az új képességek kihasználásához.
A támogatott autoinstrumentációs forgatókönyvek listáját a támogatott környezetek, nyelvek és erőforrás-szolgáltatók című témakörben találja.
Elosztott nyomkövetés Java-alkalmazásokhoz
Feljegyzés
Ez a funkció korábban 8–9 másodperces hidegindítási hatással bírt, amely kevesebb mint 1 másodpercre csökkent. Ha korábban már bevezette ezt a funkciót (például 2023 februárja előtt), tekintse át a "Hibaelhárítás" szakaszt, hogy frissítsen az aktuális verzióra, és kihasználhassa az új gyorsabb indítás előnyeit.
Ha az alapértelmezettnél több adatot szeretne megtekinteni a Java-alapú Azure Functions-alkalmazásokból, engedélyezze az Application Insights Java 3.x-ügynököt. Ez az ügynök lehetővé teszi, hogy az Application Insights automatikusan összegyűjtse és korrelálja a népszerű kódtárakból és az Azure Software Development Kitekből (SDK-kból) származó függőségeket, naplókat és metrikákat. Ez a telemetria a Functions által már rögzített kéréstelemetria mellett van.
Az alkalmazástérkép használatával és a teljes körű tranzakciók teljesebb megtekintésével jobban diagnosztizálhatja a problémákat. Topológiai nézete van arról, hogyan működnek együtt a rendszerek az adatokkal az átlagos teljesítmény és a hibaarány alapján. További adatokkal rendelkezik a végpontok közötti diagnosztikához is. Az alkalmazástérkép használatával egyszerűen megtalálhatja a megbízhatósági problémák és a teljesítmény szűk keresztmetszeteinek kiváltó okát kérésenként.
Speciálisabb használati esetek esetén a telemetriát spanok hozzáadásával, a span állapotának frissítésével és a span attribútumok hozzáadásával módosíthatja. Az egyéni telemetriát szabványos API-k használatával is elküldheti.
Elosztott nyomkövetés engedélyezése Java-függvényalkalmazásokhoz
A függvényalkalmazás Áttekintés paneljén nyissa meg az Application Insightst. A Gyűjteményszint területen válassza az Ajánlott lehetőséget.
Konfiguráció
Ha ezt a funkciót nem használati csomagban lévő Azure-függvényalkalmazáshoz szeretné konfigurálni, adjon hozzá környezeti változókat az alkalmazásbeállításokban. Az elérhető konfigurációk áttekintéséhez tekintse meg a Konfigurációs beállításokat: Azure Monitor Application Insights for Java.
A használatalapú Azure Functions esetében az elérhető konfigurációs lehetőségek csak APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL és APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL érhetők el. Ha további konfigurációkat szeretne létrehozni egy használati tervfüggvényen, telepítse saját ügynökét, olvassa el a Java Functions egyéni elosztott nyomkövetési ügynökét.
A saját ügynök üzembe helyezése hosszabb hidegindítási következményekkel jár a Functions használati tervre nézve.
Hibaelhárítás
A Java-függvények indítási ideje lassú lehet, ha 2023 februárja előtt alkalmazta ezt a funkciót. A függvényalkalmazás Áttekintés paneljén lépjen a Bal oldali navigációs menü Konfiguráció elemére. Ezután válassza az Alkalmazásbeállítások lehetőséget , és az alábbi lépésekkel hárítsa el a problémát.
Windows
Ellenőrizze, hogy léteznek-e a következő beállítások, és távolítsa el őket:
XDT_MicrosoftApplicationInsights_Java -> 1 ApplicationInsightsAgent_EXTENSION_VERSION -> ~2
Engedélyezze a legújabb verziót a következő beállítás hozzáadásával:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Dedikált Linux/Premium
Ellenőrizze, hogy léteznek-e a következő beállítások, és távolítsa el őket:
ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
Engedélyezze a legújabb verziót a következő beállítás hozzáadásával:
APPLICATIONINSIGHTS_ENABLE_AGENT: true
Feljegyzés
Ha az Application Insights Java-ügynök legújabb verziója nem érhető el az Azure Functionsben, töltse fel manuálisan az alábbi utasításokat követve.
Az alkalmazásgazda és a betöltési szolgáltatás közötti kapcsolat tesztelése
Az Application Insights SDK-k és -ügynökök telemetriát küldenek, hogy REST-hívásként betöltse a betöltési végpontokat. A webkiszolgálóról vagy az alkalmazásgazdagépről a betöltési szolgáltatás végpontjaihoz való kapcsolódást a PowerShellből vagy curl parancsokból származó nyers REST-ügyfelek használatával tesztelheti. Tekintse meg a hiányzó alkalmazástelemetria hibaelhárítását az Azure Monitor Application Insightsban.
Ismétlődő naplók
Ha konzolnaplózást használ log4j
vagy logback
használ, a Java Functions elosztott nyomkövetése ismétlődő naplókat hoz létre. Ezeket a duplikált naplókat a rendszer ezután elküldi az Application Insightsnak. A viselkedés elkerülése érdekében használja az alábbi kerülő megoldásokat.
Log4j
Adja hozzá a következő szűrőt a log4j.xml:
<Filters>
<ThresholdFilter level="ALL" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
Példa:
<?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>
Visszavétel
Adja hozzá a következő szűrőt a logback.xml:
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>OFF</level>
</filter>
Példa:
<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>
Elosztott nyomkövetés Node.js függvényalkalmazásokhoz
Ha több adatot szeretne megtekinteni a Node Azure Functions-alkalmazásokból, mint amennyit alapértelmezés szerint gyűjt, az Azure Monitor OpenTelemetry Distro használatával rendszerezheti a függvényt.
Elosztott nyomkövetés Python-függvényalkalmazásokhoz
Ha telemetriát szeretne gyűjteni olyan szolgáltatásokból, mint a Kérések, urllib3, httpx
PsycoPG2 és egyebek, használja az Azure Monitor OpenTelemetry Distrot. Az Azure Functionsben üzemeltetett Python-alkalmazásba érkező nyomon követett bejövő kérések nem lesznek automatikusan korrelálva a telemetriai adatok nyomon követésével. A TraceContext közvetlen kinyerésével manuálisan is elérheti a nyomkövetési korrelációt az alábbiak szerint:
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),
):
...
Következő lépések
- További utasítások és információk az Azure Functions monitorozásáról.
- Áttekintés az elosztott nyomkövetésről.
- Megtudhatja, hogy az Alkalmazástérkép mire képes a vállalata számára.
- További információ a Java-alkalmazásokra vonatkozó kérelmekről és függőségekről.
- További információ az Azure Monitorról és az Application Insightsról.