Monitorowanie wykonań w Azure Functions

Azure Functions oferuje wbudowaną integrację z usługą aplikacja systemu Azure Insights w celu monitorowania wykonań funkcji. Ten artykuł zawiera omówienie możliwości monitorowania oferowanych przez platformę Azure na potrzeby monitorowania Azure Functions.

Usługa Application Insights zbiera dane dzienników, wydajności i błędów. Dzięki automatycznemu wykrywaniu anomalii wydajności i użyciu zaawansowanych narzędzi analitycznych można łatwiej diagnozować problemy i lepiej zrozumieć sposób korzystania z funkcji. Te narzędzia są przeznaczone do ciągłego zwiększania wydajności i użyteczności funkcji. Możesz nawet użyć usługi Application Insights podczas tworzenia lokalnego projektu aplikacji funkcji. Aby uzyskać więcej informacji, zobacz Co to jest usługa Application Insights?.

Ponieważ instrumentacja usługi Application Insights jest wbudowana w Azure Functions, potrzebujesz prawidłowego klucza instrumentacji, aby połączyć aplikację funkcji z zasobem usługi Application Insights. Klucz instrumentacji jest dodawany do ustawień aplikacji podczas tworzenia zasobu aplikacji funkcji na platformie Azure. Jeśli aplikacja funkcji nie ma jeszcze tego klucza, możesz ustawić go ręcznie.

Aplikację funkcji można również monitorować przy użyciu usługi Azure Monitor. Aby dowiedzieć się więcej, zobacz Monitorowanie Azure Functions za pomocą usługi Azure Monitor.

Cennik i limity usługi Application Insights

Możesz wypróbować integrację usługi Application Insights z usługą Azure Functions bezpłatnie z dziennym limitem ilości danych przetwarzanych bezpłatnie.

Jeśli włączysz usługę Application Insights podczas programowania, możesz osiągnąć ten limit podczas testowania. Platforma Azure udostępnia portal i powiadomienia e-mail, gdy zbliżasz się do dziennego limitu. Jeśli przegapisz te alerty i osiągniesz limit, nowe dzienniki nie będą wyświetlane w zapytaniach usługi Application Insights. Pamiętaj o limicie, aby uniknąć niepotrzebnego czasu rozwiązywania problemów. Aby uzyskać więcej informacji, zobacz Rozliczenia usługi Application Insights.

Ważne

Usługa Application Insights ma funkcję próbkowania , która może chronić cię przed tworzeniem zbyt dużej ilości danych telemetrycznych podczas zakończonych wykonań w okresach szczytowego obciążenia. Próbkowanie jest domyślnie włączone. Jeśli wydaje się, że brakuje danych, może być konieczne dostosowanie ustawień próbkowania w celu dopasowania ich do konkretnego scenariusza monitorowania. Aby dowiedzieć się więcej, zobacz Konfigurowanie próbkowania.

Pełna lista funkcji usługi Application Insights dostępnych dla aplikacji funkcji jest szczegółowa w usłudze Application Insights dla Azure Functions obsługiwanych funkcji.

Integracja z usługą Application Insights

Zazwyczaj wystąpienie usługi Application Insights jest tworzone podczas tworzenia aplikacji funkcji. W takim przypadku klucz instrumentacji wymagany do integracji jest już ustawiony jako ustawienie aplikacji o nazwie APPINSIGHTS_INSTRUMENTATIONKEY. Jeśli z jakiegoś powodu aplikacja funkcji nie ma ustawionego klucza instrumentacji, musisz włączyć integrację usługi Application Insights.

Ważne

Suwerenne chmury, takie jak Azure Government, wymagają użycia parametrów połączenia usługi Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING) zamiast klucza instrumentacji. Aby dowiedzieć się więcej, zobacz dokumentację APPLICATIONINSIGHTS_CONNECTION_STRING.

W poniższej tabeli przedstawiono obsługiwane funkcje usługi Application Insights dostępne do monitorowania aplikacji funkcji:

wersja środowiska uruchomieniowego Azure Functions 1.x 2.x+
Automatyczne zbieranie
•Żądania
•Wyjątki
• Liczniki wydajności
•Zależności
   — HTTP
   — Service Bus
   — Event Hubs
   — SQL*
Obsługiwane funkcje
• QuickPulse/LiveMetrics Tak Tak
   — Bezpieczny kanał sterowania Tak
•Pobierania próbek Tak Tak
•Bicie serca Tak
korelacja
• Service Bus Tak
• Event Hubs Tak
Konfigurowalne
W pełni konfigurowalny Tak

* Aby włączyć kolekcję tekstu ciągu zapytania SQL, zobacz Włączanie zbierania zapytań SQL.

Zbieranie danych telemetrycznych

Po włączeniu integracji usługi Application Insights dane telemetryczne są wysyłane do połączonego wystąpienia usługi Application Insights. Te dane obejmują dzienniki generowane przez hosta usługi Functions, ślady zapisane na podstawie kodu funkcji i dane wydajności.

Uwaga

Oprócz danych z funkcji i hosta usługi Functions można również zbierać dane z kontrolera skalowania usługi Functions.

Poziomy i kategorie dzienników

Podczas pisania śladów z kodu aplikacji należy przypisać poziom dziennika do śladów. Poziomy dzienników umożliwiają ograniczenie ilości danych zebranych ze śledzenia.

Poziom dziennika jest przypisywany do każdego dziennika. Wartość jest liczbą całkowitą, która wskazuje względną ważność:

LogLevel Kod Opis
Ślad 0 Dzienniki zawierające najbardziej szczegółowe komunikaty. Te komunikaty mogą zawierać poufne dane aplikacji. Te komunikaty są domyślnie wyłączone i nigdy nie powinny być włączone w środowisku produkcyjnym.
Debugowanie 1 Dzienniki, które są używane do interaktywnego badania podczas programowania. Te dzienniki powinny zawierać przede wszystkim informacje przydatne do debugowania i nie mają długoterminowej wartości.
Informacje 2 Dzienniki śledzące ogólny przepływ aplikacji. Te dzienniki powinny mieć wartość długoterminową.
Ostrzeżenie 3 Dzienniki, które wyróżniają nietypowe lub nieoczekiwane zdarzenie w przepływie aplikacji, ale nie powodują zatrzymania wykonywania aplikacji.
Błąd 4 Dzienniki, które wskazują, kiedy bieżący przepływ wykonywania jest zatrzymany z powodu awarii. Te błędy powinny wskazywać błąd w bieżącym działaniu, a nie awarii całej aplikacji.
Krytyczne 5 Dzienniki opisujące nieodwracalną awarię aplikacji lub systemu albo katastrofalne awarie, które wymagają natychmiastowej uwagi.
Brak 6 Wyłącza rejestrowanie dla określonej kategorii.

Konfiguracja pliku host.json określa, ile rejestrowania aplikacja funkcji wysyła do usługi Application Insights.

Aby dowiedzieć się więcej na temat poziomów dzienników, zobacz Konfigurowanie poziomów dziennika.

Przypisując zarejestrowane elementy do kategorii, masz większą kontrolę nad telemetrią wygenerowaną z określonych źródeł w aplikacji funkcji. Kategorie ułatwiają uruchamianie analiz za pośrednictwem zebranych danych. Ślady zapisane z kodu funkcji są przypisywane do poszczególnych kategorii na podstawie nazwy funkcji. Aby dowiedzieć się więcej o kategoriach, zobacz Konfigurowanie kategorii.

Niestandardowe dane telemetryczne

W językach C#, JavaScript i Python można użyć zestawu SDK usługi Application Insights do pisania niestandardowych danych telemetrycznych.

Zależności

Począwszy od wersji 2.x usługi Functions usługa Application Insights automatycznie zbiera dane na podstawie zależności dla powiązań korzystających z niektórych zestawów SDK klienta. Śledzenie rozproszone i śledzenie zależności usługi Application Insights nie są obecnie obsługiwane w przypadku aplikacji języka C# działających w izolowanym procesie roboczym. Usługa Application Insights zbiera dane z następujących zależności:

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Usługi Azure Storage (Blob, Queue i Table)

Żądania HTTP i wywołania bazy danych używane SqlClient również są przechwytywane. Aby uzyskać pełną listę zależności obsługiwanych przez usługę Application Insights, zobacz automatycznie śledzone zależności.

Usługa Application Insights generuje mapę aplikacji zebranych danych zależności. Poniżej przedstawiono przykład mapy aplikacji funkcji wyzwalacza HTTP z powiązaniem wyjściowym usługi Queue Storage.

Mapa aplikacji z zależnością

Zależności są zapisywane na Information poziomie. W przypadku filtrowania o Warning wartości lub powyżej nie będą widoczne dane zależności. Ponadto automatyczne zbieranie zależności odbywa się w zakresie nieuchwytnym. Aby przechwycić dane zależności, upewnij się, że poziom jest ustawiony na co najmniej Information poza zakresem użytkownika (Function.<YOUR_FUNCTION_NAME>.User) na hoście.

Oprócz automatycznego zbierania danych zależności można również użyć jednego z zestawów SDK usługi Application Insights specyficznych dla języka do zapisywania niestandardowych informacji o zależnościach w dziennikach. Aby zapoznać się z przykładem pisania niestandardowych zależności, zobacz jeden z następujących przykładów specyficznych dla języka:

Liczniki wydajności

Automatyczne zbieranie liczników wydajności nie jest obsługiwane w przypadku uruchamiania w systemie Linux.

Zapisywanie w dziennikach

Sposób zapisywania w dziennikach i używanych interfejsów API zależy od języka projektu aplikacji funkcji.
Aby dowiedzieć się więcej na temat pisania dzienników z funkcji, zobacz przewodnik dla deweloperów dla danego języka.

Analizowanie danych

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. Aby dowiedzieć się więcej, w tym podstawowe przykłady wyświetlania zebranych danych i wykonywania względem ich zapytań, zobacz Analizowanie Azure Functions telemetrii w usłudze Application Insights.

Dzienniki przesyłania strumieniowego

Podczas tworzenia aplikacji często chcesz zobaczyć, co jest zapisywane w dziennikach niemal w czasie rzeczywistym podczas uruchamiania na platformie Azure.

Istnieją dwa sposoby wyświetlania strumienia danych dziennika generowanych przez wykonania funkcji.

  • Wbudowane przesyłanie strumieniowe dzienników: platforma App Service umożliwia wyświetlanie strumienia plików dziennika aplikacji. Ten strumień jest odpowiednikiem danych wyjściowych widocznych podczas debugowania funkcji podczas programowania lokalnego i korzystania z karty Test w portalu. Zostaną wyświetlone wszystkie informacje oparte na dzienniku. Aby uzyskać więcej informacji, zobacz Stream logs (Dzienniki usługi Stream). Ta metoda przesyłania strumieniowego obsługuje tylko jedno wystąpienie i nie może być używana z aplikacją działającą w systemie Linux w planie Zużycie.

  • Transmisja strumieniowa metryk na żywo: gdy aplikacja funkcji jest połączona z usługą Application Insights, możesz wyświetlać dane dziennika i inne metryki niemal w czasie rzeczywistym w Azure Portal przy użyciu strumienia metryk na żywo. Użyj tej metody podczas monitorowania funkcji działających w wielu wystąpieniach lub w systemie Linux w planie zużycie. Ta metoda używa przykładowych danych.

Strumienie dzienników można wyświetlać zarówno w portalu, jak i w większości lokalnych środowisk programistycznych. Aby dowiedzieć się, jak włączyć strumienie dzienników, zobacz Włączanie dzienników wykonywania przesyłania strumieniowego w Azure Functions.

Dzienniki diagnostyczne

Usługa Application Insights umożliwia eksportowanie danych telemetrycznych do długoterminowego magazynu lub innych usług analizy.

Ponieważ usługa Functions integruje się również z usługą Azure Monitor, można również użyć ustawień diagnostycznych do wysyłania danych telemetrycznych do różnych miejsc docelowych, w tym dzienników usługi Azure Monitor. Aby dowiedzieć się więcej, zobacz Monitorowanie Azure Functions za pomocą dzienników usługi Azure Monitor.

Skalowanie dzienników kontrolera

Kontroler skalowania Azure Functions monitoruje wystąpienia hosta Azure Functions, na którym działa aplikacja. Ten kontroler podejmuje decyzje dotyczące tego, kiedy należy dodawać lub usuwać wystąpienia na podstawie bieżącej wydajności. Kontroler skalowania może emitować dzienniki do usługi Application Insights, aby lepiej zrozumieć decyzje podejmowane przez kontroler skalowania dla aplikacji funkcji. Wygenerowane dzienniki można również przechowywać w magazynie obiektów blob na potrzeby analizy przez inną usługę.

Aby włączyć tę funkcję, należy dodać ustawienie aplikacji o nazwie SCALE_CONTROLLER_LOGGING_ENABLED do ustawień aplikacji funkcji. Aby dowiedzieć się, jak to zrobić, zobacz Konfigurowanie dzienników kontrolera skalowania.

Metryki usługi Azure Monitor

Oprócz danych telemetrycznych opartych na dzienniku zebranych przez usługę Application Insights można również uzyskać dane dotyczące sposobu działania aplikacji funkcji z metryk usługi Azure Monitor. Aby dowiedzieć się więcej, zobacz Monitorowanie za pomocą usługi Azure Monitor.

Zgłaszanie problemów

Aby zgłosić problem z integracją usługi Application Insights w usłudze Functions lub zgłosić sugestię lub żądanie, utwórz problem w usłudze GitHub.

Następne kroki

Więcej informacji można znaleźć w następujących zasobach: