Analýza telemetrie Azure Functions v application Přehledy

Integrace služby Azure Functions s Application Insights umožňuje lépe monitorovat aplikace funkcí. Aplikace Přehledy shromažďuje telemetrická data generovaná vaší aplikací funkcí, včetně informací, které aplikace zapisuje do protokolů. Integrace Přehledy aplikace je obvykle povolená při vytvoření aplikace funkcí. Pokud vaše aplikace funkcí nemá nastavenou instrumentační klíč, musíte nejprve povolit integraci Přehledy aplikace.

Ve výchozím nastavení se data shromážděná z vaší aplikace funkcí ukládají v Přehledy aplikace. Na webu Azure Portal poskytuje aplikace Přehledy 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 aplikaci Přehledy najdete v tématu Co je aplikace Přehledy?.

Abyste mohli zobrazit data aplikace Přehledy 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áře monitorování pro instanci Přehledy aplikace. Tato oprávnění máte ve výchozím nastavení pro libovolnou aplikaci funkcí a aplikaci Přehledy instanci, 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 Přehledy aplikace.

Zobrazení telemetrie na kartě Monitorování

S povolenou integrací Přehledy aplikace 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í aplikace Přehledy. Pak v levém podokně vyberte Monitorování . Pravidelně vyberte Aktualizovat , dokud se nezobrazí seznam vyvolání funkcí.

    Invocations list

    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.

    Invocation details

  3. Zvolte Spustit v aplikaci Přehledy 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.

    Application Insights Analytics invocation list

Další informace najdete v tématu Dotazování telemetrických dat dále v tomto článku.

Zobrazení telemetrie v Přehledy aplikace

Otevření aplikace Přehledy 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 Přehledy Aplikace.

  3. Pokud používáte aplikaci Přehledy s předplatným poprvé, zobrazí se výzva k jejímu povolení. Uděláte to tak, že vyberete Zapnout Přehledy aplikace a pak vyberete Použít na další stránce.

Open Application Insights from the function app Overview page

Informace o tom, jak používat Přehledy aplikace, najdete v dokumentaci k Přehledy aplikace. Tato část ukazuje některé příklady zobrazení dat v Přehledy aplikace. Pokud už znáte Přehledy aplikace, můžete přejít přímo do oddílů o tom, jak nakonfigurovat a přizpůsobit telemetrická data.

Application Insights Overview tab

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 Přehledy aplikací:

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 Přehledy 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.

Analytics example

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.
Požadavky 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 Přehledy aplikace můžete k dotazování na vygenerované protokoly kontroleru škálování použít prohledávání protokolu application Přehledy. 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

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 Přehledy aplikací 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: