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:

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)"
}