Analizowanie Azure Functions telemetrii w usłudze Application Insights

Azure Functions integruje się z usługą Application Insights, aby lepiej umożliwić monitorowanie aplikacji funkcji. Usługa Application Insights zbiera dane telemetryczne wygenerowane przez aplikację funkcji, w tym informacje zapisywane w dziennikach przez aplikację. Integracja z usługą Application Insights jest zwykle włączana 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 zbierane z aplikacji funkcji są przechowywane w usłudze Application Insights. W Azure Portal usługa Application Insights udostępnia obszerny zestaw wizualizacji danych telemetrycznych. Możesz przechodzić do szczegółów dzienników błędów oraz wykonywać zapytania o zdarzenia i metryki. W tym artykule przedstawiono podstawowe przykłady wyświetlania zebranych danych i wykonywania dotyczących 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 danych, przechowywanie i magazynowanie w usłudze Application Insights.

Wyświetlanie danych telemetrycznych na karcie Monitorowanie

Po włączeniu integracji z usługą 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ż do momentu wyświetlenia listy wywołań funkcji.

    Lista wywołań

    Uwaga

    Wyświetlenie listy może potrwać do pięciu minut, gdy dane klienta telemetrii są wsadowe do transmisji na serwer. Opóźnienie nie ma zastosowania do 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 tej 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 używasz usługi Azure Log Analytics w ramach subskrypcji po raz pierwszy, 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 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.

Otwieranie usługi 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
Niepowodzenia Twórz wykresy i alerty 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 zaimplementujesz 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 scenariuszach 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świetlanie danych metryk podczas ich tworzenia 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ń do wyodrębniania, manipulowania i wizualizowania danych.

Wybierz pozycję Dzienniki do eksplorowania lub wykonywania zapytań dotyczących 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:

Tabela Opis
Ślady Dzienniki utworzone przez środowisko uruchomieniowe, kontroler skalowania i ślady z kodu funkcji.
żądania Jedno żądanie dla każdego wywołania funkcji.
Wyjątki Wszelkie wyjątki zgłoszone przez środowisko uruchomieniowe.
customMetrics Liczba wywołań zakończonych powodzeniem i niepowodzeniem, współczynnik powodzenia i czas 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łużą do testów dostępności oraz telemetrii klienta i przeglądarki. Możesz zaimplementować niestandardową telemetrię, 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, które piszesz w kodzie funkcji. Przykład w języku C#można znaleźć w temacie Structured logging (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 w wersji zapoznawczej.

Po włączeniu rejestrowania kontrolera skalowania i integracji z usługą Application Insights można użyć funkcji wyszukiwania dzienników usługi Application Insights do wykonywania zapytań dotyczących emitowanych dzienników 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

Metryki specyficzne dla planu zużycia

W przypadku uruchamiania w planie Zużyciekoszt 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 mają wpływ 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ą podobnie do następującego przykładu:

sygnatura czasowa [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 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 Azure Functions: