Monitorowanie wykonań w Azure Functions
Usługa 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 udostępnianych przez platformę Azure na potrzeby monitorowania usługi Azure Functions.
Usługa Application Insights zbiera dane dzienników, wydajności i błędów. Automatycznie wykrywając anomalie wydajności i korzystając z 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. Usługi Application Insights można nawet używać 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 usługę 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 ją ustawić ręcznie.
Możesz również monitorować samą aplikację funkcji przy użyciu usługi Azure Monitor. Aby dowiedzieć się więcej, zobacz Monitorowanie usługi 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 limitem dziennym 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 generowaniem zbyt dużej ilości danych telemetrycznych na ukończonych wykonaniach 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 artykule Application Insights for Azure Functions supported features (Funkcje obsługiwane przez usługę Application Insights dla usługi Azure Functions).
Integracja z usługą Application Insights
Zazwyczaj podczas tworzenia aplikacji funkcji tworzysz wystąpienie usługi Application Insights. W tym 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 zestawu kluczy instrumentacji, musisz włączyć integrację usługi Application Insights.
Ważne
Suwerenne chmury, takie jak Azure Government, wymagają użycia parametry 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 usługi Azure Functions | 1.x | 2.x+ |
---|---|---|
Automatyczna kolekcja | ||
•Żą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 | |
•Pobieranie 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ą wskazującą względną ważność:
PoziomRejestrowania | Kod | opis |
---|---|---|
Śledzenie | 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 używane do interaktywnego badania podczas opracowywania. Te dzienniki powinny zawierać przede wszystkim informacje przydatne do debugowania i nie mają długoterminowej wartości. |
Informacja | 2 | Dzienniki śledzące ogólny przepływ aplikacji. Te dzienniki powinny mieć wartość długoterminową. |
Ostrzeżenie | 3 | Dzienniki, które podkreślają nietypowe lub nieoczekiwane zdarzenie w przepływie aplikacji, ale nie powodują zatrzymania wykonywania aplikacji. |
Błąd | 100 | Dzienniki, które podkreślają, 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 na zebranych danych. Ślady zapisane w kodzie 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 dotyczące 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 na następujących zależnościach:
- Azure Cosmos DB
- Azure Event Hubs
- Azure Service Bus
- Usługi Azure Storage (obiekty blob, kolejki i tabele)
Żą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.
Zależności są zapisywane na Information
poziomie. W przypadku filtrowania na Warning
poziomie lub powyżej nie będą widoczne dane zależności. Ponadto automatyczne zbieranie zależności odbywa się w zakresie innych niż użytkownik. 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. Przykładowy sposób pisania niestandardowych zależności można znaleźć w jednym z następujących przykładów specyficznych dla języka:
- Log custom telemetry in C# functions (Rejestrowanie telemetrii niestandardowej w funkcjach języka C#)
- Log custom telemetry in JavaScript functions (Rejestrowanie telemetrii niestandardowej w funkcjach języka JavaScript)
- Rejestrowanie niestandardowych danych telemetrycznych w funkcjach języka Python
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 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. Aby dowiedzieć się więcej, w tym podstawowe przykłady wyświetlania zebranych danych i wykonywania zapytań o nie, zobacz Analizowanie danych telemetrycznych usługi Azure Functions 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 wykonywanie 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.
Strumień 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 witrynie 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 usłudze Azure Functions.
Dzienniki diagnostyczne
Usługa Application Insights umożliwia eksportowanie danych telemetrycznych do długoterminowego magazynu lub innych usług analitycznych.
Ponieważ usługa Functions integruje się również z usługą Azure Monitor, możesz 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 usługi Azure Functions za pomocą dzienników usługi Azure Monitor.
Dzienniki kontrolera skalowania
Kontroler skalowania usługi Azure Functions monitoruje wystąpienia hosta usługi Azure Functions, na którym działa aplikacja. Ten kontroler podejmuje decyzje dotyczące tego, kiedy dodać lub usunąć 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 usłudze Blob Storage 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 dziennikach 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
Aby uzyskać więcej informacji, zobacz następujące zasoby: