Analýza telemetrie Azure Functions v Application Insights
Integrace služby Azure Functions s Application Insights umožňuje lépe monitorovat aplikace funkcí. Application Insights shromažďuje telemetrická data generovaná vaší aplikací funkcí, včetně informací, které aplikace zapisuje do protokolů. Integrace Application Insights je obvykle povolená při vytváření vaší aplikace funkcí. Pokud vaše aplikace funkcí nemá nastavenou instrumentační klíč, musíte nejprve povolit integraci Application Insights.
Ve výchozím nastavení se data shromážděná z vaší aplikace funkcí ukládají do Application Insights. Application Insights na webu Azure Portal poskytuje rozsáhlou sadu vizualizací vašich telemetrických dat. Můžete přejít k podrobnostem protokolů chyb a dotazování událostí a metrik. Tento článek obsahuje základní příklady zobrazení a dotazování shromážděných dat. Další informace o zkoumání dat aplikace funkcí v Application Insights najdete v tématu Co je Application Insights?
Abyste mohli zobrazit data Application Insights z aplikace funkcí, musíte mít k aplikaci funkcí alespoň oprávnění role Přispěvatel. Musíte mít také oprávnění Čtenář monitorování pro instanci Application Insights. Tato oprávnění máte ve výchozím nastavení pro libovolnou aplikaci funkcí a instanci Application Insights, kterou vytvoříte.
Další informace o uchovávání dat a potenciálních nákladech na úložiště najdete v tématu Shromažďování, uchovávání dat a úložiště v Application Insights.
Zobrazení telemetrie na kartě Monitorování
S povolenou integrací Application Insights můžete zobrazit telemetrická data na kartě Monitorování .
Na stránce aplikace funkcí vyberte funkci, která se spustila aspoň jednou po nakonfigurování Application Insights. Pak v levém podokně vyberte Monitorování . Pravidelně vyberte Aktualizovat , dokud se nezobrazí seznam vyvolání funkcí.
Poznámka:
Zobrazení seznamu může trvat až pět minut, než klient telemetrie dávková data pro přenos na server. Zpoždění se nevztahuje na stream živých metrik. Tato služba se při načítání stránky připojí k hostiteli Functions, takže se protokoly streamují přímo na stránku.
Pokud chcete zobrazit protokoly pro vyvolání konkrétní funkce, vyberte odkaz na sloupec Datum (UTC) pro toto vyvolání. Výstup protokolování pro toto vyvolání se zobrazí na nové stránce.
Zvolte Spustit v Application Insights a zobrazte zdroj dotazu, který načte data protokolu služby Azure Monitor v protokolu Azure. Pokud ve svém předplatném používáte Azure Log Analytics poprvé, zobrazí se výzva, abyste ji povolili.
Po povolení Log Analytics se zobrazí následující dotaz. Vidíte, že výsledky dotazu jsou omezené na posledních 30 dnů (
where timestamp > ago(30d)
) a výsledky zobrazují maximálně 20 řádků (take 20
). Naproti tomu seznam podrobností o vyvolání funkce je za posledních 30 dnů bez limitu.
Další informace najdete v tématu Dotazování telemetrických dat dále v tomto článku.
Zobrazení telemetrie v Application Insights
Otevření Application Insights z aplikace funkcí na webu Azure Portal:
Na portálu přejděte do aplikace funkcí.
V části Nastavení na levé stránce vyberte Application Insights.
Pokud s předplatným používáte Application Insights poprvé, zobrazí se výzva k jeho povolení. Uděláte to tak, že vyberete Zapnout Application Insights a pak vyberete Použít na další stránce.
Informace o tom, jak používat Application Insights, najdete v dokumentaci k Application Insights. Tato část ukazuje několik příkladů zobrazení dat v Application Insights. Pokud už službu Application Insights znáte, můžete přejít přímo do oddílů o tom, jak nakonfigurovat a přizpůsobit telemetrická data.
Při vyhodnocování chování, výkonu a chyb ve vašich funkcích můžou být užitečné následující oblasti Application Insights:
Prošetření | Popis |
---|---|
Selhání | Vytváření grafů a upozornění na základě selhání funkcí a výjimek serveru Název operace je název funkce. Selhání závislostí se nezobrazují, pokud neimplementujete vlastní telemetrii závislostí. |
Výkon | Analyzujte problémy s výkonem zobrazením využití prostředků a propustnosti na instance cloudových rolí. Tato data o výkonu můžou být užitečná při ladění scénářů, kdy funkce zabíjejí základní prostředky. |
Metriky | Vytvářejte grafy a výstrahy založené na metrikách. Mezi metriky patří počet volání funkcí, doba provádění a míra úspěšnosti. |
Live Metrics | Zobrazte si data metrik při vytváření téměř v reálném čase. |
Dotazování telemetrických dat
Application Insights Analytics poskytuje přístup ke všem telemetrickým datům ve formě tabulek v databázi. Analýza poskytuje dotazovací jazyk pro extrakci, manipulaci s nimi a vizualizaci dat.
Zvolte Protokoly , které chcete prozkoumat nebo dotazovat na protokolované události.
Tady je příklad dotazu, který ukazuje distribuci požadavků na pracovníka za posledních 30 minut.
requests
| where timestamp > ago(30m)
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart
Tabulky, které jsou k dispozici, jsou zobrazeny na kartě Schéma na levé straně. Data vygenerovaná vyvoláním funkcí najdete v následujících tabulkách:
Table | Popis |
---|---|
stopy | Protokoly vytvořené modulem runtime, kontrolerem škálování a trasováním z kódu funkce. Pro hostování traces plánu Flex Consumption zahrnuje také protokoly vytvořené během nasazování kódu. |
požaduje | Jeden požadavek na vyvolání jednotlivých funkcí |
výjimky | Všechny výjimky vyvolané modulem runtime. |
customMetrics | Počet úspěšných a neúspěšných volání, úspěšnosti a doby trvání. |
customEvents | Události sledované modulem runtime, například požadavky HTTP, které aktivují funkci. |
performanceCounters | Informace o výkonu serverů, na kterých jsou funkce spuštěné. |
Ostatní tabulky jsou určené pro testy dostupnosti a telemetrii klienta a prohlížeče. Vlastní telemetrii můžete implementovat a přidat do nich data.
V každé tabulce jsou některá data specifická pro funkce v customDimensions
poli. Například následující dotaz načte všechna trasování, která mají úroveň Error
protokolu .
traces
| where customDimensions.LogLevel == "Error"
Modul runtime poskytuje customDimensions.LogLevel
pole a customDimensions.Category
pole. Do protokolů, které píšete v kódu funkce, můžete zadat další pole. Příklad v jazyce C# najdete v části Strukturované protokolování v příručce pro vývojáře knihovny tříd .NET.
Vyvolání funkce dotazu
Každému vyvolání funkce je přiřazeno jedinečné ID. InvocationId
je součástí vlastní dimenze a lze ji použít ke korelaci všech protokolů z konkrétního spuštění funkce.
traces
| project customDimensions["InvocationId"], message
Korelace telemetrie
Protokoly z různých funkcí lze korelovat pomocí operation_Id
. Pomocí následujícího dotazu vrátíte všechny protokoly pro konkrétní logickou operaci.
traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp
Procento vzorkování
S využitím konfigurace vzorkování je možné snížit objem telemetrie. Pomocí následujícího dotazu určete, jestli je vzorkování funkční nebo ne. Pokud se u nějakého typu zobrazí hodnota RetainedPercentage
nižší než 100, znamená to, že se daný typ telemetrie vzorkuje.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType
Dotazování protokolů kontroleru škálování
Tato funkce je ve verzi Preview.
Po povolení protokolování kontroleru škálování i integrace Application Insights můžete pomocí prohledávání protokolu Application Insights dotazovat na vygenerované protokoly kontroleru škálování. Protokoly kontroleru škálování se ukládají do traces
kolekce v kategorii ScaleControllerLogs .
Následující dotaz lze použít k vyhledání všech protokolů kontroleru škálování pro aktuální aplikaci funkcí v zadaném časovém období:
traces
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
Následující dotaz rozbalí předchozí dotaz, který ukazuje, jak získat pouze protokoly označující změnu ve velkém měřítku:
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
Dotazování protokolů nasazení kódu Flex Consumption
Následující dotaz lze použít k vyhledání všech protokolů nasazení kódu pro aktuální aplikaci funkcí v zadaném časovém období:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
Metriky specifické pro plán Consumption
Při spuštění v plánu Consumption se náklady na spuštění jedné funkce měří v GB sekundách. Náklady na spuštění se počítají zkombinováním využití paměti s časem spuštění. Další informace najdete v tématu Odhad nákladů na plán Consumption.
Následující dotazy telemetrie jsou specifické pro metriky, které mají vliv na náklady na provoz funkcí v plánu Consumption.
Určení využití paměti
V části Monitorování vyberte Protokoly (Analytics) a zkopírujte následující telemetrický dotaz a vložte ho do okna dotazu a vyberte Spustit. Tento dotaz vrátí celkové využití paměti v každém vzorkovaném čase.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Výsledky vypadají jako v následujícím příkladu:
časové razítko [UTC] | name | hodnota |
---|---|---|
9.12.2019, 1:05:14.947 | Privátní bajty | 209,932,288 |
12.9.2019, 1:06:14.994 | Privátní bajty | 212,189,184 |
12.9.2019, 1:06:30.010 | Privátní bajty | 231,714,816 |
12.9.2019, 1:07:15.040 | Privátní bajty | 210,591,744 |
12.9.2019, 1:12:16.285 | Privátní bajty | 216,285,184 |
12.9.2019, 1:12:31.376 | Privátní bajty | 235,806,720 |
Určení doby trvání
Azure Monitor sleduje metriky na úrovni prostředků, což je aplikace funkcí pro Functions. Integrace Application Insights generuje metriky na základě jednotlivých funkcí. Tady je příklad analytického dotazu pro získání průměrné doby trvání funkce:
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name | averageDurationMilliseconds |
---|---|
QueueTrigger AvgDurationMs | 16.087 |
QueueTrigger MaxDurationMs | 90.249 |
QueueTrigger MinDurationMs | 8.522 |
Další kroky
Další informace o monitorování služby Azure Functions: