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

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

    Seznam vyvolání

    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.

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

    Podrobnosti o vyvolání

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

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

    Seznam vyvolání analýzy Application Insights

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:

  1. Na portálu přejděte do aplikace funkcí.

  2. V části Nastavení na levé stránce vyberte Application Insights.

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

Otevření Application Insights ze stránky Přehled aplikace funkcí

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.

Karta Přehled Application Insights

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.

Příklad analýzy

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ň Errorprotokolu .

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

Důležité

Plán Flex Consumption je aktuálně ve verzi Preview.

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: