Jak skonfigurować monitorowanie dla Azure Functions

Azure Functions integruje się z Szczegółowe informacje aplikacji, aby lepiej umożliwić monitorowanie aplikacji funkcji. Usługa Application Szczegółowe informacje, funkcja usługi Azure Monitor, to rozszerzalna usługa zarządzania wydajnością aplikacji (APM), która zbiera dane 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 nie ma ustawionego klucza instrumentacji, musisz najpierw włączyć integrację usługi Application Szczegółowe informacje.

Możesz użyć Szczegółowe informacje aplikacji bez żadnej konfiguracji niestandardowej. Domyślna konfiguracja może spowodować duże ilości danych. Jeśli używasz subskrypcji platformy Azure Visual Studio, możesz osiągnąć limit danych dla usługi Application Szczegółowe informacje. Aby uzyskać informacje o kosztach Szczegółowe informacje aplikacji, zobacz Rozliczenia aplikacji Szczegółowe informacje. Aby uzyskać więcej informacji, zobacz Rozwiązania z dużą ilością danych telemetrycznych.

W dalszej części tego artykułu dowiesz się, jak skonfigurować i dostosować dane wysyłane przez funkcje do usługi Application Szczegółowe informacje. W przypadku aplikacji funkcji rejestrowanie jest konfigurowane w pliku host.json .

Uwaga

Możesz użyć specjalnie skonfigurowanych ustawień aplikacji do reprezentowania określonych ustawień w pliku host.json dla określonego środowiska. Dzięki temu można skutecznie zmienić ustawienia pliku host.json bez konieczności ponownego publikowania pliku host.json w projekcie. Aby uzyskać więcej informacji, zobacz Zastępowanie wartości host.json.

Konfigurowanie kategorii

Rejestrator Azure Functions zawiera kategorię dla każdego dziennika. Kategoria wskazuje, która część kodu środowiska uruchomieniowego lub kod funkcji zapisał dziennik. Kategorie różnią się w zależności od wersji 1.x i nowszych. Na poniższym wykresie opisano główne kategorie dzienników tworzonych przez środowisko uruchomieniowe:

Kategoria Tabela Opis
Function.<YOUR_FUNCTION_NAME> Zależności Dane zależności są automatycznie zbierane dla niektórych usług. W przypadku pomyślnych przebiegów te dzienniki są na Information poziomie. Aby uzyskać więcej informacji, zobacz Zależności. Wyjątki są rejestrowane na Error poziomie. Środowisko uruchomieniowe tworzy Warning również dzienniki na poziomie, takie jak gdy komunikaty w kolejce są wysyłane do kolejki trucizny.
Function.<YOUR_FUNCTION_NAME> customMetrics
customEvents
Zestawy SDK języka C# i JavaScript umożliwiają zbieranie metryk niestandardowych i rejestrowanie zdarzeń niestandardowych. Aby uzyskać więcej informacji, zobacz Niestandardowe dane telemetryczne.
Function.<YOUR_FUNCTION_NAME> Ślady Obejmuje uruchomione i ukończone dzienniki funkcji dla określonych przebiegów funkcji. W przypadku pomyślnych przebiegów te dzienniki są na Information poziomie. Wyjątki są rejestrowane na Error poziomie. Środowisko uruchomieniowe tworzy Warning również dzienniki na poziomie, takie jak gdy komunikaty w kolejce są wysyłane do kolejki trucizny.
Function.<YOUR_FUNCTION_NAME>.User Ślady Dzienniki generowane przez użytkownika, które mogą być dowolnym poziomem dziennika. Aby uzyskać więcej informacji na temat zapisywania dzienników z funkcji, zobacz Zapisywanie w dziennikach.
Host.Aggregator customMetrics Te dzienniki generowane przez środowisko uruchomieniowe udostępniają liczby i średnie wywołań funkcji w konfigurowalnym okresie czasu. Domyślny okres to 30 sekund lub 1000 wyników, w zależności od tego, co nastąpi wcześniej. Przykłady to liczba przebiegów, współczynnik powodzenia i czas trwania. Wszystkie te dzienniki są zapisywane na Information poziomie. Jeśli filtrujesz co najmniej Warning wyższą wartość, żadne z tych danych nie będą widoczne.
Host.Results żądania Te dzienniki generowane przez środowisko uruchomieniowe wskazują powodzenie lub niepowodzenie funkcji. Wszystkie te dzienniki są zapisywane na Information poziomie. Jeśli filtrujesz co najmniej Warning wyższą wartość, żadne z tych danych nie będą widoczne.
Microsoft Ślady W pełni kwalifikowana kategoria dziennika, która odzwierciedla składnik środowiska uruchomieniowego platformy .NET wywoływany przez hosta.
Worker Ślady Dzienniki generowane przez proces roboczy języka dla języków non-.NET. Dzienniki procesów roboczych języka mogą być również rejestrowane w Microsoft.* kategorii, takiej jak Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. Te dzienniki są zapisywane na Information poziomie.

Uwaga

W przypadku funkcji biblioteki klas platformy .NET te kategorie zakładają, że używasz elementu ILogger , a nie ILogger<T>. Aby uzyskać więcej informacji, zobacz dokumentację usługi Functions ILogger.

Kolumna Tabela wskazuje, która tabela w aplikacji Szczegółowe informacje jest zapisywana w dzienniku.

Konfigurowanie poziomów dziennika

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 używane do interaktywnego badania podczas opracowywania. 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ć długoterminową wartość.
Ostrzeżenie 3 Dzienniki, które podkreślają nietypowe lub nieoczekiwane zdarzenie w przepływie aplikacji, ale nie powodują zatrzymania wykonywania aplikacji.
Błąd 4 Dzienniki, które podkreślają, kiedy bieżący przepływ wykonywania został 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 lub 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 aplikacji Application Szczegółowe informacje.

Dla każdej kategorii należy wskazać minimalny poziom dziennika do wysłania. Ustawienia host.json różnią się w zależności od wersji środowiska uruchomieniowego usługi Functions.

W poniższym przykładzie zdefiniowano rejestrowanie na podstawie następujących reguł:

  • W przypadku dzienników programu Host.Results lub Functiondzienniki rejestrują tylko zdarzenia na Error wyższym poziomie lub wyższym.
  • W przypadku dzienników programu Host.Aggregatornależy rejestrować wszystkie wygenerowane metryki (Trace).
  • W przypadku wszystkich innych dzienników, w tym dzienników użytkowników, dzienniki tylko Information na poziomie i wyższych zdarzeniach.
{
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host.Results": "Error",
      "Function": "Error",
      "Host.Aggregator": "Trace"
    }
  }
}

Jeśli plik host.json zawiera wiele dzienników rozpoczynających się od tego samego ciągu, tym bardziej zdefiniowane dzienniki są zgodne jako pierwsze. Rozważmy następujący przykład, który rejestruje wszystkie elementy w środowisku uruchomieniowym, z wyjątkiem Host.Aggregatorelementu , na Error poziomie:

{
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "default": "Information",
      "Host": "Error",
      "Function": "Error",
      "Host.Aggregator": "Information"
    }
  }
}

Możesz użyć ustawienia poziomu dziennika, None aby zapobiec zapisywaniu dzienników dla kategorii.

Przestroga

Azure Functions integruje się z usługą Application Szczegółowe informacje, przechowując zdarzenia telemetryczne w tabelach usługi Application Szczegółowe informacje. Ustawienie poziomu dziennika kategorii na dowolną wartość inną niż Information uniemożliwia przepływ danych telemetrycznych do tych tabel. W wyniku nie będzie można wyświetlić powiązanych danych na karcie Application Szczegółowe informacje lub Function Monitor.

Z powyższych przykładów:

  • Host.Results Jeśli kategoria jest ustawiona na Error poziom dziennika, będzie zbierać tylko zdarzenia telemetryczne wykonywania hosta w requests tabeli dla nieudanych wykonań funkcji, co uniemożliwia wyświetlanie szczegółów wykonywania hosta wykonań wykonań zarówno na karcie Application Szczegółowe informacje i Function Monitor.
  • Function Jeśli kategoria jest ustawiona na Error poziom dziennika, zatrzyma zbieranie danych telemetrycznych funkcji związanych z dependencieselementami , customMetricsi customEvents dla wszystkich funkcji, co uniemożliwia wyświetlanie dowolnego z tych danych w usłudze Application Szczegółowe informacje. Będzie on zbierać traces tylko zarejestrowane z Error poziomem.

W obu przypadkach będziesz nadal zbierać błędy i dane wyjątków na karcie Application Szczegółowe informacje i Function Monitor. Aby uzyskać więcej informacji, zobacz Rozwiązania z dużą ilością danych telemetrycznych.

Konfigurowanie agregatora

Jak wspomniano w poprzedniej sekcji, środowisko uruchomieniowe agreguje dane dotyczące wykonywania funkcji w danym okresie. Domyślny okres to 30 sekund lub 1000 przebiegów, w zależności od tego, co nastąpi wcześniej. To ustawienie można skonfigurować w pliku host.json . Oto przykład:

{
    "aggregator": {
      "batchSize": 1000,
      "flushTimeout": "00:00:30"
    }
}

Konfigurowanie próbkowania

Aplikacja Szczegółowe informacje ma funkcję próbkowania, która może chronić przed tworzeniem zbyt dużej ilości danych telemetrycznych na ukończonych wykonaniach w godzinach szczytowego obciążenia. Gdy szybkość wykonywania przychodzącego przekroczy określony próg, aplikacja Szczegółowe informacje zaczyna losowo ignorować niektóre z przychodzących wykonań. Ustawieniem domyślnym maksymalnej liczby wykonań na sekundę jest 20 (pięć w wersji 1.x). Próbkowanie można skonfigurować w pliku host.json. Oto przykład:

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

Niektóre typy telemetrii można wykluczyć z próbkowania. W tym przykładzie dane typu Request i Exception są wykluczone z próbkowania. Zapewni to, że wszystkie wykonania funkcji (żądania) i wyjątki są rejestrowane, podczas gdy inne typy telemetrii pozostają poddane próbkowaniu.

Aby uzyskać więcej informacji, zobacz Próbkowanie w Szczegółowe informacje aplikacji.

Konfigurowanie dzienników kontrolera skalowania

Ta funkcja jest w wersji zapoznawczej.

Kontroler skalowania Azure Functions może emitować dzienniki do usługi Application Szczegółowe informacje lub Blob Storage, aby lepiej zrozumieć decyzje podejmowane przez kontroler skalowania dla aplikacji funkcji.

Aby włączyć tę funkcję, możesz dodać ustawienie aplikacji o nazwie do SCALE_CONTROLLER_LOGGING_ENABLED ustawień aplikacji funkcji. Następująca wartość ustawienia musi być w formacie <DESTINATION>:<VERBOSITY>:

Właściwość Opis
<DESTINATION> Miejsce docelowe, do którego są wysyłane dzienniki. Prawidłowe wartości to AppInsights i Blob.
W przypadku korzystania z programu AppInsightsupewnij się, że aplikacja Szczegółowe informacje jest włączona w aplikacji funkcji.
Po ustawieniu miejsca docelowego na Blobwartość dzienniki są tworzone w kontenerze obiektów blob o nazwie azure-functions-scale-controller w domyślnym koncie magazynu ustawionym w ustawieniu AzureWebJobsStorage aplikacji.
<VERBOSITY> Określa poziom rejestrowania. Obsługiwane wartości to None, Warningi Verbose.
W przypadku ustawienia na Verbosewartość kontroler skalowania rejestruje przyczynę każdej zmiany liczby procesów roboczych oraz informacje o wyzwalaczach, które są uwzględniane w tych decyzjach. Pełne dzienniki obejmują ostrzeżenia wyzwalacza i skróty używane przez wyzwalacze przed uruchomieniem kontrolera skalowania i po nim.

Porada

Należy pamiętać, że po pozostawieniu włączonego rejestrowania kontrolera skalowania może to mieć wpływ na potencjalne koszty monitorowania aplikacji funkcji. Rozważ włączenie rejestrowania, dopóki nie zebrano wystarczającej ilości danych, aby zrozumieć, jak działa kontroler skalowania, a następnie wyłączyć go.

