Udostępnij za pośrednictwem


Analizowanie danych telemetrycznych usługi Azure Functions w usłudze Application Insights

Usługa Azure Functions integruje się z usługą Application Insights, aby lepiej umożliwić monitorowanie aplikacji funkcji. Usługa Application Insights zbiera dane telemetryczne generowane przez aplikację funkcji, w tym informacje zapisywane w dziennikach przez aplikację. Integracja z usługą Application Insights jest zwykle włączona podczas tworzenia aplikacji funkcji. Jeśli aplikacja funkcji nie ma ustawionego klucza instrumentacji, musisz najpierw włączyć integrację usługi Application Insights.

Domyślnie dane zebrane z aplikacji funkcji są przechowywane w usłudze Application Insights. W witrynie Azure Portal usługa Application Insights udostępnia obszerny zestaw wizualizacji danych telemetrycznych. Możesz przejść do szczegółów dzienników błędów i zapytań dotyczących zdarzeń i metryk. W tym artykule przedstawiono podstawowe przykłady wyświetlania zebranych danych i wykonywania względem ich zapytań. Aby dowiedzieć się więcej na temat eksplorowania danych aplikacji funkcji w usłudze Application Insights, zobacz Co to jest usługa Application Insights?.

Aby móc wyświetlać dane usługi Application Insights z aplikacji funkcji, musisz mieć co najmniej uprawnienia roli Współautor w aplikacji funkcji. Musisz również mieć uprawnienie Czytelnik monitorowania w wystąpieniu usługi Application Insights. Te uprawnienia są domyślnie dostępne dla każdej tworzonej aplikacji funkcji i wystąpienia usługi Application Insights.

Aby dowiedzieć się więcej na temat przechowywania danych i potencjalnych kosztów magazynowania, zobacz Zbieranie, przechowywanie i przechowywanie danych w usłudze Application Insights.

Wyświetlanie danych telemetrycznych na karcie Monitor

Po włączeniu integracji usługi Application Insights można wyświetlać dane telemetryczne na karcie Monitorowanie .

  1. Na stronie aplikacji funkcji wybierz funkcję, która została uruchomiona co najmniej raz po skonfigurowaniu usługi Application Insights. Następnie wybierz pozycję Monitor w okienku po lewej stronie. Okresowo wybieraj pozycję Odśwież , aż zostanie wyświetlona lista wywołań funkcji.

    Lista wywołań

    Uwaga

    Wyświetlenie listy może potrwać do pięciu minut, gdy klient telemetrii wsaduje dane do transmisji na serwer. Opóźnienie nie dotyczy strumienia metryk na żywo. Ta usługa łączy się z hostem usługi Functions podczas ładowania strony, więc dzienniki są przesyłane strumieniowo bezpośrednio do strony.

  2. Aby wyświetlić dzienniki dla wywołania określonej funkcji, wybierz link kolumny Date (UTC) dla tego wywołania. Dane wyjściowe rejestrowania dla tego wywołania są wyświetlane na nowej stronie.

    Szczegóły wywołania

  3. Wybierz pozycję Uruchom w usłudze Application Insights , aby wyświetlić źródło zapytania, które pobiera dane dziennika usługi Azure Monitor w dzienniku platformy Azure. Jeśli po raz pierwszy korzystasz z usługi Azure Log Analytics w ramach subskrypcji, zostanie wyświetlony monit o jej włączenie.

  4. Po włączeniu usługi Log Analytics zostanie wyświetlone następujące zapytanie. Wyniki zapytania są ograniczone do ostatnich 30 dni (where timestamp > ago(30d)), a wyniki nie zawierają więcej niż 20 wierszy (take 20). Z kolei lista szczegółów wywołania funkcji dotyczy ostatnich 30 dni bez limitu.

    Lista wywołań usługi Application Insights Analytics

Aby uzyskać więcej informacji, zobacz Wykonywanie zapytań dotyczących danych telemetrycznych w dalszej części tego artykułu.

Wyświetlanie danych telemetrycznych w usłudze Application Insights

Aby otworzyć usługę Application Insights z poziomu aplikacji funkcji w witrynie Azure Portal:

  1. Przejdź do aplikacji funkcji w portalu.

  2. Wybierz pozycję Application Insights w obszarze Ustawienia na lewej stronie.

  3. Jeśli po raz pierwszy używasz usługi Application Insights z subskrypcją, zostanie wyświetlony monit o jej włączenie. W tym celu wybierz pozycję Włącz usługę Application Insights, a następnie wybierz pozycję Zastosuj na następnej stronie.

Otwórz usługę Application Insights na stronie Przegląd aplikacji funkcji

Aby uzyskać informacje o sposobie korzystania z usługi Application Insights, zobacz dokumentację usługi Application Insights. W tej sekcji przedstawiono kilka przykładów wyświetlania danych w usłudze Application Insights. Jeśli znasz już usługę Application Insights, możesz przejść bezpośrednio do sekcji dotyczących konfigurowania i dostosowywania danych telemetrycznych.

Karta Przegląd usługi Application Insights

Następujące obszary usługi Application Insights mogą być przydatne podczas oceniania zachowania, wydajności i błędów w funkcjach:

Zbadaj opis
Awarii Tworzenie wykresów i alertów na podstawie błędów funkcji i wyjątków serwera. Nazwa operacji jest nazwą funkcji. Błędy w zależnościach nie są wyświetlane, chyba że implementujesz niestandardowe dane telemetryczne dla zależności.
Wydajność Analizowanie problemów z wydajnością przez wyświetlenie wykorzystania zasobów i przepływności na wystąpienia roli chmury. Te dane wydajności mogą być przydatne w przypadku scenariuszy debugowania, w których funkcje są przełączane w dół zasobów bazowych.
Metryki Tworzenie wykresów i alertów opartych na metrykach. Metryki obejmują liczbę wywołań funkcji, czas wykonywania i współczynniki powodzenia.
Metryki na żywo Wyświetlaj dane metryk, gdy są tworzone niemal w czasie rzeczywistym.

Wykonywanie zapytań dotyczących danych telemetrycznych

Analiza usługi Application Insights zapewnia dostęp do wszystkich danych telemetrycznych w postaci tabel w bazie danych. Analiza udostępnia język zapytań umożliwiający wyodrębnianie, manipulowanie i wizualizowanie danych.

Wybierz pozycję Dzienniki, aby eksplorować dzienniki lub wykonywać zapytania dotyczące zarejestrowanych zdarzeń.

Przykład analizy

Oto przykład zapytania, który pokazuje rozkład żądań na proces roboczy w ciągu ostatnich 30 minut.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

Dostępne tabele są wyświetlane na karcie Schemat po lewej stronie. Dane generowane przez wywołania funkcji można znaleźć w następujących tabelach:

Table opis
Ślady Dzienniki utworzone przez środowisko uruchomieniowe, kontroler skalowania i ślady z kodu funkcji. W przypadku hostingu traces planu Flex Consumption obejmuje również dzienniki utworzone podczas wdrażania kodu.
Żądania Jedno żądanie dla każdego wywołania funkcji.
Wyjątki Wszelkie wyjątki zgłaszane przez środowisko uruchomieniowe.
customMetrics Liczba wywołań zakończonych powodzeniem i niepowodzeń, współczynnika powodzenia i czasu trwania.
customEvents Zdarzenia śledzone przez środowisko uruchomieniowe, na przykład: żądania HTTP, które wyzwalają funkcję.
performanceCounters Informacje o wydajności serwerów, na których działają funkcje.

Pozostałe tabele są przeznaczone do testów dostępności oraz telemetrii klienta i przeglądarki. Możesz zaimplementować niestandardowe dane telemetryczne, aby dodać do nich dane.

W każdej tabeli niektóre dane specyficzne dla funkcji są w customDimensions polu. Na przykład następujące zapytanie pobiera wszystkie ślady, które mają poziom Errordziennika .

traces 
| where customDimensions.LogLevel == "Error"

