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 Insights egy bővíthető Application Performance Management (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 is. Az Application Insights integrációja általában engedélyezve van a függvényalkalmazás létrehozásakor. Ha az alkalmazás nem rendelkezik a rendszerállapot-kulcskészlettel, először engedélyeznie kell az Application Insights integrációját.
Az Application Insights egyéni konfiguráció nélkül is használható. Az alapértelmezett konfiguráció azonban nagy mennyiségű adatot eredményezhet. Ha Visual Studio Azure-előfizetést használ, előfordulhat, hogy eléri az Application Insights adatkorlátját. Az Application Insights költségeiről további információt az Application Insights számlázásában talál. További információ: Megoldások nagy mennyiségű telemetriával.
Ebben a cikkben megtudhatja, hogyan konfigurálhatja és szabhatja testre a függvények által az Application Insightsba küldött adatokat. A host.json fájlban beállíthatja a gyakori naplózási konfigurációkat. Alapértelmezés szerint ezek a beállítások a kód által kibocsátott egyéni naplókat is szabályozzák. Bizonyos esetekben azonban 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ó: Egyéni alkalmazásnaplók.
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. Ezzel hatékonyan módosíthatja host.json beállításait anélkül, hogy újra közzé kellene tennie a host.json fájlt a projektben. További információért olvassa el a Host.json értékek felülbírálása témakört.
Egyéni alkalmazásnaplók
Alapértelmezés szerint az ön által írt egyéni alkalmazásnaplók a Functions-gazdagépre kerülnek, majd elküldi őket az Application Insightsnak a Feldolgozó kategóriában. Egyes nyelvi veremekkel ehelyett közvetlenül az Application Insightsba küldheti a naplókat, így teljes mértékben szabályozhatja az írott naplók kibocsátásának módját. Ebben az esetben a naplózási folyamat a következőre worker -> Functions host -> Application Insights
worker -> Application Insights
változik: .
Az alábbi táblázat az egyes veremekhez elérhető konfigurációs beállításokat foglalja össze:
Nyelvi verem | Egyéni naplók konfigurálása |
---|---|
.NET (folyamatban lévő modell) | host.json |
.NET (izolált modell) | Alapértelmezett (egyéni naplók küldése a Functions-gazdagépre): host.json Ha közvetlenül az Application Insightsnak szeretne naplókat küldeni, tekintse meg a következőt: Application Insights konfigurálása a HostBuilderben |
Node.js | host.json |
Python | host.json |
Java | Alapértelmezett (egyéni naplók küldése a Functions-gazdagépre): host.json Ha közvetlenül az Application Insightsnak szeretne naplókat küldeni, tekintse meg az Application Insights Java-ügynök konfigurálását |
PowerShell | host.json |
Amikor egyéni alkalmazásnaplókat konfigurál közvetlenül elküldésre, a gazdagép többé nem bocsátja ki őket, és host.json
többé nem szabályozza azok viselkedését. 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. Ebben az esetben az összes napló viselkedésének szabályozásához előfordulhat, hogy mindkét konfigurációban 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 rendeliFunction.<FUNCTION_NAME>.User
hozzá: .
Az alábbi táblázat 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 mind a Information szinten vannak megírva. Ha ennél magasabbra vagy magasabbra Warning szűr, 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 mind a Information szinten vannak megírva. Ha ennél magasabbra vagy magasabbra Warning szűr, 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 a Information szinten 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 Application Insights melyik táblára írja 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üld az Application Insightsnak.
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
ésHost.Results
alacsonyabb szintekre vannak beállítva. A naplózási szintek túl magas (különösen magasabb)Information
beállítása metrikák és teljesítményadatok elvesztését eredményezheti. - A függvényfuttatások naplózása a következőre
Information
van állítva: . Szükség esetén felülbírálhatja ezt a beállítást a helyi fejlesztésbenDebug
Trace
.
{
"logging": {
"fileLoggingMode": "debugOnly",
"logLevel": {
"default": "Warning",
"Host.Aggregator": "Trace",
"Host.Results": "Information",
"Function": "Information"
}
}
}
Ha host.json ugyanazon sztringgel kezdődő több naplót is tartalmaz, 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.Aggregator
a 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.
Figyelemfelhívás
Az Azure Functions az Application Insights szolgáltatással integrálva tárolja a telemetriai eseményeket az Application Insights-táblákban. Ha a kategórianapló-szintet bármilyen más Information
értékre állítja be, az megakadályozza, hogy a telemetria az adott táblákba áramoljon, és az Application Insights és a Függvényfigyelő lapon nem fogja látni a kapcsolódó adatokat.
Például az előző minták esetében:
- Ha a
Host.Results
kategóriát a naplószintre állítja, azError
Azure csak a gazdavégrehajtási telemetriai eseményeket gyűjti össze arequests
táblában a sikertelen függvényvégrehajtások esetében, megakadályozva a sikeres végrehajtások gazdagép-végrehajtási adatainak megjelenítését az Application Insights és a Függvényfigyelő lapon. - Ha a
Function
kategóriát a naplószintre állítja, az nem gyűjti össze aError
függvény telemetriai adataitdependencies
azcustomMetrics
, éscustomEvents
az összes függvény esetében, így nem tekintheti meg ezeket az adatokat az Application Insightsban. Az Azure csaktraces
aError
szinten naplózott adatokat gyűjti.
Az Azure mindkét esetben továbbra is gyűjti a hibákat és a kivételek adatait az Application Insights é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 Application Insights 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 host.json 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 Request
Exception
szerepelnek a mintavételezésben. Biztosítja, hogy a rendszer naplózza az összes függvényvégrehajtást (kérést) és kivételt, míg más típusú telemetriai adatok mintavételezés tárgyát képezik.
Ha a projekt az Application Insights SDK-tól függ a manuális telemetriai nyomkövetéshez, szokatlan 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 Application Insightsban.
SQL-lekérdezésgyűjtemény engedélyezése
Az Application Insights automatikusan adatokat gyűjt a HTTP-kérések, adatbázis-hívások és több kötés függőségérő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 használja a következő beállításokat (legalább) 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 Application Insightsban vagy a Blob Storage-ban, hogy jobban megértse a skálázásvezérlő által a függvényalkalmazáshoz hozott döntéseket.
A funkció engedélyezéséhez adjon hozzá 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. További információkért lásd a következő táblázatot:
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álja AppInsights , győződjön meg arról, hogy az Application Insights engedélyezve van a függvényalkalmazásban.A célhely Blob beá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 Insightsra:
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 None
beá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 Application Insightsnak, csak az alábbi alkalmazásbeállítások egyikével kell csatlakoznia az Application Insights-erőforráshoz:
Név beállítása | Leírás |
---|---|
APPLICATIONINSIGHTS_CONNECTION_STRING |
Ez a beállítás ajánlott, és akkor szükséges, ha az Application Insights-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 Application Insights elavult a kapcsolati sztring beállítás javára. |
Ha a függvényalkalmazást az Azure Portalon hozza létre a parancssorból az Azure Functions Core Tools vagy a Visual Studio Code használatával, az Application Insights integrációja alapértelmezés szerint engedélyezve lesz. Az Application Insights-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.
Microsoft Entra-hitelesítés megkövetelése
A beállítással APPLICATIONINSIGHTS_AUTHENTICATION_STRING
Microsoft Entra-hitelesítéssel engedélyezheti az Application Insights-kapcsolatok használatát. Ez konzisztens hitelesítési élményt hoz létre az Összes Application Insights-folyamaton, beleértve a Profilert és a Snapshot Debuggert, valamint a Functions-gazdagépet és a nyelvspecifikus ügynököket.
Feljegyzés
A helyi fejlesztés nem támogatja az Entra-hitelesítést.
Az érték egy rendszer által hozzárendelt felügyelt identitáshoz vagy ClientId=<YOUR_CLIENT_ID>;Authorization=AAD
egy felhasználó által hozzárendelt felügyelt identitáshoz tartozikAuthorization=AAD
. A felügyelt identitásnak már elérhetőnek kell lennie a függvényalkalmazás számára a Monitorozási metrikák közzétevőjével egyenértékű hozzárendelt szerepkörrel. További információ: Microsoft Entra authentication for Application Insights.
A APPLICATIONINSIGHTS_CONNECTION_STRING
beállításra továbbra is szükség van.
Feljegyzés
APPLICATIONINSIGHTS_AUTHENTICATION_STRING
Ha Microsoft Entra-hitelesítéssel szeretne csatlakozni az Application Insightshoz, tiltsa le az Application Insights helyi hitelesítését is. Ehhez a konfigurációhoz Microsoft Entra-hitelesítés szükséges ahhoz, hogy a telemetriát betöltse a munkaterületre.
Új függvényalkalmazás a portálon
A létrehozott Application Insights-erőforrás áttekintéséhez jelölje ki az Application Insights 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.
Amikor a Létrehozás lehetőséget választja, egy Application Insights-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 Application Insights-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.
Az Azure Portalon keresse meg és válassza ki a függvényalkalmazást, majd válassza ki a függvényalkalmazást.
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élyezte az Application Insights szolgáltatást.
Bontsa ki az Erőforrás módosítása és az Application Insights-erőforrás létrehozása az alábbi táblázatban megadott beállítások használatával:
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ó. 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 Application Insights ablakot.
A függvényalkalmazásban bontsa ki a Beállítások elemet, majd válassza a Környezeti változók lehetőséget. Az Alkalmazásbeállítások lapon, ha megjelenik egy alkalmazásbeállítás neve
APPLICATIONINSIGHTS_CONNECTION_STRING
, az Application Insights integrációja engedélyezve van az Azure-ban futó függvényalkalmazáshoz. Ha ez a beállítás nem létezik, adja hozzá az Application Insights kapcsolati sztring értékként.
Feljegyzés
A régebbi függvényalkalmazások használhatják APPINSIGHTS_INSTRUMENTATIONKEY
ahelyett, APPLICATIONINSIGHTS_CONNECTION_STRING
hogy . Ha lehetséges, frissítse az alkalmazást úgy, hogy a kapcsolati sztring használja a rendszerállapot-kulcs helyett.
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 Application Insights 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 Insightst javasoljuk. Ha a beépített naplózást éles környezetben használja, 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 generált telemetria felhasználásá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. Vegye figyelembe a következő lehetőségeket:
Mintavételezés használata: Ahogy korábban említettük, a mintavételezés segít jelentősen csökkenteni a beszúrt telemetriai események mennyiségét a statisztikailag helyes elemzés fenntartása mellett. 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
Warning
Error
összes telemetriai kategória alapértelmezett értéke. Később eldöntheti, hogy mely kategóriákat szeretné beállítani aInformation
szinten, 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
vagyWarning
beállításával az egyes függvények nem gyűjtenek részletes információkat (függőségek, egyéni metrikák, egyéni események és nyomkövetések). Az éles monitorozás szempontjából kulcsfontosságú függvények esetében adjon meg egy explicit bejegyzést aFunction.<YOUR_FUNCTION_NAME>
kategóriához, és állítsa beInformation
úgy, hogy részletes információkat gyűjtsön. Ha el szeretné kerülni a felhasználó által létrehozott naplók gyűjtését aInformation
szinten, állítsa aFunction.<YOUR_FUNCTION_NAME>.User
kategóriát a vagyWarning
aError
naplószintre.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 Insights
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 aflushTimeout
beállítás által meghatározott késés is előfordulhat az összegyűjtött telemetriában. Ha ezt a kategóriát másInformation
értékre állítja be, akkor nem gyűjti össze az adatokat acustomMetrics
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:Az alábbi képernyőképen a telemetriai adatok láthatók
Host.Aggregator
az Application InsightscustomMetrics
táblában: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 Application Insights
requests
táblában találhatók, és a Monitor függvény lapján és a különböző Application Insights-irányítópultokon (Teljesítmény, Hibák stb.) jelennek meg. Ha ezt a kategóriát más értékre állítja be, mintInformation
az, akkor csak a megadott (vagy magasabb) naplószinten létrehozott telemetriát gyűjti össze. Ha például úgy állítja be, hogyerror
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:Az alábbi képernyőképen az
Host.Results
Application Insights teljesítmény irányítópultján megjelenő telemetriai adatok láthatók: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:
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, hogyError
alapértelmezés szerint minden függvény esetében csak kivételek és hibanaplók legyenek összegyűjtve. A rendszer kihagyja a függőségeket, a felhasználó által létrehozott metrikákat és a felhasználó által létrehozott eseményeket.Host.Aggregator
A kategória esetében, mivel a naplószintre van állítva, aError
függvényhívásokból származó összesített információk nem lesznek összegyűjtve azcustomMetrics
Application Insights 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 azrequests
Application Insights 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 Application Insights-irányítópultokon.A hívott
Function1
függvény esetében a naplószintet a következőreInformation
állítjuk 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 kategóriát (aFunction1.User
felhasználó által létrehozott nyomkövetéseket)Error
állítjuk be, így csak az egyéni hibanaplózás lesz összegyűjtve.Feljegyzés
A függvényenkénti konfiguráció nem támogatott a Functions-futtatókörnyezet 1.x verziójá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ó egyes kiszolgáló-gazdagépek esetében tö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 elkerülni az újbóli üzembe helyezést csak host.json módosítások esetében), 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 () helyett dupla aláhúzásjel (__
.
) lép. Az alábbi alkalmazásbeállítások használatával például konfigurálhatja az egyes függvénynapló-szinteket a következőben host.json
:
Host.json elérési út | Alkalmazásbeállítás |
---|---|
logging.logLevel.default | AzureFunctionsJobHost__logging__logLevel__default |
logging.logLevel.Host.Aggregator | AzureFunctionsJobHost__logging__logLevel__Host.Aggregátor |
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ások felülbírálhatók közvetlenül az Azure Portal függvényalkalmazás konfigurációs paneljén, vagy egy Azure CLI- vagy PowerShell-szkript használatával.
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 Állapotellenőrzés funkcióval figyelheti a függvényalkalmazásokat a Prémium (Elastic Premium) és a Dedikált (App Service) csomagokban. Az állapot-ellenőrzés nem lehetőség a Használat csomagra. 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 az állapot-ellenőrzés paraméterén konfigurált végponton Path
200-as HTTP-állapotkóddal válaszol. 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.
Kapcsolódó tartalom
A monitorozással kapcsolatos további információkért lásd: