Analizowanie danych telemetrycznych usługi Azure Functions w usłudze Application Szczegółowe informacje
Usługa Azure Functions integruje się z usługą Application Insights, aby lepiej umożliwić monitorowanie aplikacji funkcji. Aplikacja Szczegółowe informacje zbiera dane telemetryczne generowane przez aplikację funkcji, w tym informacje zapisywane w dziennikach przez aplikację. Integracja Szczegółowe informacje aplikacji jest zwykle włączona podczas tworzenia aplikacji funkcji. Jeśli aplikacja funkcji nie ma zestawu kluczy instrumentacji, musisz najpierw włączyć integrację usługi Application Szczegółowe informacje.
Domyślnie dane zebrane z aplikacji funkcji są przechowywane w Szczegółowe informacje Aplikacji. W witrynie Azure Portal aplikacja Szczegółowe informacje 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 Szczegółowe informacje, zobacz Co to jest aplikacja Szczegółowe informacje?.
Aby móc wyświetlać dane aplikacji Szczegółowe informacje z aplikacji funkcji, musisz mieć co najmniej uprawnienia roli Współautor w aplikacji funkcji. Musisz również mieć uprawnienie Czytelnik monitorowania w wystąpieniu aplikacji Szczegółowe informacje. Te uprawnienia są domyślnie dostępne dla każdej tworzonej aplikacji funkcji i wystąpienia aplikacji Szczegółowe informacje.
Aby dowiedzieć się więcej na temat przechowywania danych i potencjalnych kosztów magazynowania, zobacz Zbieranie, przechowywanie i przechowywanie danych w usłudze Application Szczegółowe informacje.
Wyświetlanie danych telemetrycznych na karcie Monitor
Po włączeniu integracji Szczegółowe informacje aplikacji 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 Szczegółowe informacje aplikacji. 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 Szczegółowe informacje aplikacji, 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 Szczegółowe informacje aplikacji
Aby otworzyć Szczegółowe informacje aplikacji z poziomu aplikacji funkcji w witrynie Azure Portal:
Przejdź do aplikacji funkcji w portalu.
Wybierz pozycję Szczegółowe informacje aplikacji w obszarze Ustawienia na lewej stronie.
Jeśli po raz pierwszy używasz aplikacji Szczegółowe informacje z subskrypcją, zostanie wyświetlony monit o jej włączenie. W tym celu wybierz pozycję Włącz Szczegółowe informacje aplikacji, a następnie wybierz pozycję Zastosuj na następnej stronie.
Aby uzyskać informacje o sposobie korzystania z usługi Application Szczegółowe informacje, zobacz dokumentację usługi Application Szczegółowe informacje. W tej sekcji przedstawiono kilka przykładów wyświetlania danych w usłudze Application Szczegółowe informacje. Jeśli znasz już Szczegółowe informacje aplikacji, możesz przejść bezpośrednio do sekcji dotyczących konfigurowania i dostosowywania danych telemetrycznych.
Następujące obszary Szczegółowe informacje aplikacji 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
Usługa Application Szczegółowe informacje Analytics 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 Szczegółowe informacje aplikacji można użyć funkcji wyszukiwania dzienników usługi Application Szczegółowe informacje, aby wykonać zapytanie dotyczące 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
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 aplikacji Szczegółowe informacje emituje metryki na podstawie 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: