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.

  1. 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.

    Invocations list

    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.

    Invocation details

  3. 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.

  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.

    Application Insights Analytics invocation list

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:

  1. Przejdź do aplikacji funkcji w portalu.

  2. Wybierz pozycję Szczegółowe informacje aplikacji w obszarze Ustawienia na lewej stronie.

  3. 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.

Open Application Insights from the function app Overview page

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.

Application Insights Overview tab

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ń.

Analytics example

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.
Żą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 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

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: