Udostępnij za pośrednictwem


Metryki oparte na dzienniku usługi Application Insights

Metryki oparte na dzienniku usługi Application Insights umożliwiają analizowanie kondycji monitorowanych aplikacji, tworzenie zaawansowanych pulpitów nawigacyjnych i konfigurowanie alertów. Istnieją dwa rodzaje metryk:

  • Metryki oparte na dzienniku są tłumaczone na zapytania Kusto z przechowywanych zdarzeń.
  • Metryki standardowe są przechowywane jako wstępnie agregowane szeregi czasowe.

Ponieważ metryki standardowe są wstępnie agregowane podczas zbierania, mają lepszą wydajność w czasie wykonywania zapytań. Dzięki temu są one lepszym wyborem w przypadku pulpitów nawigacyjnych i alertów w czasie rzeczywistym. Metryki oparte na dzienniku mają więcej wymiarów, co sprawia, że są one lepszą opcją analizy danych i diagnostyki ad hoc. Użyj selektora przestrzeni nazw, aby przełączać się między metrykami opartymi na dziennikach i standardowymi w Eksploratorze metryk.

Interpretowanie i używanie zapytań z tego artykułu

W tym artykule wymieniono metryki z obsługiwanymi agregacjami i wymiarami. Szczegółowe informacje o metrykach opartych na dziennikach obejmują podstawowe instrukcje zapytań Kusto. Dla wygody każde zapytanie używa wartości domyślnych dla stopnia szczegółowości czasu, typu wykresu i czasami podziału wymiaru, co upraszcza korzystanie z zapytania w usłudze Log Analytics bez konieczności modyfikacji.

W przypadku wykreślenia tej samej metryki w Eksploratorze metryk nie ma wartości domyślnych — zapytanie jest dynamicznie dostosowywane na podstawie ustawień wykresu:

  • Wybrany zakres czasu jest tłumaczony na dodatkowy , gdzie klauzula znacznika czasu... umożliwia wybranie tylko zdarzeń z wybranego zakresu czasu. Na przykład wykres przedstawiający dane z ostatnich 24 godzin, zapytanie zawiera |where timestamp > ago(24 h).

  • Wybrany stopień szczegółowości czasu jest umieszczany w końcowej podsumowaniu ... by bin(timestamp, [time grain]) klauzula.

  • Wszystkie wybrane wymiary filtru są tłumaczone na dodatkowe klauzule where .

  • Wybrany wymiar podzielonego wykresu jest tłumaczony na dodatkową właściwość podsumowania. Jeśli na przykład podzielisz wykres według lokalizacji i wykreślisz wykres przy użyciu 5-minutowego stopnia szczegółowości czasu, klauzula podsumowania zostanie podsumowana ... by bin(sygnatura czasowa, 5 m), lokalizacja.

Uwaga

Jeśli dopiero zaczynasz korzystać z języka zapytań Kusto, zacznij od skopiowania i wklejenia instrukcji Kusto do okienka zapytań usługi Log Analytics bez wprowadzania żadnych modyfikacji. Kliknij przycisk Uruchom , aby wyświetlić podstawowy wykres. Gdy zaczniesz rozumieć składnię języka zapytań, możesz zacząć wprowadzać małe modyfikacje i zobaczyć wpływ zmiany. Eksplorowanie własnych danych to doskonały sposób na rozpoczęcie realizacji pełnej możliwości usługi Log Analytics i usługi Azure Monitor.

Metryki dostępności

Metryki w kategorii Dostępność umożliwiają wyświetlanie kondycji aplikacji internetowej obserwowanej z punktów na całym świecie. Skonfiguruj testy dostępności, aby rozpocząć korzystanie z dowolnych metryk z tej kategorii.

Dostępność (availabilityResults/availabilityPercentage)

Metryka Dostępność pokazuje procent przebiegów testów internetowych, które nie wykryły żadnych problemów. Najniższa możliwa wartość to 0, co oznacza, że wszystkie przebiegi testu internetowego zakończyły się niepowodzeniem. Wartość 100 oznacza, że wszystkie przebiegi testu internetowego przeszły kryteria weryfikacji.

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Procent Średnia Lokalizacja uruchamiania, nazwa testu
availabilityResults 
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart

Czas trwania testu dostępności (availabilityResults/duration)

Metryka Czas trwania testu dostępności pokazuje, ile czasu zajęło uruchomienie testu internetowego. W przypadku wieloetapowych testów internetowych metryka odzwierciedla całkowity czas wykonywania wszystkich kroków.

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Milisekundy Średnia, Minimalna, Maksymalna Lokalizacja uruchamiania, nazwa testu, wynik 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 dostępności (availabilityResults/count)

Metryka Testy dostępności odzwierciedla liczbę testów internetowych uruchamianych przez usługę Azure Monitor.

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Liczba Liczba Lokalizacja uruchamiania, nazwa testu, wynik testu
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart

Metryki przeglądarki

Metryki przeglądarki są zbierane przez zestaw SDK języka JavaScript usługi Application Insights z rzeczywistych przeglądarek użytkowników końcowych. Zapewniają one doskonały wgląd w środowisko użytkowników w aplikacji internetowej. Metryki przeglądarki zwykle nie są próbkowane, co oznacza, że zapewniają większą precyzję liczb użycia w porównaniu z metrykami po stronie serwera, które mogą być wypaczone przez próbkowanie.

Uwaga

Aby zbierać metryki przeglądarki, aplikacja musi być instrumentowana przy użyciu zestawu SDK języka JavaScript usługi Application Insights.

Czas ładowania strony przeglądarki (browserTimings/totalDuration)

Czas od żądania użytkownika do momentu załadowania modelu DOM, arkuszy stylów, skryptów i obrazów.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane
Milisekundy Średnia, Minimalna, Maksymalna Brak
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

Czas przetwarzania klienta (browserTiming/processingDuration)

Czas między odebraniem ostatniego bajtu dokumentu do momentu załadowania modelu DOM. Żądania asynchroniczne mogą nadal być przetwarzane.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane
Milisekundy Średnia, Minimalna, Maksymalna Brak
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

Czas połączenia sieciowego ładowania strony (browserTimings/networkDuration)

Czas między żądaniem użytkownika a połączeniem sieci. Obejmuje wyszukiwanie DNS i połączenie transportu.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane
Milisekundy Średnia, Minimalna, Maksymalna Brak
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

Czas odpowiedzi (browserTimings/receiveDuration)

Czas między pierwszym i ostatnimi bajtami lub do momentu rozłączenia.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane
Milisekundy Średnia, Minimalna, Maksymalna Brak
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

Czas wysyłania żądania (browserTimings/sendDuration)

Czas między połączeniem sieciowym a odebraniem pierwszego bajtu.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane
Milisekundy Średnia, Minimalna, Maksymalna Brak
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

Metryki błędów

Metryki w obszarze Błędy pokazują problemy z przetwarzaniem żądań, wywołań zależności i zgłaszanymi wyjątkami.

Wyjątki przeglądarki (wyjątki/przeglądarka)

Ta metryka odzwierciedla liczbę zgłoszonych wyjątków z kodu aplikacji uruchomionego w przeglądarce. W metryce są uwzględniane tylko wyjątki śledzone za pomocą wywołania interfejsu trackException() API usługi Application Insights.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane Uwagi
Liczba Liczba Brak Wersja oparta na dzienniku używa agregacji Sum
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Błędy wywołań zależności (zależności/niepowodzenie)

Liczba wywołań zależności zakończonych niepowodzeniem.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane Uwagi
Liczba Liczba Brak Wersja oparta na dzienniku używa agregacji Sum
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Wyjątki (wyjątki/liczba)

Za każdym razem, gdy rejestrujesz wyjątek w usłudze Application Insights, istnieje wywołanie metody trackException() zestawu SDK. Metryka Wyjątki przedstawia liczbę zarejestrowanych wyjątków.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane Uwagi
Liczba Liczba Nazwa roli chmury, Wystąpienie roli w chmurze, Typ urządzenia Wersja oparta na dzienniku używa agregacji Sum
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Żądania nieudane (żądania/niepowodzenie)

Liczba śledzonych żądań serwera, które zostały oznaczone jako nieudane. Domyślnie zestaw SDK usługi Application Insights automatycznie oznacza każde żądanie serwera, które zwróciło kod odpowiedzi HTTP 5xx lub 4xx jako żądanie, które zakończyło się niepowodzeniem. Tę logikę można dostosować, modyfikując właściwość powodzenia elementu telemetrii żądania w inicjatorze niestandardowej telemetrii.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane Uwagi
Liczba Liczba Wystąpienie roli w chmurze, nazwa roli chmury, ruch rzeczywisty lub syntetyczny, wydajność żądania, kod odpowiedzi Wersja oparta na dzienniku używa agregacji Sum
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Wyjątki serwera (wyjątki/serwer)

Ta metryka przedstawia liczbę wyjątków serwera.

Jednostka miary Obsługiwane agregacje Wymiary wstępnie agregowane Uwagi
Liczba Liczba Nazwa roli chmury, Wystąpienie roli chmury Wersja oparta na dzienniku używa agregacji Sum
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Liczniki wydajności

Użyj metryk w kategorii Liczniki wydajności, aby uzyskać dostęp do liczników wydajności systemu zebranych przez usługę Application Insights.

Dostępna pamięć (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

Współczynnik wyjątków (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

Czas wykonywania żądania 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

Szybkość żądań 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

Żądania HTTP w kolejce aplikacji (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

Przetwarzanie procesora CPU (performanceCounters/processCpuPercentage)

Metryka pokazuje, ile całkowitej pojemności procesora jest zużywane przez proces hostujący monitorowaną aplikację.

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Procent Średnia, Minimalna, Maksymalna Wystąpienie roli w chmurze
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

Uwaga

Zakres metryki wynosi od 0 do 100 * n, gdzie n jest liczbą dostępnych rdzeni procesora CPU. Na przykład wartość metryki 200% może reprezentować pełne wykorzystanie dwóch rdzeni procesora CPU lub połowy wykorzystania 4 rdzeni procesora CPU itd. Znormalizowane użycie procesora CPU procesu to alternatywna metryka zbierana przez wiele zestawów SDK, która reprezentuje tę samą wartość, ale dzieli ją przez liczbę dostępnych rdzeni procesora CPU. W związku z tym zakres znormalizowanej metryki procesora CPU procesu wynosi od 0 do 100.

Współczynnik operacji we/wy procesu (performanceCounters/processIOBytesPerSecond)

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Bajty na sekundę Średnia, Minimalna, Maksymalna Wystąpienie roli w chmurze
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

Przetwarzanie bajtów prywatnych (performanceCounters/processPrivateBytes)

Ilość nieudzielonej pamięci przydzielonej przez monitorowany proces dla danych.

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Bajty Średnia, Minimalna, Maksymalna Wystąpienie roli w chmurze
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

Czas procesora (performanceCounters/processorCpuPercentage)

Użycie procesora PRZEZ wszystkie procesy uruchomione w monitorowanym wystąpieniu serwera.

Jednostka miary Obsługiwane agregacje Obsługiwane wymiary
Procent Średnia, Minimalna, Maksymalna Wystąpienie roli w chmurze

Uwaga

Metryka czasu procesora nie jest dostępna dla aplikacji hostowanych w usługach aplikacja systemu Azure. Użyj metryki Przetwarzania procesora CPU , aby śledzić wykorzystanie procesora CPU aplikacji internetowych hostowanych w usłudze 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

Metryki serwera

Wywołania zależności (zależności/liczba)

Ta metryka jest w odniesieniu do liczby wywołań zależności.

dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Czas trwania zależności (zależności/czas trwania)

Ta metryka odnosi się do czasu trwania wywołań zależności.

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

Żądania serwera (żądania/liczba)

Ta metryka odzwierciedla liczbę przychodzących żądań serwera, które zostały odebrane przez aplikację internetową.

requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

Czas odpowiedzi serwera (żądania/czas trwania)

Ta metryka odzwierciedla czas przetwarzania żądań przychodzących przez serwery.

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

Metryki użycia

Czas ładowania widoku strony (pageViews/duration)

Ta metryka odnosi się do ilości czasu, jaki zajęło załadowanie zdarzeń 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

Widoki stron (pageViews/count)

Liczba zdarzeń PageView zarejestrowanych za pomocą interfejsu API usługi Application Insights TrackPageView().

pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Sesje (sesje/liczba)

Ta metryka odnosi się do liczby unikatowych identyfikatorów sesji.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart

Ślady (ślady/liczba)

Liczba instrukcji śledzenia zarejestrowanych za pomocą wywołania interfejsu API usługi Application Insights TrackTrace().

traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

Użytkownicy (użytkownicy/liczba)

Liczba unikatowych użytkowników, którzy uzyskiwali dostęp do aplikacji. Na dokładność tej metryki może mieć znaczący wpływ użycie próbkowania i filtrowania telemetrii.

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żytkownicy, uwierzytelnieni (użytkownicy/uwierzytelnieni)

Liczba unikatowych użytkowników uwierzytelnionych w aplikacji.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart

Uzyskiwanie dostępu do wszystkich danych bezpośrednio za pomocą interfejsu API REST usługi Application Insights

Interfejs API REST usługi Application Insights umożliwia programowe pobieranie metryk opartych na dziennikach. Zawiera również opcjonalny parametr "ai.include-query-payload", który po dodaniu do ciągu zapytania monituje interfejs API o zwrócenie nie tylko danych czasowników, ale także instrukcji język zapytań Kusto (KQL) użytej do pobrania. Ten parametr może być szczególnie korzystny dla użytkowników mających na celu zrozumienie połączenia między nieprzetworzonymi zdarzeniami w usłudze Log Analytics i wynikową metryki opartą na dzienniku.

Aby uzyskać bezpośredni dostęp do danych, przekaż parametr "ai.include-query-payload" do interfejsu API usługi Application Insights w zapytaniu przy użyciu języka KQL.

api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload

Poniżej przedstawiono przykład zwracanej instrukcji KQL dla metryki "Uwierzytelnieni użytkownicy". (W tym przykładzie wartość "users/authenticated" to identyfikator metryki).

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