Share via


Az Azure Functions monitorozása az Azure Monitor-alkalmazással Elemzések

Az Azure Functions beépített integrációt kínál az Alkalmazás Elemzések 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 alkalmazás Elemzések napló-, teljesítmény- és hibaadatokat gyűjt, és automatikusan észleli a teljesítmény rendellenességeit. Az alkalmazás Elemzések 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 alkalmazás Elemzések is használhatja a helyi függvényalkalmazás-projektfejlesztés során.

A szükséges alkalmazás-Elemzések-rendszerállapot az Azure Functionsbe van beépítve. Mindössze egy érvényes kapcsolati sztring kell csatlakoztatnia a függvényalkalmazást egy Alkalmazás Elemzések-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 Csatlakozás ion 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 alkalmazás Elemzések Java 3.x-ügynököt. Ez az ügynök lehetővé teszi, hogy az alkalmazás Elemzések 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 lépjen az Alkalmazás Elemzések elemre. A Gyűjteményszint területen válassza az Ajánlott lehetőséget.

Képernyőkép az alkalmazás Elemzések Java-ügynök engedélyezéséről.

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

  1. 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
    
  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

  1. Ellenőrizze, hogy léteznek-e a következő beállítások, és távolítsa el őket:

    ApplicationInsightsAgent_EXTENSION_VERSION -> ~3
    
  2. 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 Alkalmazás Elemzések 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 alkalmazás Elemzések 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 az Azure Monitor-alkalmazás Elemzések hiányzó alkalmazástelemetria hibaelhárítását.

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 Alkalmazás Elemzések. 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ül az alábbi módon történő kinyerésével manuálisan is létrehozhat nyomkövetési korrelációt:

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