Na przykład następujące polecenie interfejsu wiersza polecenia platformy Azure włącza pełne rejestrowanie z kontrolera skalowania do usługi Application Szczegółowe informacje:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose

W tym przykładzie zastąp <FUNCTION_APP_NAME> wartości i <RESOURCE_GROUP_NAME> nazwą aplikacji funkcji oraz odpowiednio nazwą grupy zasobów.

Następujące polecenie interfejsu wiersza polecenia platformy Azure wyłącza rejestrowanie przez ustawienie szczegółowości na None:

az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None

Rejestrowanie można również wyłączyć, usuwając SCALE_CONTROLLER_LOGGING_ENABLED ustawienie przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure:

az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED

Po włączeniu rejestrowania kontrolera skalowania można teraz wykonywać zapytania dotyczące dzienników kontrolera skalowania.

Enable Application Insights integration (Włączanie integracji z usługą Application Insights)

Aby aplikacja funkcji wysyłała dane do usługi Application Szczegółowe informacje, musi znać klucz instrumentacji zasobu Szczegółowe informacje aplikacji. Klucz musi znajdować się w ustawieniu aplikacji o nazwie APPINSIGHTS_INSTRUMENTATIONKEY.

Podczas tworzenia aplikacji funkcji w Azure Portal z poziomu wiersza polecenia przy użyciu narzędzi Azure Functions Core Tools lub Visual Studio Code integracja aplikacji Szczegółowe informacje jest domyślnie włączona. Zasób aplikacji Szczegółowe informacje ma taką samą nazwę jak aplikacja funkcji i jest tworzony w tym samym regionie lub w najbliższym regionie.

Nowa aplikacja funkcji w portalu

Aby przejrzeć tworzony zasób Szczegółowe informacje aplikacji, wybierz go, aby rozwinąć okno Szczegółowe informacje aplikacji. Możesz zmienić nazwę nowego zasobu lub wybrać inną lokalizację w lokalizacji geograficznej platformy Azure , w której chcesz przechowywać dane.

Screenshot of enabling Application Insights while creating a function app.

Po wybraniu pozycji Utwórz zasób aplikacji Szczegółowe informacje zostanie utworzony przy użyciu aplikacji funkcji, która ma APPINSIGHTS_INSTRUMENTATIONKEY ustawienie w ustawieniach aplikacji. Wszystko jest gotowe do zrobienia.

Dodawanie do istniejącej aplikacji funkcji

Jeśli zasób aplikacji Szczegółowe informacje nie został utworzony za pomocą aplikacji funkcji, wykonaj następujące kroki, aby utworzyć zasób. Następnie możesz dodać klucz instrumentacji z tego zasobu jako ustawienie aplikacji w aplikacji funkcji.

  1. W Azure Portal wyszukaj i wybierz aplikację funkcji, a następnie wybierz aplikację funkcji.

  2. Wybierz baner Szczegółowe informacje aplikacji nie jest skonfigurowany w górnej części okna. Jeśli nie widzisz tego baneru, aplikacja może już mieć włączoną Szczegółowe informacje aplikacji.

    Screenshot of enabling Application Insights from the portal.

  3. Rozwiń węzeł Zmień zasób i utwórz zasób Szczegółowe informacje aplikacji przy użyciu ustawień określonych w poniższej tabeli:

    Ustawienie Sugerowana wartość Opis
    Nowa nazwa zasobu Unikatowa nazwa aplikacji Najłatwiej jest użyć tej samej nazwy co aplikacja funkcji, która musi być unikatowa w ramach subskrypcji.
    Lokalizacja West Europe Jeśli to możliwe, użyj tego samego regionu co aplikacja funkcji lub regionu, który znajduje się blisko tego regionu.

    Screenshot of creating an Application Insights resource.

  4. Wybierz przycisk Zastosuj.

    Zasób aplikacji Szczegółowe informacje jest tworzony w tej samej grupie zasobów i subskrypcji co aplikacja funkcji. Po utworzeniu zasobu zamknij okno Aplikacja Szczegółowe informacje.

  5. W aplikacji funkcji wybierz pozycję Konfiguracja w obszarze Ustawienia, a następnie wybierz pozycję Ustawienia aplikacji. Jeśli zostanie wyświetlone ustawienie o nazwie APPINSIGHTS_INSTRUMENTATIONKEY, integracja aplikacji Szczegółowe informacje jest włączona dla aplikacji funkcji uruchomionej na platformie Azure. Jeśli z jakiegoś powodu to ustawienie nie istnieje, dodaj je przy użyciu klucza instrumentacji aplikacji Szczegółowe informacje jako wartości.

Uwaga

Wczesne wersje funkcji korzystały z wbudowanego monitorowania, co nie jest już zalecane. Po włączeniu integracji aplikacji Szczegółowe informacje dla takiej aplikacji funkcji należy również wyłączyć wbudowane rejestrowanie.

Wyłączanie wbudowanego rejestrowania

Po włączeniu Szczegółowe informacje aplikacji wyłącz wbudowane rejestrowanie korzystające z usługi Azure Storage. Wbudowane rejestrowanie jest przydatne do testowania przy użyciu lekkich obciążeń, ale nie jest przeznaczone do użycia w środowisku produkcyjnym o dużym obciążeniu. W przypadku monitorowania produkcji zalecamy Szczegółowe informacje aplikacji. Jeśli wbudowane rejestrowanie jest używane w środowisku produkcyjnym, rekord rejestrowania może być niekompletny z powodu ograniczania przepustowości w usłudze Azure Storage.

Aby wyłączyć wbudowane rejestrowanie, usuń AzureWebJobsDashboard ustawienie aplikacji. Aby uzyskać więcej informacji na temat usuwania ustawień aplikacji w Azure Portal, zobacz sekcję Ustawienia aplikacji w temacie Jak zarządzać aplikacją funkcji. Przed usunięciem ustawienia aplikacji upewnij się, że żadne istniejące funkcje w tej samej aplikacji funkcji nie używają ustawienia dla wyzwalaczy lub powiązań usługi Azure Storage.

Rozwiązania z dużą ilością danych telemetrycznych

Aplikacje funkcji są istotną częścią rozwiązań, które mogą powodować duże ilości danych telemetrycznych, takich jak rozwiązania IoT, szybkie rozwiązania sterowane zdarzeniami, systemy finansowe o dużym obciążeniu i systemy integracji. W takim przypadku należy rozważyć dodatkową konfigurację, aby zmniejszyć koszty przy zachowaniu wglądu.

Wygenerowane dane telemetryczne mogą być używane na pulpitach nawigacyjnych w czasie rzeczywistym, alertach, szczegółowej diagnostyce itd. W zależności od sposobu użycia wygenerowanej telemetrii należy zdefiniować strategię zmniejszenia ilości generowanych danych. Ta strategia umożliwi prawidłowe monitorowanie, obsługę i diagnozowanie aplikacji funkcji w środowisku produkcyjnym. Możesz wziąć pod uwagę następujące opcje:

  • Użycie próbkowania: jak wspomniano wcześniej, pomoże to znacznie zmniejszyć ilość zdarzeń telemetrii pozyskanych przy zachowaniu statystycznie poprawnej analizy. Może się zdarzyć, że nawet przy użyciu próbkowania nadal uzyskujesz dużą ilość danych telemetrycznych. Sprawdź opcje zapewniane przez próbkowanie adaptacyjne . Na przykład ustaw maxTelemetryItemsPerSecond wartość , która równoważy wolumin wygenerowany zgodnie z potrzebami monitorowania. Należy pamiętać, że próbkowanie danych telemetrycznych jest stosowane na każdym hoście wykonującym aplikację funkcji.

  • Domyślny poziom dziennika: użyj Warning wartości domyślnej lub Error jako wartości domyślnej dla wszystkich kategorii telemetrii. Teraz możesz zdecydować, które kategorie chcesz ustawić na Information poziomie, aby można było prawidłowo monitorować i diagnozować funkcje.

  • Dostrajanie danych telemetrycznych funkcji: Przy domyślnym poziomie dziennika ustawionym na Error wartość lub Warningżadne szczegółowe informacje z każdej funkcji nie zostaną zebrane (zależności, metryki niestandardowe, zdarzenia niestandardowe i ślady). Dla tych funkcji, które są kluczem do monitorowania produkcji, zdefiniuj jawny wpis dla Function.<YOUR_FUNCTION_NAME> kategorii i ustaw go na Informationwartość , aby można było zebrać szczegółowe informacje. W tym momencie, aby uniknąć zbierania dzienników generowanych przez użytkownika na Information poziomie, ustaw kategorię Function.<YOUR_FUNCTION_NAME>.User na Error lub Warning poziom dziennika.

  • Kategoria Host.Aggregator: zgodnie z opisem w temacie Konfigurowanie kategorii ta kategoria zawiera zagregowane informacje o wywołaniach funkcji. Informacje z tej kategorii są zbierane w tabeli Application Szczegółowe informacje customMetrics i są wyświetlane na karcie Przegląd funkcji w Azure Portal. W zależności od sposobu konfigurowania agregatora należy wziąć pod uwagę, że wystąpi opóźnienie określone przez element flushTimeoutw zebranych danych telemetrycznych. Jeśli ustawisz tę kategorię na inną wartość inną niż Information, zatrzymasz zbieranie danych w customMetrics tabeli i nie wyświetlisz metryk na karcie Przegląd funkcji.

    Poniższy zrzut ekranu przedstawia Host.Aggregator dane telemetryczne wyświetlane na karcie Przegląd funkcji:

    Screenshot of Host.Aggregator telemetry displayed in function Overview tab.

    Poniższy zrzut ekranu przedstawia Host.Aggregator dane telemetryczne w tabeli application Szczegółowe informacjecustomMetrics:

    Screenshot of Host.Aggregator telemetry in customMetrics Application Insights table.

  • Kategoria Host.Results: zgodnie z opisem w temacie Konfigurowanie kategorii ta kategoria zawiera dzienniki generowane przez środowisko uruchomieniowe wskazujące powodzenie lub niepowodzenie wywołania funkcji. Informacje z tej kategorii są zbierane w tabeli Application Szczegółowe informacje requests i są wyświetlane na karcie Monitor funkcji i na różnych pulpitach nawigacyjnych usługi Application Szczegółowe informacje (wydajność, błędy itd.). Jeśli ustawisz tę kategorię na inną wartość inną niż Information, zbierzesz tylko dane telemetryczne wygenerowane na zdefiniowanym poziomie dziennika (lub wyższym). Na przykład ustawienie go tak, aby error powoduje śledzenie danych żądań tylko w przypadku nieudanych wykonań.

    Poniższy zrzut ekranu przedstawia Host.Results dane telemetryczne wyświetlane na karcie Monitor funkcji:

    Screenshot of Host.Results telemetry in function Monitor tab.

    Poniższy zrzut ekranu przedstawia Host.Results dane telemetryczne wyświetlane na pulpicie nawigacyjnym aplikacji Szczegółowe informacje Performance:

    Screenshot of Host.Results telemetry in Application Insights Performance dashboard.

  • Host.Aggregator a Host.Results: Obie kategorie zapewniają dobry wgląd w wykonania funkcji. W razie potrzeby możesz usunąć szczegółowe informacje z jednej z tych kategorii, aby można było użyć ich do monitorowania i zgłaszania alertów. Oto przykład:

{
  "version": "2.0",  
  "logging": {
    "logLevel": {
      "default": "Warning",
      "Function": "Error",
      "Host.Aggregator": "Error",
      "Host.Results": "Information", 
      "Function.Function1": "Information",
      "Function.Function1.User": "Error"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
} 

Ta konfiguracja obejmuje następujące elementy:

  • Wartość domyślna dla wszystkich funkcji i kategorii telemetrii jest ustawiona na Warning (w tym kategorie firmy Microsoft i procesów roboczych). Domyślnie zbierane są wszystkie błędy i ostrzeżenia generowane przez środowisko uruchomieniowe i rejestrowanie niestandardowe.

  • Poziom Function dziennika kategorii jest ustawiony na Errorwartość , więc dla wszystkich funkcji domyślnie będą zbierane tylko wyjątki i dzienniki błędów (zostaną pominięte zależności, metryki generowane przez użytkownika i zdarzenia generowane przez użytkownika).

  • Host.Aggregator W przypadku kategorii, ponieważ jest ona ustawiona na Error poziom dziennika, zagregowane informacje z wywołań funkcji nie będą zbierane w customMetrics tabeli Application Szczegółowe informacje, a informacje o liczbach wykonań (suma, powodzenie i niepowodzenie) nie będą wyświetlane na pulpicie nawigacyjnym przeglądu funkcji.

  • Host.Results Dla kategorii wszystkie informacje o wykonywaniu hosta są zbierane w requests tabeli Application Szczegółowe informacje. Wszystkie wyniki wywołań będą wyświetlane na pulpicie nawigacyjnym Monitor funkcji i na pulpitach nawigacyjnych aplikacji Szczegółowe informacje.

  • Dla funkcji o nazwie Function1, ustawiliśmy poziom dziennika na Information. Dlatego w przypadku tej konkretnej funkcji wszystkie dane telemetryczne są zbierane (zależność, metryki niestandardowe i zdarzenia niestandardowe). Dla tej samej funkcji Function1.User kategoria (ślady generowane przez użytkownika) jest ustawiona na Errorwartość , więc będzie zbierane tylko niestandardowe rejestrowanie błędów.

    Uwaga

    Konfiguracja na funkcję nie jest obsługiwana w wersji 1.x.

  • Próbkowanie jest skonfigurowane do wysyłania jednego elementu telemetrii na sekundę na typ, z wyłączeniem wyjątków. To próbkowanie zostanie wykonane dla każdego hosta serwera, na którym jest uruchomiona nasza aplikacja funkcji. Dlatego jeśli mamy cztery wystąpienia, ta konfiguracja będzie emitować cztery elementy telemetrii na sekundę na typ i wszystkie wyjątki, które mogą wystąpić.

    Uwaga

    Liczniki metryk, takie jak częstotliwość żądań i częstotliwość wyjątków, są dostosowywane w celu zrekompensowania częstotliwości próbkowania, dzięki czemu są wyświetlane w przybliżeniu poprawne wartości w Eksploratorze metryk.

Porada

Poeksperymentuj z różnymi konfiguracjami, aby upewnić się, że spełniasz wymagania dotyczące rejestrowania, monitorowania i alertów. Upewnij się również, że masz szczegółową diagnostykę w przypadku nieoczekiwanych błędów lub awarii.

Zastępowanie konfiguracji monitorowania w czasie wykonywania

Na koniec mogą wystąpić sytuacje, w których trzeba szybko zmienić zachowanie rejestrowania określonej kategorii w środowisku produkcyjnym i nie chcesz wprowadzać całego wdrożenia tylko w przypadku zmiany w pliku host.json . W takich przypadkach można zastąpić wartości host.json.

Aby skonfigurować te wartości na poziomie ustawień aplikacji (i uniknąć ponownego wdrażania w pliku host.json ), należy zastąpić określone host.json wartości, tworząc równoważną wartość jako ustawienie aplikacji. Gdy środowisko uruchomieniowe znajdzie ustawienie aplikacji w formacie AzureFunctionsJobHost__path__to__setting, zastępuje równoważne host.json ustawienie znajdujące się w path.to.setting pliku JSON. W przypadku wyrażenia jako ustawienia aplikacji kropka (.) używana do wskazania hierarchii JSON jest zastępowana podwójnym podkreśleniem (__). Możesz na przykład użyć poniższych ustawień aplikacji, aby skonfigurować poszczególne poziomy dziennika funkcji, jak pokazano host.json powyżej.

Ścieżka Host.json Ustawienie aplikacji
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function.Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function.Function1.User

Ustawienia można przesłonić bezpośrednio w bloku App Configuration funkcji Azure Portal lub za pomocą interfejsu wiersza polecenia platformy Azure lub skryptu programu PowerShell.

az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host__Aggregator=Information"

Uwaga

host.json Zastąpienie przez zmianę ustawień aplikacji spowoduje ponowne uruchomienie aplikacji funkcji.

Następne kroki

Aby uzyskać więcej informacji na temat monitorowania, zobacz: