Metriky založené na protokolech Application Insights
Metriky založené na protokolu Application Insights umožňují analyzovat stav monitorovaných aplikací, vytvářet výkonné řídicí panely a konfigurovat výstrahy. Existují dva druhy metrik:
- Metriky založené na protokolech za scénou se překládají do dotazů Kusto z uložených událostí.
- Standardní metriky se ukládají jako předem agregované časové řady.
Vzhledem k tomu, že se standardní metriky během shromažďování předem agregují, mají lepší výkon v době dotazování. Díky tomu jsou lepší volbou pro řídicí panely a upozorňování v reálném čase. Metriky založené na protokolech mají více dimenzí, díky čemuž jsou vynikající volbou pro analýzu dat a diagnostiku ad hoc. Pomocí selektoru oboru názvů můžete přepínat mezi protokoly a standardními metrikami v Průzkumníku metrik.
Interpretace a používání dotazů z tohoto článku
Tento článek uvádí metriky s podporovanými agregacemi a dimenzemi. Podrobnosti o metrikách založených na protokolu zahrnují podkladové příkazy dotazu Kusto. Pro usnadnění práce každý dotaz používá výchozí hodnoty pro časovou členitost, typ grafu a někdy rozdělení dimenze, které zjednodušuje používání dotazu v Log Analytics bez nutnosti úprav.
Při vykreslení stejné metriky v Průzkumníku metrik neexistují žádné výchozí hodnoty – dotaz se dynamicky upraví na základě nastavení grafu:
Vybraný časový rozsah se přeloží do dalšího místa, kde klauzule timestamp... slouží k výběru pouze událostí z vybraného časového rozsahu. Například graf zobrazující data za posledních 24 hodin obsahuje dotaz | where timestamp > ago(24 h).
Vybraná členitost času se vloží do konečného souhrnu ... by bin(timestamp; [time grain]) – klauzule.
Všechny vybrané dimenze filtru se překládají do dalších klauzulí where .
Vybraná dimenze rozděleného grafu se přeloží na extra souhrnnou vlastnost. Pokud například rozdělíte graf podle umístění a vykreslíte pomocí 5minutové časové intervaly, sumarizace klauzule sumarizuje ... podle intervalu (časové razítko, 5 m), umístění.
Poznámka:
Pokud s dotazovacím jazykem Kusto začínáte, začněte tím, že zkopírujete a vložíte příkazy Kusto do podokna dotazů Log Analytics bez jakýchkoli úprav. Kliknutím na Spustit zobrazíte základní graf. Když začnete rozumět syntaxi dotazovacího jazyka, můžete začít provádět malé úpravy a vidět dopad změn. Prozkoumání vlastních dat je skvělý způsob, jak začít plně pracovat s Log Analytics a Azure Monitorem.
Metriky dostupnosti
Metriky v kategorii Dostupnost umožňují zobrazit stav vaší webové aplikace podle pozorování z bodů po celém světě. Nakonfigurujte testy dostupnosti tak, aby začaly používat všechny metriky z této kategorie.
Dostupnost (availabilityResults/availabilityPercentage)
Metrika Dostupnost zobrazuje procento spuštění webového testu, které nezjistily žádné problémy. Nejnižší možná hodnota je 0, což značí, že všechna spuštění webového testu selhala. Hodnota 100 znamená, že všechna spuštění webového testu prošla ověřovacími kritérii.
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Procento | Průměr | Umístění spuštění, název testu |
availabilityResults
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart
Doba trvání testu dostupnosti (availabilityResults/duration)
Metrika doby trvání testu dostupnosti ukazuje, kolik času trvalo spuštění webového testu. U webových testů s více kroky odráží metrika celkovou dobu provádění všech kroků.
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Milisekundy | Průměr, Minimum, Maximum | Umístění spuštění, název testu, výsledek testu |
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart
Testy dostupnosti (availabilityResults/count)
Metrika testy dostupnosti odráží počet webových testů spuštěných službou Azure Monitor.
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Počet | Počet | Umístění spuštění, název testu, výsledek testu |
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart
Metriky prohlížeče
Metriky prohlížeče shromažďuje sada Application Insights JavaScript SDK z skutečných prohlížečů koncových uživatelů. Poskytují skvělé přehledy o zkušenostech uživatelů s vaší webovou aplikací. Metriky prohlížeče se obvykle nevybíjejí vzorek, což znamená, že poskytují vyšší přesnost čísel využití v porovnání s metrikami na straně serveru, které se můžou zkosit vzorkováním.
Poznámka:
Pokud chcete shromažďovat metriky prohlížeče, musí být vaše aplikace instrumentovaná pomocí sady Application Insights JavaScript SDK.
Doba načítání stránky prohlížeče (browserTimings/totalDuration)
Čas od požadavku uživatele, dokud se nenačtou šablony stylů, skripty a obrázky modelu DOM.
Měrná jednotka | Podporované agregace | Předem agregované dimenze |
---|---|---|
Milisekundy | Průměr, Minimum, Maximum | Nic |
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Doba zpracování klienta (browserTiming/processingDuration)
Doba mezi příjmem posledního bajtu dokumentu, dokud se nenačte dom. Asynchronní požadavky můžou stále zpracovávat.
Měrná jednotka | Podporované agregace | Předem agregované dimenze |
---|---|---|
Milisekundy | Průměr, Minimum, Maximum | Nic |
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart
Doba připojení k síti načítání stránky (browserTimings/networkDuration)
Doba mezi požadavkem uživatele a síťovým připojením. Zahrnuje vyhledávání a přenosové připojení DNS.
Měrná jednotka | Podporované agregace | Předem agregované dimenze |
---|---|---|
Milisekundy | Průměr, Minimum, Maximum | Nic |
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Příjem doby odezvy (browserTimings/receiveDuration)
Doba mezi prvním a posledním bajtem nebo do odpojení.
Měrná jednotka | Podporované agregace | Předem agregované dimenze |
---|---|---|
Milisekundy | Průměr, Minimum, Maximum | Nic |
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Čas odeslání požadavku (browserTimings/sendDuration)
Doba mezi síťovým připojením a příjmem prvního bajtu
Měrná jednotka | Podporované agregace | Předem agregované dimenze |
---|---|---|
Milisekundy | Průměr, Minimum, Maximum | Nic |
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Metriky selhání
Metriky v selhání zobrazují problémy se zpracováním požadavků, volání závislostí a vyvolanými výjimkami.
Výjimky prohlížeče (výjimky/prohlížeč)
Tato metrika odráží počet vyvolaných výjimek z kódu aplikace spuštěného v prohlížeči. Do metriky se zahrnou jenom výjimky, které se sledují pomocí trackException()
volání rozhraní API Application Insights.
Měrná jednotka | Podporované agregace | Předem agregované dimenze | Notes |
---|---|---|---|
Počet | Počet | Nic | Verze založená na protokolu používá agregaci Sum |
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Selhání volání závislostí (závislosti/selhání)
Počet neúspěšných volání závislostí.
Měrná jednotka | Podporované agregace | Předem agregované dimenze | Notes |
---|---|---|---|
Počet | Počet | Nic | Verze založená na protokolu používá agregaci Sum |
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Výjimky (výjimky/počet)
Pokaždé, když protokolujete výjimku do Application Insights, existuje volání metody trackException() sady SDK. Metrika Výjimky zobrazuje počet protokolovaných výjimek.
Měrná jednotka | Podporované agregace | Předem agregované dimenze | Notes |
---|---|---|---|
Počet | Počet | Název cloudové role, instance cloudové role, typ zařízení | Verze založená na protokolu používá agregaci Sum |
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Neúspěšné požadavky (požadavky/ neúspěšné)
Počet sledovaných požadavků na server, které byly označeny jako neúspěšné. Sada Application Insights SDK ve výchozím nastavení automaticky označí každý požadavek serveru, který vrátil kód odpovědi HTTP 5xx nebo 4xx jako neúspěšný požadavek. Tuto logiku můžete přizpůsobit úpravou vlastnosti úspěšnosti položky telemetrie požadavku ve vlastním inicializátoru telemetrie.
Měrná jednotka | Podporované agregace | Předem agregované dimenze | Notes |
---|---|---|---|
Počet | Počet | Instance cloudové role, název cloudové role, skutečný nebo syntetický provoz, výkon požadavku, kód odpovědi | Verze založená na protokolu používá agregaci Sum |
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Výjimky serveru (výjimky/server)
Tato metrika zobrazuje počet výjimek serveru.
Měrná jednotka | Podporované agregace | Předem agregované dimenze | Notes |
---|---|---|---|
Počet | Počet | Název cloudové role, instance cloudové role | Verze založená na protokolu používá agregaci Sum |
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Čítače výkonu
Metriky v kategorii Čítače výkonu slouží k přístupu k čítačům výkonu systému shromážděným službou Application Insights.
Dostupná paměť (performanceCounters/availableMemory)
performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Rychlost výjimek (performanceCounters/exceptionRate)
performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Doba provádění požadavků HTTP (performanceCounters/requestExecutionTime)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Rychlost požadavků HTTP (performanceCounters/requestsPerSecond)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Požadavky HTTP ve frontě aplikace (performanceCounters/requestsInQueue)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Procesor procesu (performanceCounters/ processCpuPercentage)
Metrika ukazuje, kolik celkové kapacity procesoru využívá proces hostující monitorovanou aplikaci.
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Procento | Průměr, Minimum, Maximum | Instance cloudové role |
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Poznámka:
Rozsah metriky je mezi 0 a 100 × n, kde n je počet dostupných jader procesoru. Například hodnota metriky 200 % může představovat plné využití dvou jader procesoru nebo poloviny využití 4 jader procesoru atd. Normalizovaný proces procesoru je alternativní metrika shromážděná mnoha sadami SDK, která představuje stejnou hodnotu, ale vydělí ji počtem dostupných jader procesoru. Rozsah normalizované metriky procesoru procesu je tedy 0 až 100.
Rychlost vstupně-výstupních operací procesu (performanceCounters/processIOBytesPerSecond)
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Bajty za sekundu | Průměr, Minimum, Maximum | Instance cloudové role |
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Zpracování privátních bajtů (performanceCounters/processPrivateBytes)
Množství nesdílené paměti, kterou monitorovaný proces přidělil svým datům.
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Přijaté | Průměr, Minimum, Maximum | Instance cloudové role |
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Doba procesoru (performanceCounters/processorCpuPercentage)
Spotřeba procesoru všemi procesy spuštěnými na monitorované instanci serveru.
Měrná jednotka | Podporované agregace | Podporované dimenze |
---|---|---|
Procento | Průměr, Minimum, Maximum | Instance cloudové role |
Poznámka:
Metrika času procesoru není dostupná pro aplikace hostované ve službě Aplikace Azure Services. Pomocí metriky Procesní procesor můžete sledovat využití procesoru webových aplikací hostovaných ve službě App Services.
performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Metriky serveru
Volání závislostí (závislosti/počet)
Tato metrika souvisí s počtem volání závislostí.
dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Doba trvání závislosti (závislosti/doba trvání)
Tato metrika odkazuje na dobu trvání volání závislostí.
dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart
Požadavky na server (požadavky/počet)
Tato metrika odráží počet příchozích požadavků serveru přijatých vaší webovou aplikací.
requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Doba odezvy serveru (požadavky/doba trvání)
Tato metrika odráží dobu, po které servery zpracovávaly příchozí požadavky.
requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart
Metriky využití
Doba načítání zobrazení stránky (pageViews/duration)
Tato metrika odkazuje na dobu, kterou trvalo načtení událostí PageView.
pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart
Zobrazení stránek (pageViews/count)
Počet událostí PageView protokolovaných pomocí rozhraní API Application Insights TrackPageView().
pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart
Relace (relace/počet)
Tato metrika odkazuje na počet jedinečných ID relací.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart
Trasování (trasování/počet)
Počet příkazů trasování protokolovaných pomocí volání rozhraní API TrackTrace() Application Insights.
traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart
Uživatelé (uživatelé/počet)
Počet jedinečných uživatelů, kteří k vaší aplikaci přistupovali. Přesnost této metriky může být výrazně ovlivněna pomocí vzorkování telemetrie a filtrování.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart
Uživatelé, ověření (uživatelé/ověření)
Počet jedinečných uživatelů, kteří se ověřili ve vaší aplikaci.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart
Přístup ke všem datům přímo pomocí rozhraní REST API služby Application Insights
Rozhraní REST API služby Application Insights umožňuje programové načítání metrik založených na protokolech. Obsahuje také volitelný parametr "ai.include-query-payload", který při přidání do řetězce dotazu vyzve rozhraní API, aby vrátilo nejen data časového rozsahu, ale také příkaz dotazovací jazyk Kusto (KQL), který se používá k načtení. Tento parametr může být zvlášť přínosný pro uživatele, kteří chtějí pochopit propojení mezi nezpracovaných událostí v Log Analytics a výslednou metrikou založenou na protokolech.
Pokud chcete k datům přistupovat přímo, předejte parametr "ai.include-query-payload" do rozhraní API Application Insights v dotazu pomocí KQL.
api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload
Následuje příklad návratového příkazu KQL pro metriku "Authenticated Users". (V tomto příkladu je ID metriky "users/authenticated".)
output
{
"value": {
"start": "2024-06-21T09:14:25.450Z",
"end": "2024-06-21T21:14:25.450Z",
"users/authenticated": {
"unique": 0
}
},
"@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}