Środowisko uruchomieniowe udostępnia customDimensions.LogLevel pola i customDimensions.Category . Możesz podać dodatkowe pola w dziennikach zapisywanych w kodzie funkcji. Aby zapoznać się z przykładem w języku C#, zobacz Rejestrowanie strukturalne w przewodniku dewelopera biblioteki klas platformy .NET.

Wywołania funkcji zapytań

Każde wywołanie funkcji ma przypisany unikatowy identyfikator. InvocationId element jest uwzględniony w wymiarze niestandardowym i może służyć do korelowania wszystkich dzienników z określonego wykonywania funkcji.

traces
| project customDimensions["InvocationId"], message

Korelacja telemetrii

Dzienniki z różnych funkcji można skorelować przy użyciu polecenia operation_Id. Użyj następującego zapytania, aby zwrócić wszystkie dzienniki dla określonej operacji logicznej.

traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp

Procent próbkowania

Konfiguracja próbkowania może służyć do zmniejszenia ilości danych telemetrycznych. Użyj następującego zapytania, aby określić, czy próbkowanie działa, czy nie. Jeśli zobaczysz, że wartość RetainedPercentage dla dowolnego typu jest mniejsza niż 100, oznacza to, że ten typ danych telemetrycznych jest próbkowany.

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

Dzienniki kontrolera skalowania zapytań

Ta funkcja jest dostępna w wersji zapoznawczej.

Po włączeniu rejestrowania kontrolera skalowania i integracji usługi Application Insights możesz użyć wyszukiwania dzienników usługi Application Insights, aby wykonać zapytanie o emitowane dzienniki kontrolera skalowania. Dzienniki kontrolera skalowania są zapisywane w traces kolekcji w kategorii ScaleControllerLogs .

Następujące zapytanie może służyć do wyszukiwania wszystkich dzienników kontrolera skalowania dla bieżącej aplikacji funkcji w określonym przedziale czasu:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

Następujące zapytanie rozszerza poprzednie zapytanie, aby pokazać, jak uzyskać tylko dzienniki wskazujące zmianę skali:

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

Wykonywanie zapytań w dziennikach wdrażania kodu Flex Consumption

Ważne

Plan Flex Consumption jest obecnie dostępny w wersji zapoznawczej.

Następujące zapytanie może służyć do wyszukiwania wszystkich dzienników wdrażania kodu dla bieżącej aplikacji funkcji w określonym przedziale czasu:

traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName

Metryki specyficzne dla planu zużycia

W przypadku uruchamiania w planie Zużycie koszt wykonywania pojedynczej funkcji jest mierzony w GB-sekund. Koszt wykonania jest obliczany przez połączenie użycia pamięci z czasem wykonywania. Aby dowiedzieć się więcej, zobacz Szacowanie kosztów planu zużycia.

Następujące zapytania telemetryczne są specyficzne dla metryk, które wpływają na koszt działania funkcji w planie Zużycie.

Określanie użycia pamięci

W obszarze Monitorowanie wybierz pozycję Dzienniki (analiza), a następnie skopiuj następujące zapytanie telemetryczne i wklej je w oknie zapytania, a następnie wybierz pozycję Uruchom. To zapytanie zwraca łączne użycie pamięci w każdym próbkowanym czasie.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Wyniki wyglądają jak w poniższym przykładzie:

znacznik czasu [UTC] name wartość
12.09.2019, 1:05:14.947 Bajty prywatne 209,932,288
12.09.2019, 1:06:14.994 Bajty prywatne 212,189,184
12.09.2019, 1:06:30.010 Bajty prywatne 231,714,816
12.09.2019, 1:07:15.040 Bajty prywatne 210,591,744
12.09.2019, 1:12:16.285 Bajty prywatne 216,285,184
12.09.2019, 1:12:31.376 AM Bajty prywatne 235,806,720

Określanie czasu trwania

Usługa Azure Monitor śledzi metryki na poziomie zasobu, który dla usługi Functions jest aplikacją funkcji. Integracja usługi Application Insights emituje metryki dla poszczególnych funkcji. Oto przykładowe zapytanie analityczne umożliwiające uzyskanie średniego czasu trwania funkcji:

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

Następne kroki

Dowiedz się więcej o monitorowaniu usługi Azure Functions: