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 .
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.
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.
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.
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.
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.
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:
Przejdź do aplikacji funkcji w portalu.
Wybierz pozycję Application Insights w obszarze Ustawienia na lewej stronie.
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.
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.
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ń.
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 Error
dziennika .
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
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: