Az Azure Functions monitorozásának konfigurálása

Az Azure Functions integrálható az Application Insightsszal a függvényalkalmazások hatékonyabb monitorozása érdekében. Az Azure Monitor egyik funkciója, az Application Elemzések egy bővíthető alkalmazásteljesítmény-kezelési (APM) szolgáltatás, amely összegyűjti a függvényalkalmazás által létrehozott adatokat, beleértve az alkalmazás naplókba írt adatait. Az alkalmazás-Elemzések integráció általában engedélyezve van a függvényalkalmazás létrehozásakor. Ha az alkalmazás nem rendelkezik a rendszerállapotkulcs-készlettel, először engedélyeznie kell az alkalmazás Elemzések integrációját.

Az Application Insights egyéni konfiguráció nélkül is használható. Az alapértelmezett konfiguráció nagy mennyiségű adatot eredményezhet. Ha Visual Studio Azure-előfizetést használ, előfordulhat, hogy eléri az Alkalmazás Elemzések adatkorlátját. Az alkalmazás Elemzések költségeiről további információt az Alkalmazás Elemzések számlázás című témakörben talál. További információ: Megoldások nagy mennyiségű telemetriával.

A cikk későbbi részében megtudhatja, hogyan konfigurálhatja és szabhatja testre a függvények által az Alkalmazás Elemzések küldött adatokat. A gyakori naplózási konfiguráció a host.json fájlban állítható be. Alapértelmezés szerint ezek a beállítások a kód által kibocsátott egyéni naplókat is szabályozzák, de bizonyos esetekben ez a viselkedés letiltható olyan beállítások mellett, amelyek nagyobb ellenőrzést biztosítanak a naplózás felett. További információt az egyéni alkalmazásnaplókban talál.

Feljegyzés

A speciálisan konfigurált alkalmazásbeállítások segítségével egy adott környezet host.json fájljának adott beállításait jelölheti. Ez lehetővé teszi a host.json beállítások hatékony módosítását anélkül, hogy újra közzé kellene tennie a host.json fájlt a projektben. További információ: Host.json értékek felülbírálása.

Egyéni alkalmazásnaplók

Alapértelmezés szerint az ön által írt egyéni alkalmazásnaplók a Functions-gazdagépre kerülnek, amely a "Feldolgozó" kategórián keresztül küldi el őket az Alkalmazás Elemzések. Egyes nyelvi veremekkel ehelyett közvetlenül az Alkalmazás Elemzések küldheti el a naplókat, így teljes mértékben szabályozhatja az ön által írt naplók kibocsátásának módját. A naplózási folyamat a következőre worker -> Functions host -> Application Insightsworker -> Application Insightsváltozik: .

Az alábbi táblázat az egyes veremekhez elérhető lehetőségeket foglalja össze:

Nyelvi verem Egyéni naplók konfigurálása
.NET (folyamatban lévő modell) host.json
.NET (izolált modell) Alapértelmezés szerint: host.json
Lehetőség a naplók közvetlen küldésére: Alkalmazás Elemzések konfigurálása a HostBuilderben
Node.JS host.json
Python host.json
Java Alapértelmezés szerint: host.json
Lehetőség a naplók közvetlen küldésére: Az alkalmazás Elemzések Java-ügynök konfigurálása
PowerShell host.json

Ha az egyéni alkalmazásnaplókat közvetlenül küldi el, a gazdagép többé nem bocsátja ki őket, és host.json többé nem szabályozza a viselkedésüket. Hasonlóképpen, az egyes veremek által közzétett beállítások csak az egyéni naplókra vonatkoznak, és nem módosítják a cikkben ismertetett többi futtatókörnyezeti napló viselkedését. Az összes napló viselkedésének szabályozásához előfordulhat, hogy mindkét konfiguráción módosítania kell.

Kategóriák konfigurálása

Az Azure Functions-naplózó minden naplóhoz tartalmaz egy kategóriát. A kategória azt jelzi, hogy a futtatókörnyezeti kód vagy a függvénykód melyik része írta a naplót. A kategóriák az 1.x és újabb verziók között különböznek.

A kategórianevek másként vannak hozzárendelve a Functionsben a többi .NET-keretrendszerhez képest. Ha például ASP.NET használ ILogger<T> , a kategória az általános típus neve. A C#-függvények is használják ILogger<T>, de az általános típusnév kategóriaként való beállítása helyett a futtatókörnyezet a forrás alapján rendel kategóriákat. Példa:

  • A függvény futtatásához kapcsolódó bejegyzésekhez a rendszer a következő kategóriát rendeli Function.<FUNCTION_NAME>hozzá: .
  • A függvényen belüli felhasználói kód által létrehozott bejegyzések ( például híváskor logger.LogInformation()) a rendszer a következő kategóriát rendeli Function.<FUNCTION_NAME>.Userhozzá: .

Az alábbi diagram a futtatókörnyezet által létrehozott naplók fő kategóriáit ismerteti:

Kategória Tábla Leírás
Function Nyomok Tartalmazza az összes függvényfuttatáshoz elindított és befejezett naplókat. A sikeres futtatásokhoz ezek a naplók a Information szinten vannak. A kivételek naplózása a Error szinten van. A futtatókörnyezet szintnaplókat is létrehoz Warning , például amikor a rendszer üzenetsor-üzeneteket küld a méregsorba.
Function.<YOUR_FUNCTION_NAME> Függőségek Egyes szolgáltatások esetében a rendszer automatikusan gyűjti a függőségi adatokat. A sikeres futtatásokhoz ezek a naplók a Information szinten vannak. További információért lásd: Függőségek. A kivételek naplózása a Error szinten van. A futtatókörnyezet szintnaplókat is létrehoz Warning , például amikor a rendszer üzenetsor-üzeneteket küld a méregsorba.
Function.<YOUR_FUNCTION_NAME> customMetrics
Customevents
A C# és JavaScript SDK-k segítségével egyéni metrikákat gyűjthet és egyéni eseményeket naplózhat. További információ: Egyéni telemetriai adatok.
Function.<YOUR_FUNCTION_NAME> Nyomok Tartalmazza az adott függvényfuttatások elindított és befejezett naplóit. A sikeres futtatásokhoz ezek a naplók a Information szinten vannak. A kivételek naplózása a Error szinten van. A futtatókörnyezet szintnaplókat is létrehoz Warning , például amikor a rendszer üzenetsor-üzeneteket küld a méregsorba.
Function.<YOUR_FUNCTION_NAME>.User Nyomok Felhasználó által létrehozott naplók, amelyek bármilyen naplószintet tartalmazhatnak. A függvényekből naplókba való írással kapcsolatos további információkért lásd : Írás naplókba.
Host.Aggregator customMetrics Ezek a futásidejű naplók a függvényhívások számát és átlagát adják meg egy konfigurálható időszakban. Az alapértelmezett időszak 30 másodperc vagy 1000 találat, attól függően, hogy melyik az első. Ilyen például a futtatások száma, a sikerességi arány és az időtartam. Ezek a naplók minden szinten Information vannak megírva. Ha a fenti vagy újabb szűrést Warning használja, ezek közül az adatok közül egyik sem jelenik meg.
Host.Results Kérelmek Ezek a futásidejű naplók egy függvény sikerességét vagy sikertelenségét jelzik. Ezek a naplók minden szinten Information vannak megírva. Ha a fenti vagy újabb szűrést Warning használja, ezek közül az adatok közül egyik sem jelenik meg.
Microsoft Nyomok Teljes körűen minősített naplókategória, amely a gazdagép által meghívott .NET-futtatókörnyezet-összetevőt tükrözi.
Worker Nyomok A nyelvi feldolgozó folyamat által non-.NET nyelvekhez létrehozott naplók. Előfordulhat, hogy a nyelvi feldolgozó naplói egy kategóriában is naplózhatók Microsoft.* , például Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. Ezek a naplók szinten Information vannak megírva.

Feljegyzés

A .NET-osztálytárfüggvények esetében ezek a kategóriák feltételezik, hogy ön használja a függvényt ILogger , és nem ILogger<T>. További információkért tekintse meg a Functions ILogger dokumentációját.

A Tábla oszlop azt jelzi, hogy az Alkalmazás melyik táblája Elemzések a naplót.

Naplószintek konfigurálása

Minden naplóhoz naplószint van hozzárendelve. Az érték egy egész szám, amely relatív fontosságot jelez:

Naplózási szint Kód Leírás
Trace 0 A legrészletesebb üzeneteket tartalmazó naplók. Ezek az üzenetek bizalmas alkalmazásadatokat tartalmazhatnak. Ezek az üzenetek alapértelmezés szerint le vannak tiltva, és soha nem engedélyezettek éles környezetben.
Hibakeresés 0 A fejlesztés során interaktív vizsgálathoz használt naplók. Ezeknek a naplóknak elsősorban a hibakereséshez hasznos információkat kell tartalmazniuk, és nincs hosszú távú értékük.
Tájékoztatás 2 Az alkalmazás általános folyamatát nyomon követő naplók. Ezeknek a naplóknak hosszú távú értékkel kell rendelkezniük.
Figyelmeztetés 3 Naplók, amelyek az alkalmazásfolyamat rendellenes vagy váratlan eseményét emelik ki, de máskülönben nem okozzák az alkalmazás végrehajtásának leállását.
Hiba 4 Naplók, amelyek akkor jelennek meg, ha a végrehajtás aktuális folyamata leáll egy hiba miatt. Ezeknek a hibáknak nem az alkalmazásszintű, hanem az aktuális tevékenység hibáját kell jelezniük.
Kritikus 5 Helyreállíthatatlan alkalmazást vagy rendszerösszeomlást vagy azonnali figyelmet igénylő katasztrofális hibát leíró naplók.
Egyik sem 6 Letiltja a megadott kategória naplózását.

A host.json fájlkonfiguráció határozza meg, hogy egy függvényalkalmazás mennyi naplózást küldjön az Alkalmazás Elemzések.

Minden kategóriához meg kell adnia a küldendő minimális naplószintet. A host.json beállításai a Functions futtatókörnyezet verziójától függően változnak.

Az alábbi példák a naplózást a következő szabályok alapján határozzák meg:

  • Az alapértelmezett naplózási szint úgy van beállítva, hogy Warning megakadályozza a váratlan kategóriák túlzott naplózását .
  • Host.Aggregator és Host.Results alacsonyabb szintekre vannak beállítva. Ha ezeket túl magas szintre (különösen magasabbra Information) állítja, akkor a metrikák és a teljesítményadatok elveszhetnek.
  • A függvényfuttatások naplózása a következőre Informationvan állítva: . Ezt felül lehet bírálni a helyi fejlesztésbenDebug, vagy Traceszükség esetén.
{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Warning",
      "Host.Aggregator": "Trace",
      "Host.Results": "Information",
      "Function": "Information"
    }
  }
}

Ha a host.json több naplót is tartalmaz, amelyek ugyanazzal a sztringgel kezdődnek, a rendszer először a definiált naplókat egyezteti. Vegye figyelembe az alábbi példát, amely mindent naplóz a futtatókörnyezetben, kivéve Host.Aggregatora Error szinten:

{
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

Naplószint-beállítással megakadályozhatja None , hogy a naplók kategóriaként legyenek megírva.

Figyelem

Az Azure Functions az Alkalmazás Elemzések integrálva tárolja a telemetriai eseményeket az Alkalmazás Elemzések-táblákban. Ha egy kategórianapló-szintet bármilyen más Information értékre állít be, az megakadályozza, hogy a telemetria az adott táblákba áramoljon. Ennek eredményeként nem fogja látni a kapcsolódó adatokat az Alkalmazás Elemzések vagy a Függvényfigyelő lapon.

A fenti mintákból:

  • Ha a Host.Results kategória naplózási szintre van állítvaError, akkor csak a sikertelen függvényvégrehajtások gazdagépvégrehajtási telemetriai eseményeit gyűjti össze a requests táblában, megakadályozva a sikeres végrehajtások gazdagépvégrehajtási adatait az Alkalmazás Elemzések és a Függvényfigyelő lapon.
  • Ha a Function kategória naplózási szintre van állítvaError, a függvény telemetriai adatainak dependenciescustomMetricsgyűjtését leállítja, és customEvents az összes függvény esetében megakadályozza, hogy ezek az adatok megjelenjenek az Application Elemzések-ban. Csak szinttel Error naplózott adatokat gyűjt traces össze.

Mindkét esetben továbbra is gyűjti a hibákat és kivételadatokat az Alkalmazás Elemzések és a Függvényfigyelő lapon. További információ: Megoldások nagy mennyiségű telemetriával.

Az összesítő konfigurálása

Ahogy az előző szakaszban is említettük, a futtatókörnyezet egy adott időszakban összesíti a függvényvégrehajtások adatait. Az alapértelmezett időszak 30 másodperc vagy 1000 futtatás, attól függően, hogy melyik az első. Ezt a beállítást a host.json fájlban konfigurálhatja. Példa:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

Mintavételezés konfigurálása

Az alkalmazás Elemzések olyan mintavételezési funkcióval rendelkezik, amely megvédheti Önt attól, hogy túl sok telemetriai adatot állítsunk elő a befejezett végrehajtások során a csúcsterhelés idején. Ha a bejövő végrehajtások száma meghaladja a megadott küszöbértéket, az Application Insights véletlenszerűen figyelmen kívül hagyja a bejövő végrehajtások egy részét. A másodpercenkénti végrehajtások maximális száma alapértelmezés szerint 20 (az 1.x-es verzióban öt). A mintavételezést a host.jsonban konfigurálhatja. Példa:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

Bizonyos típusú telemetriai adatokat kizárhat a mintavételezésből. Ebben a példában a típusadatok RequestException szerepelnek a mintavételezésben. Biztosítja, hogy minden függvényvégrehajtást (kérést) és kivételt naplózzanak, míg más típusú telemetriai adatok mintavételezés alá kerülnek.

Ha a projekt az Alkalmazás Elemzések SDK-tól függ a manuális telemetriai nyomkövetéshez, furcsa viselkedést tapasztalhat, ha a mintavételezési konfiguráció eltér a függvényalkalmazás mintavételezési konfigurációjától. Ilyen esetekben ugyanazt a mintavételezési konfigurációt használja, mint a függvényalkalmazás. További információ: Mintavételezés az alkalmazás Elemzések.

SQL-lekérdezésgyűjtemény engedélyezése

Az alkalmazás Elemzések automatikusan adatokat gyűjt a HTTP-kérések, adatbázis-hívások és több kötés függőségeiről. További információért lásd: Függőségek. SQL-hívások esetén a rendszer mindig összegyűjti és tárolja a kiszolgáló és az adatbázis nevét, az SQL-lekérdezés szövegét azonban alapértelmezés szerint nem gyűjti a rendszer. dependencyTrackingOptions.enableSqlCommandTextInstrumentation Az SQL-lekérdezés szövegnaplózásának engedélyezéséhez állítsa (legalább) a következőket a host.json fájlban:

"logging": {
    "applicationInsights": {
        "enableDependencyTracking": true,    
        "dependencyTrackingOptions": {
            "enableSqlCommandTextInstrumentation": true
        }
    }
}

További információ: Speciális SQL-nyomkövetés a teljes SQL-lekérdezés lekéréséhez.

Skálázásvezérlő naplóinak konfigurálása

Ez a funkció előzetes verzióban érhető el.

Az Azure Functions skálázási vezérlője naplókat bocsáthat ki az Alkalmazás Elemzések vagy a Blob Storage számára, hogy jobban megértse a skálázási vezérlő által a függvényalkalmazáshoz hozott döntéseket.

A funkció engedélyezéséhez hozzáadhat egy alkalmazásbeállítást SCALE_CONTROLLER_LOGGING_ENABLED a függvényalkalmazás beállításaihoz. A beállítás alábbi értékének formátumában <DESTINATION>:<VERBOSITY>kell lennie:

Tulajdonság Leírás
<DESTINATION> Az a cél, ahová a naplókat elküldik. Az érvényes értékek a következők: AppInsights és Blob.
Ha használjaAppInsights, győződjön meg arról, hogy az alkalmazás Elemzések engedélyezve van a függvényalkalmazásban.
A célhely Blobbeállításakor a rendszer naplókat hoz létre egy blobtárolóban azure-functions-scale-controller , amely az alkalmazásbeállításban beállított alapértelmezett tárfiókban AzureWebJobsStorage van.
<VERBOSITY> Megadja a naplózás szintjét. A támogatott értékek a következők None: , Warningés Verbose.
Ha be van Verboseállítva, a skálázási vezérlő naplózza a feldolgozók számának minden változásának okát, valamint a tényezők eseményindítóira vonatkozó információkat ezekre a döntésekre. Részletes naplók közé tartoznak az eseményindítók figyelmeztetései és az eseményindítók által a skálázásvezérlő futtatása előtt és után használt kivonatok.

Tipp.

Ne feledje, hogy bár a skálázási vezérlő naplózását engedélyezve hagyja, az hatással van a függvényalkalmazás monitorozásának lehetséges költségeire. Fontolja meg a naplózás engedélyezését, amíg elegendő adatot nem gyűjt ahhoz, hogy megértse, hogyan működik a skálázási vezérlő, majd tiltsa le.

Az alábbi Azure CLI-parancs például bekapcsolja a részletes naplózást a méretezési vezérlőről az Application Elemzések:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose

Ebben a példában cserélje le <FUNCTION_APP_NAME> a <RESOURCE_GROUP_NAME> függvényalkalmazás nevét és az erőforráscsoport nevét.

Az alábbi Azure CLI-parancs letiltja a naplózást a részletesség Nonebeállításával:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None

A naplózás letiltásához távolítsa el a beállítást az SCALE_CONTROLLER_LOGGING_ENABLED alábbi Azure CLI-paranccsal:

az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED

Ha engedélyezve van a skálázásvezérlő naplózása, most már lekérdezheti a skálázásvezérlő naplóit.

Application Insights-integráció engedélyezése

Ahhoz, hogy egy függvényalkalmazás adatokat küldjön az Alkalmazás Elemzések, csak az alábbi alkalmazásbeállítások egyikével kell csatlakoznia az Alkalmazás Elemzések erőforráshoz:

A beállítás neve Leírás
APPLICATIONINSIGHTS_CONNECTION_STRING Ez az ajánlott beállítás, amelyre akkor van szükség, ha az alkalmazás Elemzések-példány szuverén felhőben fut. A kapcsolati sztring más új képességeket is támogat.
APPINSIGHTS_INSTRUMENTATIONKEY Örökölt beállítás, amelyet az Alkalmazás Elemzések elavult a kapcsolati sztring beállítás javára.

Ha a függvényalkalmazást a parancssorból hozza létre az Azure Portalon az Azure Functions Core Tools vagy a Visual Studio Code használatával, alapértelmezés szerint engedélyezve lesz az alkalmazás Elemzések integrációja. Az alkalmazás Elemzések erőforrás neve megegyezik a függvényalkalmazás nevével, és ugyanabban a régióban vagy a legközelebbi régióban jön létre.

Új függvényalkalmazás a portálon

Az alkalmazás Elemzések létrehozott erőforrás áttekintéséhez jelölje ki az alkalmazás Elemzések ablakának kibontásához. Módosíthatja az új erőforrásnevet , vagy választhat egy másik helyet egy Azure-beli földrajzi helyen , ahol tárolni szeretné az adatokat.

Screenshot of enabling Application Insights while creating a function app.

Amikor a Létrehozás lehetőséget választja, egy alkalmazás Elemzések erőforrás jön létre a függvényalkalmazással, amely az APPLICATIONINSIGHTS_CONNECTION_STRING alkalmazásbeállítások között van megadva. Minden készen áll.

Hozzáadás meglévő függvényalkalmazáshoz

Ha egy alkalmazás Elemzések erőforrás nem lett létrehozva a függvényalkalmazással, az alábbi lépésekkel hozhatja létre az erőforrást. Ezután hozzáadhatja az erőforrásból származó kapcsolati sztring alkalmazásbeállításként a függvényalkalmazásban.

  1. Az Azure Portalon keresse meg és válassza ki a függvényalkalmazást, majd válassza ki a függvényalkalmazást.

  2. Válassza ki az ablak tetején található Az Application Insights nincs konfigurálva szalagot. Ha nem látja ezt a szalagcímet, akkor előfordulhat, hogy az alkalmazás már engedélyezve van az alkalmazás Elemzések.

    Screenshot of enabling Application Insights from the portal.

  3. Bontsa ki az Erőforrás módosítása lehetőséget, és hozzon létre egy alkalmazás Elemzések erőforrást az alábbi táblázatban megadott beállításokkal:

    Beállítás Ajánlott érték Leírás
    Új erőforrásnév Egyedi alkalmazásnév A legegyszerűbb, ha a függvényalkalmazás nevét használja, amelynek egyedinek kell lennie az előfizetésben.
    Helyen Nyugat-Európa Ha lehetséges, használja ugyanazt a régiót , mint a függvényalkalmazás vagy az ahhoz közeli régió.

    Screenshot of creating an Application Insights resource.

  4. Válassza az Alkalmazás lehetőséget.

    Az Application Insights-erőforrás ugyanabban az erőforráscsoportban és előfizetésben jön létre, ahol a függvényalkalmazás található. Az erőforrás létrehozása után zárja be az Alkalmazás Elemzések ablakot.

  5. A függvényalkalmazásban válassza a Konfiguráció lehetőséget a Gépház területen, majd válassza az Alkalmazásbeállítások lehetőséget. Ha az APPLICATIONINSIGHTS_CONNECTION_STRING nevű beállítás megjelenik, akkor engedélyezve van az Application Insights-integráció az Azure-ban futó függvényalkalmazáshoz. Ha valamilyen okból ez a beállítás nem létezik, adja hozzá az alkalmazás Elemzések kapcsolati sztring értékként.

Feljegyzés

Előfordulhat, hogy a régebbi függvényalkalmazások nem APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRINGa . Ha lehetséges, frissítse az alkalmazást úgy, hogy a rendszerállapot-kulcs helyett a kapcsolati sztring használja.

A beépített naplózás letiltása

A Functions korai verziói beépített monitorozást használtak, ami már nem ajánlott. Az Alkalmazás Elemzések engedélyezésekor tiltsa le az Azure Storage-t használó beépített naplózást. A beépített naplózás hasznos a könnyű számítási feladatok teszteléséhez, de nem nagy terhelésű éles használatra készült. Az éles monitorozáshoz az Application Elemzések ajánlott. Ha a beépített naplózást éles környezetben használják, a naplózási rekord hiányos lehet az Azure Storage szabályozása miatt.

A beépített naplózás letiltásához törölje az alkalmazásbeállítást AzureWebJobsDashboard . Az alkalmazásbeállítások azure portalon való törléséről a Függvényalkalmazások kezelése című témakör Alkalmazásbeállítások szakaszában olvashat bővebben. Az alkalmazásbeállítás törlése előtt győződjön meg arról, hogy ugyanabban a függvényalkalmazásban egyetlen meglévő függvény sem használja az Azure Storage-eseményindítók vagy kötések beállítását.

Megoldások nagy mennyiségű telemetriával

A függvényalkalmazások olyan megoldások alapvető részei, amelyek nagy mennyiségű telemetriát okozhatnak, például IoT-megoldásokat, gyors eseményvezérelt megoldásokat, nagy terhelésű pénzügyi rendszereket és integrációs rendszereket. Ebben az esetben érdemes megfontolni a további konfigurációt a költségek csökkentése érdekében a megfigyelhetőség fenntartása mellett.

A létrehozott telemetriai adatok felhasználhatók valós idejű irányítópultokon, riasztásokban, részletes diagnosztika és így tovább. A létrehozott telemetriai adatok felhasználásának módjától függően meg kell határoznia egy stratégiát a létrehozott adatok mennyiségének csökkentésére. Ez a stratégia lehetővé teszi, hogy megfelelően monitorozza, működtesse és diagnosztizálja a függvényalkalmazásokat éles környezetben. A következő lehetőségeket érdemes figyelembe vennie:

  • Mintavételezés használata: Ahogy korábban említettük, a statisztikailag helyes elemzés fenntartása mellett jelentősen csökkenti a betöltéskor beszúrt telemetriai események mennyiségét. Előfordulhat, hogy még a mintavételezéssel is nagy mennyiségű telemetriát kap. Vizsgálja meg az adaptív mintavételezési lehetőségeket. Állítsa be például egy maxTelemetryItemsPerSecond olyan értékre, amely egyensúlyba hozza a létrehozott kötetet a monitorozási igényeivel. Ne feledje, hogy a telemetriai mintavételezést a függvényalkalmazást végrehajtó gazdagépenként alkalmazza a rendszer.

  • Alapértelmezett naplószint: Az WarningError összes telemetriai kategória alapértelmezett értéke. Most eldöntheti, hogy mely kategóriákat szeretné a szinten beállítani Information , hogy megfelelően monitorozza és diagnosztizálhassa a függvényeket.

  • A függvények telemetriájának finomhangolása: Az alapértelmezett naplószint beállításával Error vagy Warningbeállításával az egyes függvények részletes információi (függőségek, egyéni metrikák, egyéni események és nyomkövetések) nem lesznek összegyűjtve. Az éles monitorozás szempontjából kulcsfontosságú függvények esetében definiáljon egy explicit bejegyzést a kategóriához Function.<YOUR_FUNCTION_NAME> , és állítsa be úgy Information, hogy részletes információkat gyűjtsön. Ezen a ponton a felhasználó által létrehozott naplók szinten történő gyűjtésének elkerülése érdekében állítsa a kategóriát vagy Warning a Function.<YOUR_FUNCTION_NAME>.User naplószintetError.Information

  • Host.Aggregator kategória: A konfigurálási kategóriákban leírtaknak megfelelően ez a kategória összesített információkat biztosít a függvényhívásokról. A kategória információi az Application Elemzések customMetrics táblában találhatók, és az Azure Portal Áttekintés funkció lapján jelennek meg. Az aggregátor konfigurálásának módjától függően vegye figyelembe, hogy az összegyűjtött telemetria által flushTimeoutmeghatározott késés lesz. Ha ezt a kategóriát más értékre állítja, mint Informationa többi, akkor nem gyűjti össze az adatokat a customMetrics táblában, és nem jeleníti meg a metrikákat a függvény Áttekintés lapján.

    Az alábbi képernyőképen Host.Aggregator a függvény Áttekintés lapján megjelenő telemetriai adatok láthatók:

    Screenshot of Host.Aggregator telemetry displayed in function Overview tab.

    Az alábbi képernyőképen a telemetriai adatok láthatók Host.Aggregator az Application Elemzések customMetrics táblában:

    Screenshot of Host.Aggregator telemetry in customMetrics Application Insights table.

  • Host.Results kategória: A konfigurálási kategóriákban leírtak szerint ez a kategória biztosítja a futtatókörnyezet által generált naplókat, amelyek egy függvényhívás sikerességét vagy sikertelenségét jelzik. Az ebből a kategóriából származó információk az Alkalmazás Elemzések requests táblában találhatók, és megjelennek a Figyelő funkció lapján és a különböző alkalmazás-Elemzések irányítópultokon (Teljesítmény, Hibák stb.). Ha ezt a kategóriát más értékre állítja be, mint Informationa többi, akkor csak a megadott (vagy magasabb) naplószinten létrehozott telemetriát gyűjti össze. Ha például úgy állítja be, hogy error csak sikertelen végrehajtások esetén kövesse nyomon a kérelmek adatait.

    Az alábbi képernyőképen a Host.Results Függvényfigyelő lapon megjelenő telemetriai adatok láthatók:

    Screenshot of Host.Results telemetry in function Monitor tab.

    Az alábbi képernyőképen az Host.Results Alkalmazás Elemzések Teljesítmény irányítópultján megjelenő telemetriai adatok láthatók:

    Screenshot of Host.Results telemetry in Application Insights Performance dashboard.

  • Host.Aggregator vs Host.Results: Mindkét kategória jó betekintést nyújt a függvények végrehajtásába. Szükség esetén eltávolíthatja a részletes információkat az egyik kategóriából, így a másikat figyeléshez és riasztáshoz használhatja. Íme egy példa:

{
  "version": "2.0",  
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Error",
      "Host.Aggregator": "Error",
      "Host.Results": "Information", 
      "Function.Function1": "Information",
      "Function.Function1.User": "Error"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
} 

Ezzel a konfigurációval a következőkkel rendelkezik:

  • Az összes függvény- és telemetriakategória Warning alapértelmezett értéke (beleértve a Microsoft és a Feldolgozó kategóriát is). Így alapértelmezés szerint a futtatókörnyezet és az egyéni naplózás által generált összes hiba és figyelmeztetés összegyűjtve lesz.

  • A Function kategórianapló szintje úgy van beállítva, hogy Erroralapértelmezés szerint minden függvény esetében csak kivételek és hibanaplók legyenek összegyűjtve (a függőségek, a felhasználó által létrehozott metrikák és a felhasználó által létrehozott események kimaradnak).

  • Host.Aggregator A kategória naplószintre Error van állítva, a függvényhívásokból származó összesített információk nem lesznek összegyűjtve az customMetrics Alkalmazás Elemzések táblában, és a végrehajtások számával (összesen, sikeres és sikertelen) kapcsolatos információk nem jelennek meg a függvény áttekintési irányítópultján.

  • A Host.Results kategória esetében az összes gazdagép végrehajtási információja az requests Alkalmazás Elemzések táblában lesz összegyűjtve. Az összes meghívási eredmény megjelenik a Monitor függvény irányítópultján és az Alkalmazás Elemzések irányítópultokon.

  • A hívott Function1függvény esetében a naplószintet a következőre Informationállítottuk be: . Ezért ebben a konkrét függvényben a rendszer összegyűjti az összes telemetriát (függőségek, egyéni metrikák és egyéni események). Ugyanahhoz a függvényhez a Function1.User kategória (felhasználó által generált nyomkövetések) értéke van beállítva Error, így csak az egyéni hibanaplózás lesz összegyűjtve.

    Feljegyzés

    A függvényenkénti konfiguráció nem támogatott az 1.x verzióban.

  • A mintavételezés úgy van konfigurálva, hogy típusonként másodpercenként egy telemetriai elemet küldjön, kivéve a kivételeket. Ez a mintavételezés a függvényalkalmazást futtató összes kiszolgálói gazdagép esetében megtörténik. Ha tehát négy példányunk van, akkor ez a konfiguráció másodpercenként négy telemetriai elemet bocsát ki típusonként, valamint az esetleges kivételeket.

    Feljegyzés

    A metrikák száma, például a kérések sebessége és a kivételi arány a mintavételezési sebesség kompenzálása érdekében módosul, így a Metrikaböngészőben hozzávetőlegesen helyes értékeket mutatnak.

Tipp.

Kísérletezzen különböző konfigurációkkal, hogy megfeleljen a naplózásra, figyelésre és riasztásra vonatkozó követelményeknek. Emellett győződjön meg arról, hogy részletes diagnosztikával rendelkezik váratlan hibák vagy hibás működés esetén.

A monitorozási konfiguráció felülírása futtatókörnyezetben

Végül előfordulhatnak olyan helyzetek, amikor gyorsan módosítania kell egy adott kategória naplózási viselkedését az éles környezetben, és nem szeretne egy teljes üzembe helyezést csak a host.json fájl módosítása érdekében elvégezni. Ilyen esetekben felülbírálhatja a host.json értékeket.

Ha ezeket az értékeket alkalmazásbeállítások szintjén szeretné konfigurálni (és el szeretné kerülni a host.json-módosítások újbóli üzembe helyezését), felül kell bírálnia bizonyos host.json értékeket úgy, hogy alkalmazásbeállításként azonos értéket hoz létre. Amikor a futtatókörnyezet egy alkalmazásbeállítást talál a formátumbanAzureFunctionsJobHost__path__to__setting, felülírja a JSON-ban található path.to.setting ezzel egyenértékű host.json beállítást. Alkalmazásbeállításként kifejezve a JSON-hierarchia jelzésére használt pont (.) helyébe dupla aláhúzásjel (__) lép. Az alábbi alkalmazásbeállítások segítségével például konfigurálhatja az egyes függvénynapló-szinteket a fent leírtak szerint host.json .

Host.json elérési útja Alkalmazásbeállítás
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function__Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function__Function1__User

A beállításokat felülbírálhatja közvetlenül az Azure Portal függvényalkalmazás konfigurációs paneljén, vagy egy Azure CLI- vagy PowerShell-szkripttel.

az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host__Aggregator=Information"

Feljegyzés

Ha felülírja az host.json alkalmazásbeállítások módosítását, újraindul a függvényalkalmazás. Az időszakokat tartalmazó alkalmazásbeállítások nem támogatottak, ha Linuxon futnak rugalmas prémium csomagban vagy dedikált (App Service-) csomagban. Ezekben az üzemeltetési környezetekben továbbra is a host.json fájlt kell használnia.

Függvényalkalmazások monitorozása állapotellenőrzéssel

Az Állapot-ellenőrzés funkcióval monitorozhat függvényalkalmazásokat a Prémium (Elastic Premium) és dedikált (App Service) csomagokban. Az állapot-ellenőrzés nem választható a Használati tervhez. A konfigurálás módjáról az App Service-példányok állapotellenőrzéssel való monitorozása című témakörben olvashat. A függvényalkalmazásnak rendelkeznie kell egy HTTP-eseményindító függvénnyel, amely egy 200-as HTTP-állapotkóddal válaszol ugyanazon a végponton, mint amelyet az állapot-ellenőrzés "Path" paraméterén konfiguráltak. Azt is megteheti, hogy ez a függvény további ellenőrzéseket végez annak érdekében, hogy a függő szolgáltatások elérhetők és működjenek.

Következő lépések

A monitorozással kapcsolatos további információkért lásd: