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