Az Azure Functions telemetriájának elemzése az Application Insightsban
Az Azure Functions integrálható az Application Insightsszal a függvényalkalmazások hatékonyabb monitorozása érdekében. Az Application Insights a függvényalkalmazás által létrehozott telemetriai adatokat gyűjti, 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 a függvényalkalmazás nem rendelkezik a rendszerállapotkulcs-készlettel, először engedélyeznie kell az Application Insights integrációját.
Alapértelmezés szerint a függvényalkalmazásból gyűjtött adatok az Application Insightsban lesznek tárolva. Az Azure Portalon az Application Insights széles körű vizualizációkat biztosít a telemetriai adatokról. Részletezheti a hibanaplókat, valamint lekérdezheti az eseményeket és metrikákat. Ez a cikk alapvető példákat tartalmaz az összegyűjtött adatok megtekintésére és lekérdezésére. Ha többet szeretne megtudni a függvényalkalmazás adatainak az Application Insightsban való feltárásáról, olvassa el az Application Insights mi az az Application Insights?
Ahhoz, hogy egy függvényalkalmazásból meg lehessen tekinteni az Application Insights-adatokat, legalább közreműködői szerepkörrel kell rendelkeznie a függvényalkalmazásban. Az Application Insights-példány figyelési olvasói engedélyével is rendelkeznie kell. Ezeket az engedélyeket alapértelmezés szerint minden létrehozott függvényalkalmazáshoz és Application Insights-példányhoz használhatja.
Az adatmegőrzésről és a lehetséges tárolási költségekről további információt az Application Insights adatgyűjtése, megőrzése és tárolása című témakörben talál.
Telemetria megtekintése a Monitor lapon
Ha engedélyezve van az Application Insights integrációja, a telemetriaadatokat a Monitor lapon tekintheti meg.
A függvényalkalmazás lapján válasszon ki egy olyan függvényt, amely legalább egyszer fut az Application Insights konfigurálása után. Ezután válassza a Figyelés lehetőséget a bal oldali panelen. Válassza a Rendszeres Frissítés lehetőséget, amíg meg nem jelenik a függvényhívások listája.
Feljegyzés
Akár öt percig is eltarthat, amíg a lista megjelenik, amíg a telemetriai ügyfél kötegeli az adatokat a kiszolgálóra való átvitelhez. A késés nem vonatkozik az Élő metrikák streamre. Ez a szolgáltatás az oldal betöltésekor csatlakozik a Functions-gazdagéphez, így a naplók közvetlenül a lapra kerülnek.
Egy adott függvényhívás naplóinak megtekintéséhez válassza a dátum (UTC) oszlophivatkozást az adott meghíváshoz. A meghívás naplózási kimenete egy új lapon jelenik meg.
Válassza a Futtatás az Application Insightsban lehetőséget annak a lekérdezésnek a forrásának megtekintéséhez, amely az Azure Monitor naplóadatait kéri le az Azure Logban. Ha most használja először az Azure Log Analyticst az előfizetésében, a rendszer felkéri, hogy engedélyezze azt.
A Log Analytics engedélyezése után a következő lekérdezés jelenik meg. Láthatja, hogy a lekérdezés eredményei az elmúlt 30 napra (
where timestamp > ago(30d)
) korlátozódnak, és az eredmények legfeljebb 20 sort (take 20
) mutatnak. Ezzel szemben a függvény meghívási részleteinek listája az elmúlt 30 napra vonatkozik, korlátozás nélkül.
További információ: A telemetriaadatok lekérdezése a cikk későbbi részében.
Telemetriai adatok megtekintése az Application Insightsban
Az Application Insights megnyitása függvényalkalmazásból az Azure Portalon:
Keresse meg a függvényalkalmazást a portálon.
A bal oldalon válassza az Application Insights lehetőséget a Beállítások területen.
Ha először használja az Application Insightst az előfizetésével, a rendszer kérni fogja annak engedélyezését. Ehhez válassza az Application Insights bekapcsolása, majd az Alkalmaz gombot a következő lapon.
Az Application Insights használatával kapcsolatos információkért tekintse meg az Application Insights dokumentációját. Ez a szakasz néhány példát mutat be arra, hogyan tekintheti meg az adatokat az Application Insightsban. Ha már ismeri az Application Insightst, közvetlenül a telemetriai adatok konfigurálásáról és testreszabásáról szóló szakaszokra léphet.
Az Application Insights alábbi területei hasznosak lehetnek a függvények viselkedésének, teljesítményének és hibáinak kiértékelésekor:
Vizsgálat | Leírás |
---|---|
Kudarcok | Diagramok és riasztások létrehozása függvényhibák és kiszolgálókivételek alapján. A művelet neve a függvény neve. A függőségek hibái csak akkor jelennek meg, ha egyéni telemetriát implementál a függőségekhez. |
Teljesítmény | A teljesítményproblémák elemzése az erőforrás-kihasználtság és a felhőbeli szerepkörpéldányok átviteli sebességének megtekintésével. Ezek a teljesítményadatok olyan hibakeresési forgatókönyvek esetén hasznosak lehetnek, amelyekben a függvények lebomlik a mögöttes erőforrásokat. |
Metrikák | Metrikákon alapuló diagramokat és riasztásokat hozhat létre. A metrikák tartalmazzák a függvényhívások számát, a végrehajtási időt és a sikerességi arányokat. |
Élő metrikák | Közel valós időben létrehozott metrikák adatainak megtekintése. |
Telemetriaadatok lekérdezése
Az Application Insights Analytics adatbázistáblák formájában hozzáférést biztosít az összes telemetriai adathoz. Az Analytics lekérdezési nyelvet biztosít az adatok kinyeréséhez, kezeléséhez és vizualizációjához.
Válassza a Naplók lehetőséget a naplózott események felderítéséhez vagy lekérdezéséhez.
Íme egy lekérdezési példa, amely a kérések feldolgozónkénti eloszlását mutatja be az elmúlt 30 percben.
requests
| where timestamp > ago(30m)
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
Az elérhető táblák a bal oldali Séma lapon jelennek meg. A függvényhívások által létrehozott adatokat az alábbi táblázatokban találja:
Tábla | Leírás |
---|---|
Nyomok | A futtatókörnyezet, a skálázási vezérlő és a függvénykódból származó nyomkövetések által létrehozott naplók. A Flex Consumption-csomag üzemeltetéséhez traces a kódtelepítés során létrehozott naplókat is tartalmazza. |
Kérelmek | Egy kérés minden függvényhíváshoz. |
Kivételek | A futtatókörnyezet által kidobott kivételek. |
customMetrics | A sikeres és sikertelen meghívások száma, a sikerességi arány és az időtartam. |
customEvents | A futtatókörnyezet által nyomon követett események, például: függvényt aktiváló HTTP-kérések. |
performanceCounters | Információk a függvények által futtatott kiszolgálók teljesítményéről. |
A többi tábla a rendelkezésre állási tesztekhez, valamint az ügyfél- és böngészőtelemetria. Egyéni telemetriát is implementálhat, hogy adatokat adjon hozzájuk.
Az egyes táblákban a Függvényspecifikus adatok egy része egy customDimensions
mezőben található. Az alábbi lekérdezés például lekéri az összes naplószinttel Error
rendelkező nyomkövetést.
traces
| where customDimensions.LogLevel == "Error"
A futtatókörnyezet biztosítja a mezőket és customDimensions.Category
a customDimensions.LogLevel
mezőket. A függvénykódba írt naplókban további mezőket is megadhat. A C#-ban például lásd a strukturált naplózást a .NET-osztálytár fejlesztői útmutatójában.
Lekérdezésfüggvény-meghívások
Minden függvényhíváshoz egyedi azonosító tartozik.
InvocationId
szerepel az egyéni dimenzióban, és az adott függvényvégrehajtás összes naplójának korrelálásához használható.
traces
| project customDimensions["InvocationId"], message
Telemetriai korreláció
A különböző függvényekből származó naplók korrelálhatók a következő használatával operation_Id
: . Az alábbi lekérdezéssel visszaadhatja egy adott logikai művelet összes naplóit.
traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp
Mintavételezési százalék
Mintavételezési konfigurációval csökkenthető a telemetriai adatok mennyisége. Az alábbi lekérdezés segítségével megállapíthatja, hogy a mintavételezés működik-e vagy sem. Ha úgy látja, hogy a RetainedPercentage
bármely típus esetében kisebb, mint 100, akkor az adott típusú telemetria mintavételezése folyamatban van.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Lekérdezési skálázási vezérlő naplói
Ez a funkció előzetes verzióban érhető el.
A skálázási vezérlő naplózásának és az Application Insights integrációjának engedélyezése után az Application Insights naplókeresésével lekérdezheti a kibocsátott skálázási vezérlő naplóit. A skálázásvezérlő naplói a traces
ScaleControllerLogs kategória gyűjteményében vannak mentve.
Az alábbi lekérdezéssel megkeresheti az aktuális függvényalkalmazás összes skálázási vezérlőnaplóját a megadott időtartamon belül:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
Az alábbi lekérdezés kibővül az előző lekérdezéssel, hogy bemutassa, hogyan kérhet le csak a skálázás változását jelző naplókat:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount
Rugalmas kihasználtságú kód üzembehelyezési naplóinak lekérdezése
Az alábbi lekérdezéssel megkeresheti az aktuális függvényalkalmazás összes kódterjesztési naplóját a megadott időtartamon belül:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
Használati tervre vonatkozó metrikák
Használatalapú tervben való futtatáskor az egyetlen függvény végrehajtásának végrehajtási költségét GB-másodpercben méri a rendszer. A végrehajtási költség kiszámítása a memóriahasználat és a végrehajtási idő egyesítésével történik. További információ: A használati terv költségeinek becslése.
Az alábbi telemetriai lekérdezések olyan metrikákra vonatkoznak, amelyek befolyásolják a használati tervben lévő függvények futtatásának költségeit.
Memóriahasználat meghatározása
A Figyelés területen válassza a Naplók (Elemzés) lehetőséget, másolja ki a következő telemetriai lekérdezést, és illessze be a lekérdezési ablakba, és válassza a Futtatás lehetőséget. Ez a lekérdezés minden mintavételezett időpontban visszaadja a teljes memóriahasználatot.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Az eredmények a következő példához hasonlóan néznek ki:
időbélyeg [UTC] | név | Érték |
---|---|---|
2019.09.12. 1:05:14.947 | Privát bájtok | 209,932,288 |
2019.09.12., 1:06:14.994 | Privát bájtok | 212,189,184 |
2019.09.12. 1:06:30.010 | Privát bájtok | 231,714,816 |
2019.09.12., 1:07:15.040 | Privát bájtok | 210,591,744 |
2019.09.12., 1:12:16.285 | Privát bájtok | 216,285,184 |
2019.09.12., 1:12:31.376 | Privát bájtok | 235,806,720 |
Időtartam meghatározása
Az Azure Monitor az erőforrás szintjén követi nyomon a metrikákat, amelyek a Functions esetében a függvényalkalmazások. Az Application Insights-integráció függvényenként bocsát ki metrikákat. Íme egy példaelemzési lekérdezés egy függvény átlagos időtartamának lekéréséhez:
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
név | averageDurationMilliseconds |
---|---|
QueueTrigger AvgDurationMs | 16.087 |
QueueTrigger MaxDurationMs | 90.249 |
QueueTrigger MinDurationMs | 8.522 |
Következő lépések
További információ az Azure Functions monitorozásáról: