Tworzenie aplikacji funkcji i zarządzanie nimi w planie Flex Consumption

W tym artykule pokazano, jak tworzyć aplikacje funkcji hostowane w planie Flex Consumption w usłudze Azure Functions. Pokazano również, jak zarządzać niektórymi funkcjami aplikacji hostowanej w planie Flex Consumption.

Zasoby aplikacji funkcji są specyficzne dla języka. Pamiętaj, aby wybrać preferowany język programowania kodu na początku artykułu.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Jeśli jeszcze go nie masz, możesz bezpłatnie utworzyć konto.

  • Interfejs wiersza polecenia platformy Azure: służy do tworzenia zasobów i zarządzania nimi na platformie Azure. W przypadku korzystania z interfejsu wiersza polecenia platformy Azure na komputerze lokalnym upewnij się, że używasz wersji 2.60.0 lub nowszej. Możesz również użyć usługi Azure Cloud Shell, która ma poprawną wersję interfejsu wiersza polecenia platformy Azure.

  • W przypadku aplikacji języka Go użyj Azure CLI wersji 2.87.0 lub nowszej. Uruchom polecenie az version , aby sprawdzić zainstalowaną wersję.

Tworzenie aplikacji Flex Consumption

W tej sekcji pokazano, jak utworzyć aplikację funkcji w planie Flex Consumption przy użyciu interfejsu wiersza polecenia platformy Azure, witryny Azure Portal lub programu Visual Studio Code. Aby zapoznać się z przykładem tworzenia aplikacji w planie Flex Consumption przy użyciu szablonów Bicep/ARM, zobacz repozytorium Flex Consumption.

Jeśli zdecydujesz się utworzyć i wdrożyć aplikację przy użyciu narzędzia Maven, możesz pominąć tę sekcję.

Aby obsługiwać kod funkcji, należy utworzyć trzy zasoby:

  • Grupa zasobów, która jest kontenerem logicznym dla powiązanych zasobów.
  • Konto magazynu, które służy do obsługi stanu i innych informacji o funkcjach.
  • Aplikacja funkcji działająca w planie Flex Consumption, która udostępnia środowisko do uruchamiania kodu funkcji. Aplikacja funkcji odnosi się do lokalnego projektu funkcji i umożliwia grupowanie funkcji jako jednostki logicznej, co ułatwia zarządzanie, wdrażanie i udostępnianie zasobów w planie Flex Consumption.
  1. Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure.

  2. Użyj polecenia az functionapp list-flexconsumption-locations aby przejrzeć listę regionów, które obecnie obsługują konsumpcję Flex w kolejności alfabetycznej.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    
  1. Utwórz grupę zasobów w jednym z aktualnie obsługiwanych regionów wymienionych w poleceniu w poprzednim kroku.

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    W poprzednim poleceniu zastąp <RESOURCE_GROUP> na wartość unikatową w subskrypcji, a <REGION> na jeden z aktualnie obsługiwanych regionów. Polecenie az group create tworzy grupę zasobów.

  2. Utwórz konto magazynu ogólnego przeznaczenia w grupie zasobów i regionie:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
    

    W poprzednim przykładzie zastąp <STORAGE_NAME> nazwą odpowiednią dla Ciebie i unikatową w Azure Storage. Nazwy muszą zawierać od trzech do 24 znaków składających się tylko z cyfr i małych liter. Standard_LRS określa konto ogólnego przeznaczenia obsługiwane przez usługę Azure Functions zgodnie z wymaganiami dotyczącymi konta magazynu. Polecenie az storage account create tworzy konto magazynowe.

    Ważne

    Konto magazynowe służy do przechowywania ważnych danych aplikacji, czasami także samego kodu aplikacji. Należy ograniczyć dostęp do konta przechowywania z innych aplikacji i od użytkowników.

  3. Utwórz aplikację funkcji na platformie Azure:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0
    

    Aplikacje języka C# uruchamiane w procesie nie są obecnie obsługiwane podczas uruchamiania w planie Flex Consumption.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 22
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11
    

    W przypadku aplikacji języka Python język Python 3.10 jest również obecnie obsługiwany.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime go --runtime-version 1.0 --functions-version 4
    az resource update --resource-group <RESOURCE_GROUP> --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false
    

    Polecenie az resource update wyłącza protokół HTTP/2 w aplikacji funkcji, która jest wymagana w publicznej wersji zapoznawczej języka Go.

    W tym przykładzie zastąp zarówno <RESOURCE_GROUP>, jak i <STORAGE_NAME> odpowiednio grupą zasobów i nazwą konta użytego w poprzednim kroku. Zastąp <APP_NAME> również globalnie unikatową nazwą odpowiednią dla Ciebie. Jest <APP_NAME> również domyślną domeną serwera nazw domen (DNS) dla aplikacji funkcjonalności. Polecenie az functionapp create tworzy aplikację funkcji na platformie Azure.

    Polecenie az functionapp create tworzy aplikację funkcji działającą w planie Flex Consumption.

    Ponieważ utworzyłeś aplikację bez określania zawsze gotowych wystąpień, koszty są ponoszone tylko podczas aktywnego wykonywania funkcji. Polecenie tworzy również powiązane wystąpienie usługi aplikacja systemu Azure Insights w tej samej grupie zasobów, za pomocą której można monitorować aplikację funkcji i wyświetlać dzienniki. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions.

Wdrażanie projektu kodu

W przypadku wdrożenia aplikacje planu Flex Consumption używają kontenera usługi Blob Storage do hostowania plików pakietów .zip zawierających kod projektu i wszystkie biblioteki wymagane do uruchomienia aplikacji. Aby uzyskać więcej informacji, zobacz Opcje wdrażania.

Jeśli zdecydujesz się utworzyć i wdrożyć aplikację przy użyciu narzędzia Maven, możesz pominąć tę sekcję.

Możesz wdrożyć kod projektu w istniejącej aplikacji funkcji przy użyciu różnych narzędzi:

Wdrożenie języka Go wymaga Azure Functions Core Tools w wersji 4.12 lub nowszej. Uruchom polecenie func --version , aby sprawdzić zainstalowaną wersję.

Interfejs wiersza polecenia platformy Azure umożliwia przekazanie pliku pakietu wdrożeniowego do obszaru współdzielonego wdrożenia aplikacji funkcji na platformie Azure. Aby to wdrożenie było możliwe, należy utworzyć plik pakietu .zip, który może zostać uruchomiony po zainstalowaniu pakietu w aplikacji.

Ten plik pakietu musi zawierać wszystkie pliki wyjściowe budowy i przywoływane biblioteki wymagane do uruchomienia projektu.

W przypadku projektów z dużą liczbą bibliotek utwórz pakiet główny pliku projektu i zażądaj kompilacji zdalnej.

W przypadku projektów w Pythonie spakuj katalog główny projektu i zawsze żądaj kompilacji zdalnej. Użycie kompilacji zdalnej zapobiega potencjalnym problemom, które mogą wystąpić podczas kompilowania projektu w systemie Windows, który ma zostać wdrożony w systemie Linux.

W przypadku projektów języka Go użyj narzędzi Core Tools, aby utworzyć gotowy do uruchomienia pakiet .zip lokalnie, a następnie wdrożyć ten pakiet przy użyciu Azure CLI. Nie żądaj kompilacji zdalnej pakietów Go utworzonych przez func pack.

  1. Korzystając z preferowanego narzędzia programistycznego, skompiluj projekt kodu.

  2. Utwórz plik .zip zawierający dane wyjściowe katalogu kompilacji. Aby uzyskać więcej informacji, zobacz Struktura projektu.

  3. W razie potrzeby zaloguj się do konta Azure i wybierz aktywną subskrypcję przy użyciu polecenia az login.

    az login
    
  4. Uruchom polecenie az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Korzystając z preferowanego narzędzia programistycznego, skompiluj projekt kodu.

  2. Utwórz plik .zip zawierający dane wyjściowe katalogu kompilacji. Aby uzyskać więcej informacji, zobacz Struktura folderów.

  3. W razie potrzeby zaloguj się do konta Azure i wybierz aktywną subskrypcję przy użyciu polecenia az login.

    az login
    
  4. Uruchom polecenie az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Utwórz plik .zip zawierający katalog główny projektu kodu. Aby uzyskać więcej informacji, zobacz Struktura folderów.

  2. W razie potrzeby zaloguj się do konta Azure i wybierz aktywną subskrypcję przy użyciu polecenia az login.

    az login
    
  3. Uruchom polecenie az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Utwórz plik .zip zawierający katalog główny projektu kodu. Aby uzyskać więcej informacji, zobacz Struktura folderów.

  2. W razie potrzeby zaloguj się do konta Azure i wybierz aktywną subskrypcję przy użyciu polecenia az login.

    az login
    
  3. Uruchom polecenie az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    Upewnij się, że ustawiono opcję --build-remote true wykonania kompilacji zdalnej.

  1. Utwórz plik .zip zawierający katalog główny projektu kodu. Aby uzyskać więcej informacji, zobacz Struktura folderów.

  2. W razie potrzeby zaloguj się do konta Azure i wybierz aktywną subskrypcję przy użyciu polecenia az login.

    az login
    
  3. Uruchom polecenie az functionapp deployment source config-zip, aby wdrożyć pakiet aplikacji znajdujący się w względnym katalogu <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    Upewnij się, że ustawiono opcję --build-remote true wykonania kompilacji zdalnej.

  1. W folderze głównym projektu uruchom następujące polecenie Core Tools, aby skompilować i spakować projekt Języka Go:

    func pack
    

    Domyślnie plik wyjściowy .zip ma taką samą nazwę jak folder projektu.

  2. W razie potrzeby zaloguj się do konta platformy Azure i wybierz aktywną subskrypcję przy użyciu az login polecenia .

    az login
    
  3. Uruchom polecenie az functionapp deployment source config-zip, aby wdrożyć pakiet znajdujący się w lokalizacji <ZIP_FILE_PATH>.

    az functionapp deployment source config-zip --resource-group <RESOURCE_GROUP> --name <APP_NAME> --src <ZIP_FILE_PATH>
    

Tworzenie i wdrażanie aplikacji przy użyciu narzędzia Maven

Za pomocą narzędzia Maven można podczas wdrażania utworzyć aplikację funkcji hostowaną w planie Flex Consumption oraz wymagane zasoby, modyfikując plik pom.xml.

  1. Utwórz projekt kodu Java, wykonując pierwszą część jednego z następujących artykułów Szybki start:

  2. W projekcie Java otwórz plik pom.xml i wprowadź następujące zmiany, aby utworzyć aplikację funkcji w ramach planu Flex Consumption:

    • Zmień wartość z <properties>.<azure.functions.maven.plugin.version> na 1.34.0.

    • W sekcji <plugin>.<configuration> dla azure-functions-maven-plugin dodaj lub odkomentuj element <pricingTier> w następujący sposób:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (Opcjonalnie) Dostosuj plan Flex Consumption we wdrożeniu narzędzia Maven, dołączając również te elementy w <plugin>.<configuration> sekcji : .

    • <instanceSize> — ustawia rozmiar pamięci wystąpienia dla aplikacji funkcji. Domyślna wartość to 2048.
    • <maximumInstances> — ustawia najwyższą wartość maksymalnej liczby wystąpień aplikacji funkcji.
    • <alwaysReadyInstances> — ustawia liczbę zawsze gotowych wystąpień z elementami podrzędnymi dla grup wyzwalaczy HTTP (<http>), grup Durable Functions (<durable>) i innych określonych wyzwalaczy (<my_function>). Jeśli ustawisz dowolną liczbę wystąpień większą niż zero, płacisz za te wystąpienia niezależnie od tego, czy funkcje są wykonywane, czy nie. Aby uzyskać więcej informacji, zobacz Rozliczenia.
  4. Przed wdrożeniem zaloguj się do subskrypcji Azure przy użyciu Azure CLI.

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure.

  5. Użyj następującego polecenia, aby wdrożyć projekt kodu do nowej aplikacji funkcji w ramach Flex Consumption.

    mvn azure-functions:deploy
    

    Narzędzie Maven używa ustawień z szablonu pom.xml, aby utworzyć aplikację funkcji w planie Flex Consumption na platformie Azure wraz z innymi wymaganymi zasobami. Jeśli te zasoby już istnieją, kod zostanie wdrożony w aplikacji funkcji, zastępując istniejący kod.

Tworzenie i wdrażanie aplikacji w języku Go

Aplikacje funkcji Go są obsługiwane tylko w ramach planu Flex Consumption. Aby utworzyć, uruchomić i wdrożyć aplikację funkcji w języku Go, zobacz Tworzenie funkcji Go z wiersza polecenia. Aby uzyskać szczegółowe informacje o strukturze projektu i wdrożeniu specyficznym dla języka Go, zobacz dokumentację dla deweloperów języka Go.

Konfiguracja integracji sieci wirtualnej

Możesz włączyć integrację sieci wirtualnej dla aplikacji w planie Flex Consumption podczas tworzenia aplikacji lub w późniejszym czasie. Przed włączeniem integracji z siecią wirtualną zapoznaj się z wymaganiami dotyczącymi sieci i podsieci specyficznymi dla rozwiązania Flex Consumption.

Jak działa sieć Flex Consumption

Wystąpienia usługi Flex Consumption nie korzystają, każde z osobna, z unikatowego adresu IP z tej podsieci, z którą integrujesz aplikację. Zamiast tego pula bram sieci zarządzanych przez platformę (wewnętrzna do infrastruktury Flex Consumption) używa adresów IP z podsieci do obsługi wszystkich aplikacji zintegrowanych z tej podsieci. Ta architektura multipleksowania adresów IP zasadniczo różni się od planów Premium, w których każda instancja używa jednego adresu IP z podsieci.

Wytyczne dotyczące 40 adresów IP na aplikację zapewniają wystarczającą liczbę adresów IP dla puli bram platformy i innych składników infrastruktury, ale nie jest to wymuszony limit. Zaplanuj to minimum podczas określania rozmiaru podsieci, ale należy pamiętać, że rzeczywiste użycie adresu IP jest zwykle niższe. Platforma dynamicznie przydziela adresy IP ze współdzielonej puli adresów IP bramy w miarę skalowania w poziomie aplikacji zintegrowanych z podsiecią.

Ustalanie rozmiaru i wymagania dotyczące podsieci

Wybierz odpowiednią podsieć o odpowiednim rozmiarze dla aplikacji Flex Consumption. Poniższa tabela zawiera wskazówki oparte na scenariuszu:

Scenario Zalecana usługa CIDR Adresy IP do użytku Notes
Pojedyncza aplikacja Flex /27 27 Minimalny obsługiwany rozmiar podsieci dla jednej aplikacji
Wiele aplikacji Flex w jednej podsieci /26 59 Zalecane do hostowania wielu aplikacji i obciążeń na dużą skalę (1,000+ instancji); zapewnia odpowiednią przepustowość bramy

Delegowanie podsieci

  • Deleguj podsieć do Microsoft.App/environments. To delegowanie różni się od planów Premium i Dedicated, które korzystają z Microsoft.Web/serverFarms.
  • Zarejestruj dostawcę zasobów Microsoft.App w swojej subskrypcji.

Ograniczenia użycia podsieci

  • Podsieć nie może być jeszcze używana dla prywatnych punktów końcowych lub punktów końcowych usługi i nie można jej delegować do innych planów hostingu ani usług.
  • Nie można współużytkować tej samej podsieci między środowiskiem Azure Container Apps i aplikacją Flex Consumption.
  • Nazwy podsieci nie mogą zawierać znaków podkreślenia (_), co jest bieżącym ograniczeniem planu Flex Consumption.

Udostępnianie podsieci

  • Tę samą podsieć można udostępnić dla więcej niż jednej aplikacji działającej w planie Flex Consumption. Jednak ponieważ zasoby sieciowe są współużytkowane we wszystkich aplikacjach, jedna aplikacja funkcji może mieć wpływ na wydajność innych w tej samej podsieci. Rozważ zagregowane zapotrzebowanie podczas pakowania wielu aplikacji w małą podsieć.
  • Podsieć i aplikacja muszą znajdować się w tym samym regionie.

Alokacja i planowanie adresów IP

  • Aplikacje Flex Consumption nie przypisują unikatowego adresu IP do każdego wystąpienia. Zamiast tego pula bram sieci używa adresów IP z podsieci. Wytyczne dotyczące rezerwowania 40 adresów IP na aplikację pomagają zapewnić wystarczającą liczbę adresów IP dla puli bramy i innych składników infrastruktury, ale rzeczywiste użycie jest zwykle niższe.
  • Podsieć /27 (27 adresów IP do użycia) jest wystarczająca dla jednej aplikacji obsługującej maksymalnie 1000 wystąpień z powodu multipleksowania adresów IP. W przypadku wielu aplikacji lub obciążeń na dużą skalę użyj podsieci /26, aby zapewnić odpowiednią przepustowość bramy.
  • Jeśli wiele aplikacji współużytkuje podsieć, a wiele z nich jest skalowanych w poziomie i generuje znaczny ruch wychodzący, wąskim gardłem może stać się przepustowość ruchu wychodzącego, a nie wyczerpanie puli adresów IP. Oceń wydajność w planowanej skali produkcyjnej.

Włączanie integracji sieci wirtualnej podczas tworzenia aplikacji

W przykładach w tej sekcji założono, że Twoje konto zawiera już sieć wirtualną i podsieć.

Włącz integrację z siecią wirtualną, uruchamiając polecenie az functionapp create i uwzględniając parametry --vnet oraz --subnet. Podsieć musi być delegowana do Microsoft.App/environments i musi mieć rozmiar co najmniej /27. Aby uzyskać więcej informacji, zobacz Określanie rozmiaru i wymagania podsieci.

  1. Utwórz sieć wirtualną i podsieć, jeśli jeszcze jej nie masz.

  2. Wykonaj kroki 1–4 w temacie Tworzenie aplikacji Flex Consumption, aby utworzyć zasoby wymagane przez aplikację.

  3. Uruchom polecenie az functionapp create, uwzględniając parametry --vnet i --subnet, jak w tym przykładzie:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime go --runtime-version 1.0 --functions-version 4 --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
    az resource update --resource-group <RESOURCE_GROUP> --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false
    

    Polecenie az resource update wyłącza protokół HTTP/2 w aplikacji funkcji, która jest wymagana w publicznej wersji zapoznawczej języka Go.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
    

    Wartość <VNET_RESOURCE_ID> to identyfikator zasobu dla sieci wirtualnej, który ma format: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. Tego polecenia można użyć, aby uzyskać listę identyfikatorów sieci wirtualnej, filtrowanych według <RESOURCE_GROUP>: az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.

Aby uzyskać kompleksowe przykłady tworzenia aplikacji w rozwiązaniu Flex Consumption z integracją sieci wirtualnej, zobacz następujące zasoby:

Modyfikowanie lub usuwanie integracji sieci wirtualnej

Możesz dodawać, zmieniać lub usuwać integrację sieci wirtualnej dla istniejącej aplikacji.

az functionapp vnet-integration add Użyj polecenia , aby włączyć integrację sieci wirtualnej z istniejącą aplikacją funkcji:

az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>

Użyj polecenia , az functionapp vnet-integration remove aby wyłączyć integrację sieci wirtualnej w aplikacji:

az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Użyj polecenia , az functionapp vnet-integration list aby wyświetlić listę bieżących integracji sieci wirtualnej dla aplikacji:

az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Rozwiązywanie problemów z siecią w usłudze Application Insights

Usługa Application Insights to pierwsze miejsce, w których aplikacja Flex Consumption pokazuje błędy DNS, przekroczenia limitu czasu zależności lub inne objawy łączności. Rejestruje to, co kod zaobserwował w czasie działania: wyjątki, wychodzące wywołania zależności oraz całościowy przebieg wykonywania. Ułatwia to odróżnienie błędów na poziomie aplikacji od podstawowych problemów z platformą lub siecią.

Poniższe tabele usługi Application Insights są najbardziej przydatne w przypadku badań sieciowych:

Tabela Co pokazuje Użyj go do
traces Dzienniki środowiska uruchomieniowego, hosta, ILogger i kontrolera skalowania. W witrynie Flex Consumption szczegóły inicjowania wdrożenia są również wyświetlane tutaj. Problemy z uruchamianiem hosta, zachowanie podczas zimnego startu, błędy wdrażania i błędy DNS ujawniające się w dziennikach hosta lub zależności.
requests Jeden wpis dla każdego wywołania HTTP, zawierający czas trwania, kod wyniku i informację o powodzeniu. Wyzwalacze HTTP o dużym opóźnieniu, błędy 4xx i 5xx oraz potwierdzenie, że aplikacja odbiera i obsługuje żądania.
exceptions Wyjątki czasu wykonywania i wyjątki zdefiniowane przez użytkownika, w tym ślady stosu. Analiza przyczyn źródłowych błędów dotyczących DNS, usługi Azure Storage, usługi Azure Key Vault, błędu „module-not-found”, błędów limitu czasu i podobnych błędów środowiska wykonawczego.
dependencies Wychodzące wywołania HTTP, SQL, Service Bus i innych zależności wraz z czasami trwania i kodami błędów. Objawy typu „działa lokalnie, ale kończy się niepowodzeniem w środowisku Flex Consumption” oraz błędy DNS, TLS lub uwierzytelniania w połączeniach wychodzących spowodowane działaniem sieci wirtualnej, systemu DNS lub mechanizmu NAT.
customMetrics Zagregowane metryki, takie jak czas trwania i liczba sukcesów lub niepowodzenia. Analiza trendów, nagłe spadki wskaźnika powodzenia i skoki czasu trwania wskazujące na problemy ze skalowaniem lub zablokowane uruchomienia.
FunctionAppLogs (dziennik zasobu) Dzienniki aplikacji funkcji na poziomie platformy wysyłane do Azure Monitor Logs. Gdy brakuje danych z usługi Application Insights lub są one niekompletne, albo w przypadku problemów dotyczących płaszczyzny sterowania i poziomu hosta, takich jak błędy powiązań.
AzureActivity Operacje płaszczyzny sterowania, takie jak uruchamianie, zatrzymywanie, wyzwalanie synchronizacji, usuwanie i wyświetlanie listy kluczy. Inspekcja zmian konfiguracji i diagnozowanie problemów z rejestracją wyzwalacza (typowe są błędy wyzwalacza synchronizacji).

Przykłady zapytań

Użyj tych przykładowych zapytań w widoku Logs zasobu Application Insights. Zastąp <APP_NAME> nazwą swojej aplikacji funkcji.

Błędy uruchamiania lub wdrażania hosta (dotyczy tylko planu Flex Consumption):

traces
| where timestamp > ago(1d)
| where cloud_RoleName == "<APP_NAME>"
| where message contains "Starting" or message contains "host"
| project timestamp, message, customDimensions
| order by timestamp desc

Problemy z wyzwalaczem HTTP, opóźnieniami lub błędami 5xx:

requests
| where timestamp > ago(1h)
| where cloud_RoleName == "<APP_NAME>"
| project timestamp, name, resultCode, duration, success, url, operation_Name
| order by timestamp desc

Typowe wyjątki pogrupowane według typu, takie jak DNS, Key Vault, Storage lub language-runtime modules:

exceptions
| where timestamp > ago(1d)
| where cloud_RoleName == "<APP_NAME>"
| summarize count() by type, innermostMessage
| order by count_ desc

Awarie zależności wychodzących (DNS, TLS, uwierzytelnianie, routing w sieci wirtualnej):

dependencies
| where timestamp > ago(2h)
| where cloud_RoleName == "<APP_NAME>"
| where success == false
| project timestamp, target, resultCode, duration, type, data

Wyzwalacz inny niż HTTP, który się nie uruchamia (wyzwalacze kolejki, obiektów blob lub usługi Event Grid). Częstą przyczyną jest to, że rejestracja wyzwalacza zakończyła się pomyślnie, ale odbiornik nie został włączony; powiązane wyjątki są wyświetlane w śladach kontrolera skalowania:

traces
| where timestamp > ago(2h)
| where message contains "listener" or message contains "trigger"

Rozwiązywanie problemów z wydajnością sieci

Gdy aplikacja Flex Consumption integruje się z podsiecią mniejszą niż zalecany rozmiar, może wystąpić spadek wydajności w miarę skalowania aplikacji. Ten problem może również wystąpić, jeśli zintegrujesz wiele aplikacji z wykorzystaniem tej samej podsieci, gdy są skalowane w poziomie i generują znaczny ruch wychodzący.

Objawy zbyt małych podsieci

Monitoruj te objawy, które wskazują, że pojemność ruchu wychodzącego zamiast adresów IP jest czynnikiem ograniczającym:

  • Zwiększone opóźnienia wywołań wychodzących do usług zależnych
  • Przekroczenie limitu czasu połączenia z usługami zewnętrznymi
  • Problemy te nasilają się wraz ze skalowaniem aplikacji, a nie występują jako nagła awaria.

Ważne

Samo skalowanie w poziomie nie jest ograniczone przez rozmiar podsieci. Aplikacja nadal dodaje instancje, nawet jeśli podsieć jest zbyt mała. Następuje spadek wydajności zamiast osiągnięcia sztywnego limitu skalowania.

Monitorowanie i ograniczanie ryzyka

  • Skonfiguruj usługę Application Insights przy użyciu metryk opóźnień zależności wychodzących: ta metryka stanowi wczesny sygnał ostrzegawczy o zbyt małych podsieciach.
  • Test obciążeniowy na dużą skalę produkcyjną przed ustawieniem rozmiaru podsieci w celu sprawdzenia, czy rozmiar podsieci może obsłużyć oczekiwane obciążenie.
  • Monitoruj za pomocą usługi Azure Monitor: W usłudze Azure Monitor przejdź do Sieć wirtualna>Podsieć, aby wyświetlić dane o alokacji adresów IP przy użyciu usługi Azure Resource Graph i zapytań KQL.
  • Określ odpowiedni rozmiar podsieci zgodnie ze wskazówkami w poprzedniej sekcji. Zdecydowanie zalecane jest minimum /27; w przypadku wielu aplikacji zalecane jest /26.

Uwaga / Notatka

Użyj co najmniej podsieci /27 , aby zapewnić odpowiednią stabilność platformy. Podsieci znacznie mniejsze niż /27 mogą powodować problemy z tworzeniem bramy bez wyraźnego komunikatu o błędzie.

Konfigurowanie ustawień wdrażania

W planie Flex Consumption kontener Azure Blob Storage przechowuje pakiet wdrożeniowy z kodem aplikacji. Domyślnie wdrożenia używają tego samego konta magazynu danych (AzureWebJobsStorage) i tych samych parametrów połączenia, których środowisko uruchomieniowe usługi Functions używa do utrzymywania aplikacji. Ustawienie aplikacji DEPLOYMENT_STORAGE_CONNECTION_STRING przechowuje parametry połączenia. Można jednak wskazać kontener obiektów blob na oddzielnym koncie magazynu jako źródło wdrożenia swojego kodu. Możesz również zmienić metodę uwierzytelniania używaną do uzyskiwania dostępu do kontenera.

Dostosowane źródło wdrożenia powinno spełniać następujące kryteria:

  • Konto magazynu musi już istnieć.
  • Kontener do użycia na potrzeby wdrożeń musi również istnieć.
  • Jeśli więcej niż jedna aplikacja używa tego samego konta magazynu, każda aplikacja powinna mieć własny kontener wdrożeniowy. Użycie unikatowego kontenera dla każdej aplikacji uniemożliwia zastąpienie pakietów wdrożeniowych, co mogłoby się zdarzyć, jeśli aplikacje współużytkował ten sam kontener.

Podczas konfigurowania uwierzytelniania magazynu wdrożenia należy pamiętać o następujących kwestiach:

  • Najlepszym rozwiązaniem w zakresie zabezpieczeń jest użycie tożsamości zarządzanych podczas nawiązywania połączenia z Azure Storage z aplikacji. Aby uzyskać więcej informacji, zobacz Połączenia.
  • Jeśli używasz łańcucha połączenia do połączenia z kontem magazynu wdrożenia, ustawienie aplikacji zawierające ten łańcuch musi już istnieć.
  • Jeśli używasz tożsamości zarządzanej przypisanej przez użytkownika, połączysz podaną tożsamość z aplikacją funkcji. Przypisujesz również do tożsamości rolę Storage Blob Data Contributor, ograniczoną do konta magazynu wdrożenia.
  • W przypadku korzystania z tożsamości zarządzanej przypisanej przez system należy utworzyć tożsamość, gdy w aplikacji nie istnieje jeszcze prawidłowa tożsamość przypisana przez system. Jeśli istnieje tożsamość przypisana przez system, przypisz do niej rolę Storage Blob Data Contributor w zakresie konta magazynu wdrożenia.

Aby skonfigurować ustawienia wdrożenia podczas tworzenia aplikacji funkcji w planie Flex Consumption:

az functionapp create Użyj polecenia i podaj następujące dodatkowe opcje, które dostosują magazyn wdrożenia:

Parametr opis
--deployment-storage-name Nazwa konta magazynu wdrożenia.
--deployment-storage-container-name Nazwa kontenera na koncie, który będzie zawierał pakiet wdrożeniowy aplikacji.
--deployment-storage-auth-type Typ uwierzytelniania, którego należy użyć do łączenia się z kontem przechowywania wdrożeń. Zaakceptowane wartości obejmują StorageAccountConnectionString, UserAssignedIdentityi SystemAssignedIdentity.
--deployment-storage-auth-value W przypadku korzystania z StorageAccountConnectionString, ustaw ten parametr na nazwę ustawienia aplikacji zawierającego parametry połączenia dla konta magazynu wdrożenia. Po ustawieniu UserAssignedIdentityparametru ustaw ten parametr na nazwę identyfikatora zasobu tożsamości, której chcesz użyć.

W tym przykładzie tworzona jest aplikacja funkcji w ramach planu Flex Consumption, z oddzielnym kontem magazynowania używanym do wdrożeń oraz tożsamością przypisaną przez użytkownika.

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>

Można również zmodyfikować konfigurację przechowywania wdrożeniowego dla istniejącej aplikacji.

Użyj polecenia az functionapp deployment config set, aby zmodyfikować konfigurację magazynu wdrożenia.

az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>

Konfigurowanie pamięci wystąpienia

Ustaw rozmiar pamięci wystąpienia dla planu Flex Consumption podczas tworzenia aplikacji. Aby uzyskać więcej informacji na temat obsługiwanych rozmiarów, zobacz Rozmiary wystąpień.

Aby ustawić rozmiar pamięci wystąpienia, który różni się od domyślnego podczas tworzenia aplikacji:

Określ parametr --instance-memory w poleceniu az functionapp create. W tym przykładzie utworzono aplikację w języku C# o rozmiarze wystąpienia 4096:

az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0

W dowolnym momencie możesz zmienić ustawienie rozmiaru pamięci wystąpienia, która jest używana przez Twoją aplikację.

W tym przykładzie użyto az functionapp scale config set polecenia, aby zmienić ustawienie rozmiaru pamięci wystąpienia na 512 MB:

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512

Ustawianie zawsze gotowych liczników wystąpień

Ustaw określoną liczbę wystąpień zawsze gotowych dla grup skalowania poszczególnych funkcji lub pojedynczych funkcji, aby funkcje były załadowane i gotowe do uruchomienia. Istnieją trzy specjalne grupy, jak w skalowaniu poszczególnych funkcji:

  • http — Wszystkie funkcje wyzwalane przez protokół HTTP w aplikacji są skalowane razem, tworząc własne wystąpienia.
  • durable — Wszystkie funkcje wyzwalane przez rozszerzenie Durable (Orchestration, Activity, Entity) w aplikacji są skalowane razem do własnych wystąpień.
  • blob — Wszystkie funkcje wyzwalane przez obiekt blob (Event Grid) w aplikacji są skalowane razem do własnych wystąpień.

Użyj http, durable lub blob jako nazwę dla ustawienia pary wartości nazwy, aby skonfigurować zawsze gotowe liczniki dla tych grup. W przypadku wszystkich pozostałych funkcji w aplikacji należy skonfigurować ustawienie „always ready” dla każdej pojedynczej funkcji, używając formatu function:<FUNCTION_NAME>=n.

Aby zdefiniować jedno lub więcej oznaczeń gotowych do użycia instancji, użyj parametru --always-ready-instances z poleceniem az functionapp create. W tym przykładzie ustawiono zawsze gotową liczbę wystąpień dla wszystkich funkcji wyzwalanych przez protokół HTTP na wartość 10:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --runtime go --runtime-version 1.0 --functions-version 4 --flexconsumption-location <REGION> --always-ready-instances http=10
az resource update --resource-group <RESOURCE_GROUP> --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false

Polecenie az resource update wyłącza protokół HTTP/2 w aplikacji funkcji, która jest wymagana w publicznej wersji zapoznawczej języka Go.

W tym przykładzie ustawiono zawsze gotową liczbę instancji dla wszystkich funkcji wyzwalanych przez Durable Trigger na poziom 3 oraz ustawiono zawsze gotową liczbę instancji na 2 dla funkcji wyzwalanej przez Service Bus o nazwie function5.

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2

W tym przykładzie ustawiono zawsze gotową liczbę wystąpień na 2 dla funkcji wyzwalanej Service Bus o nazwie function5:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --runtime go --runtime-version 1.0 --functions-version 4 --flexconsumption-location <REGION> --always-ready-instances function:function5=2
az resource update --resource-group <RESOURCE_GROUP> --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false

Polecenie az resource update wyłącza protokół HTTP/2 w aplikacji funkcji, która jest wymagana w publicznej wersji zapoznawczej języka Go.

Można również modyfikować zawsze gotowe instancje w istniejącej aplikacji, dodając lub usuwając oznaczenia instancji lub zmieniając istniejące liczby oznaczeń instancji.

W tym przykładzie użyto polecenia az functionapp scale config always-ready set, aby zmienić zawsze gotową liczbę wystąpień dla grupy wyzwalaczy HTTP na 10.

az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10

Aby usunąć zawsze gotowe wystąpienia, użyj polecenia az functionapp scale config always-ready delete, jak w tym przykładzie, który usuwa wszystkie zawsze gotowe wystąpienia zarówno z grupy wyzwalaczy HTTP, jak i z funkcji o nazwie hello_world.

az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world

Ustawianie limitów współbieżności HTTP

Jeśli nie ustawisz określonych limitów, system ustala domyślne limity współbieżności HTTP dla aplikacji w planie Flex Consumption na podstawie ustawienia rozmiaru instancji. Aby uzyskać więcej informacji, zobacz Współbieżność wyzwalaczy HTTP.

Poniżej przedstawiono sposób ustawiania limitów współbieżności HTTP dla istniejącej aplikacji:

Użyj polecenia az functionapp scale config set, aby ustawić określone limity współbieżności HTTP dla swojej aplikacji, niezależnie od rozmiaru wystąpienia.

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10

W tym przykładzie ustawiono poziom współbieżności wyzwalacza HTTP na 10. Po ustawieniu wartości współbieżności dla HTTP aplikacja utrzymuje tę wartość niezależnie od zmian w ustawieniu rozmiaru instancji aplikacji.

Ustawianie strategii aktualizacji witryny

Plan Flex Consumption w wyjątkowy sposób obsługuje dwie różne strategie aktualizacji witryn, które kontrolują sposób obsługi wdrożeń kodu i zmian konfiguracji przez aplikację funkcjonalną. Domyślnie aplikacje planu Flex Consumption używają Recreate strategii, która przerywa aktualnie wykonywane funkcje podczas wdrożeń. Aby włączyć wdrożenia bez przestojów, możesz zamiast tego skonfigurować strategię RollingUpdate . Aby uzyskać więcej informacji, zobacz Strategie aktualizacji witryn w rozwiązaniu Flex Consumption.

Uwaga / Notatka

Konfiguracja strategii aktualizacji witryny jest obecnie dostępna w publicznej wersji zapoznawczej i jest dostępna tylko za pośrednictwem szablonów Bicep lub ARM. Nie można skonfigurować tego ustawienia przy użyciu Azure CLI, portalu Azure lub Visual Studio Code.

Interfejs wiersza polecenia platformy Azure obecnie nie obsługuje konfiguracji strategii aktualizacji witryny. Użyj szablonów Bicep lub ARM zgodnie z opisem w konfigurowaniu strategii aktualizacji strony.

Konfiguruj szyfrowanie TLS end-to-end

Szyfrowanie TLS end-to-end (E2E) szyfruje ruch pomiędzy front-endami platformy Azure a pracownikami obsługującymi Twoje funkcje.

Włącz szyfrowanie E2E TLS, ustawiając właściwość witryny endToEndEncryptionEnabled na true w szablonie ARM lub Bicep.

Aby uzyskać więcej informacji o tym, jak szyfrowanie TLS w E2E chroni ruch, zobacz End-to-end szyfrowanie TLS w Azure App Service.

Konfigurowanie certyfikatów o zakresie lokacji

Flex Consumption wprowadza certyfikaty przypisane do witryny — nowy model, w którym certyfikaty TLS/SSL są przypisane do konkretnej aplikacji funkcji, zamiast być współdzielone między aplikacjami w tym samym obszarze webspace. W poniższej tabeli przedstawiono obsługiwane typy certyfikatów i sposób dodawania każdego z nich do aplikacji funkcji:

Typ certyfikatu Sposób dodawania Wlicza się do
Certyfikat zarządzany usługi App Service Utworzono w portalu dla domeny niestandardowej Limit certyfikatu prywatnego
Certyfikat usługi App Service Zakupione za pośrednictwem Azure, a następnie zaimportowane Limit certyfikatu prywatnego
Certyfikat zaimportowany z Key Vault Zaimportowane z Azure Key Vault Limit certyfikatu prywatnego
Przesłany certyfikat z kluczem prywatnym (.pfx) Przekazane jako plik PFX Limit certyfikatu prywatnego
Przesłany certyfikat publiczny (.cer) Przekazane jako plik CER Limit certyfikatu publicznego

Zagadnienia dotyczące certyfikatów o zakresie lokacji

  • Istniejące aplikacje utworzone przed udostępnieniem tej funkcji nie mają obecnie ścieżki migracji dla certyfikatów. Aby użyć certyfikatów o zakresie witryny, utwórz nową aplikację funkcji Flex Consumption.
  • Obsługa zarządzania certyfikatami o zakresie witryny w interfejsie wiersza polecenia platformy Azure nie jest jeszcze dostępna. W międzyczasie używaj portalu Azure portal lub szablonów ARM/Bicep do zarządzania certyfikatami.
  • Każda aplikacja obsługuje maksymalnie trzy certyfikaty prywatne i trzy certyfikaty publiczne.
  • Certyfikaty prywatne muszą być eksportowane jako plik PFX chroniony hasłem zawierający wszystkie certyfikaty pośrednie i certyfikat główny w łańcuchu certyfikatów.
  • Certyfikaty kryptografii krzywej eliptycznej (ECC) są obsługiwane po przesłaniu w formacie PFX.
  • Ponieważ środowisko Flex Consumption działa w systemie Linux, kod musi ładować certyfikaty ze ścieżek plików, a nie z magazynu certyfikatów Windows. Najpierw wykonaj kroki opisane w artykule Tworzenie certyfikatu dostępnego dla kodu w celu załadowania certyfikatów do środowiska uruchomieniowego. Następnie, aby uzyskać wskazówki dotyczące odczytywania plików certyfikatów z kodu aplikacji, zobacz Load certificates in Linux/Windows containers (Ładowanie certyfikatów w kontenerach systemu Linux/Windows

Dodawanie certyfikatu

Certyfikaty można dodać do aplikacji na kilka sposobów, w zależności od typu certyfikatu. Dodaj bezpłatne certyfikaty zarządzane i Azure bezpośrednio w portalu.

Wybierz jedną z poniższych kart, aby zobaczyć, jak dodać certyfikat zarządzany, prywatny (.pfx), publiczny (.cer) lub certyfikat zarządzany przez usługę Key Vault.

Aby utworzyć i powiązać bezpłatny certyfikat zarządzany dla domeny niestandardowej:

  1. W portalu Azure przejdź do swojej aplikacji funkcyjnej.

  2. W menu po lewej rozwiń Ustawienia i wybierz Domeny niestandardowe.

  3. Wybierz pozycję Dodaj domenę niestandardową.

  4. W obszarze Certyfikat TLS/SSL wybierz pozycję Certyfikat zarządzany usługi App Service.

  5. W obszarze Typ protokołu TLS/SSL wybierz pozycję SNI SSL.

  6. Ukończ walidację domeny i wybierz pozycję Dodaj.

    Zarządzany certyfikat jest tworzony i powiązany automatycznie z domeną niestandardową. Wystawienie certyfikatu może potrwać do 10 minut.

Udostępnij certyfikat dla swojego kodu

Po dodaniu certyfikatu należy jawnie udostępnić go kodowi funkcji.

  1. W portalu Azure przejdź do swojej aplikacji funkcyjnej.

  2. W menu po lewej stronie rozwiń węzeł Ustawienia i wybierz pozycję Certyfikaty.

  3. Wybierz pozycję Przynieś własne certyfikaty (pfx) lub Certyfikaty kluczy publicznych (.cer).

  4. Wybierz pozycję ... (wielokropek) obok certyfikatu, który chcesz udostępnić, a następnie wybierz pozycję Udostępnij kod aplikacji.

Po włączeniu opcji Dostępne dla kodu aplikacji platforma ładuje certyfikat do środowiska uruchomieniowego we wszystkich wystąpieniach jako plik.

Pliki certyfikatów są nazwane odciskiem palca i umieszczane w następujących katalogach:

Typ certyfikatu Path
Certyfikaty publiczne (.cer) /var/ssl/certs
Certyfikaty prywatne (pfx) /var/ssl/private

Odnawianie lub aktualizowanie certyfikatu

Bezpłatne certyfikaty zarządzane są automatycznie odnawiane przez platformę. W przypadku wszystkich innych certyfikatów sposób aktualizowania wygasającego certyfikatu zależy od źródła certyfikatu:

  • Certyfikaty zaimportowane z usługi Key Vault: Po odnowieniu certyfikatu w usłudze Key Vault zadanie platformy działające w tle automatycznie synchronizuje zaktualizowany certyfikat z Twoją aplikacją funkcji w ciągu 24 godzin. Nowa wersja certyfikatu jest wczytywana do wszystkich instancji bez wykonywania jakichkolwiek ręcznych czynności.

  • Przesłane certyfikaty: prześlij nowy certyfikat, a następnie udostępnij go kodowi swojej aplikacji. Jeśli kod odwołuje się do certyfikatu za pomocą odcisku palca, zaktualizuj wszystkie odwołania do odcisku palca w ustawieniach kodu lub aplikacji.

Wyświetlanie aktualnie obsługiwanych regionów

Aby wyświetlić listę regionów, które obecnie obsługują plany Flex Consumption, zobacz:

  1. Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure.

  2. Użyj polecenia az functionapp list-flexconsumption-locations aby przejrzeć listę regionów, które obecnie obsługują konsumpcję Flex w kolejności alfabetycznej.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    

Podczas tworzenia aplikacji w portalu Azure lub przy użyciu Visual Studio Code lista regionów wyklucza obecnie nieobsługiwane regiony.

Monitorowanie aplikacji na platformie Azure

Usługa Azure Monitor udostępnia te odrębne zestawy metryk, które ułatwiają lepsze zrozumienie sposobu działania aplikacji funkcji na platformie Azure:

  • Metryki platformy: udostępnia szczegółowe informacje na poziomie infrastruktury
  • Application Insights: udostępnia szczegółowe informacje na poziomie kodu, w tym ślady i dzienniki błędów.

Jeśli włączysz usługę Application Insights w aplikacji, możesz:

  • Śledź szczegółowe czasy wykonywania i zależności
  • Monitorowanie wydajności poszczególnych funkcji
  • Analizowanie błędów i wyjątków
  • Korelowanie metryk platformy z zachowaniem aplikacji przy użyciu zapytań niestandardowych

Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions.

Obsługiwane metryki

Uruchom ten skrypt, aby wyświetlić wszystkie metryki platformy, które są obecnie dostępne dla aplikacji:

appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
az monitor metrics list-definitions --resource $appId --query "[].{Name:name.localizedValue,Value:name.value}" -o table

W tym przykładzie zastąp wartości <RESOURCE_GROUP> i <APP_NAME> nazwą grupy zasobów i aplikacji funkcji. Ten skrypt pobiera w pełni kwalifikowany identyfikator aplikacji i zwraca dostępne metryki platformy w tabeli.

Wyświetlanie metryk

Bieżące metryki można przeglądać w witrynie Azure Portal lub przy użyciu interfejsu wiersza polecenia platformy Azure.

W witrynie Azure Portal można również tworzyć alerty metryk i przypinać wykresy oraz inne raporty do pulpitów nawigacyjnych w portalu.

Użyj tego skryptu, aby wygenerować raport bieżących metryk dla aplikacji:

appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)

echo -e "\nAlways-ready and on-demand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionCount" --interval PT1H --output table

echo -e "\nExecution units (MB-ms) in always-ready and on-demand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionUnits" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionUnits" --interval PT1H --output table

echo -e "\nAlways-ready resource utilization..."
az monitor metrics list --resource $appId --metric "AlwaysReadyUnits" --interval PT1H --output table

echo -e "\nMemory utilization..."
az monitor metrics list --resource $appId --metric "AverageMemoryWorkingSet" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "MemoryWorkingSet" --interval PT1H --output table

echo -e "\nInstance count and CPU utilization..."
az monitor metrics list --resource $appId --metric "InstanceCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "CpuPercentage" --interval PT1H --output table

Aby dowiedzieć się więcej o metrykach usługi Azure Functions, zobacz Monitorowanie usługi Azure Functions.

Wyświetlanie dzienników

Po połączeniu aplikacji z usługą Application Insights możesz lepiej analizować wydajność aplikacji i rozwiązywać problemy podczas wykonywania. W zasobie usługi Application Insights dla aplikacji:

  • Użyj funkcji Wydajność , aby analizować czasy odpowiedzi i zależności.
  • Użyj opcji Błędy , aby zidentyfikować wszelkie błędy występujące po migracji.
  • Twórz niestandardowe zapytania w Logs, aby analizować działanie funkcji.

Na przykład użyj tego zapytania, aby porównać współczynniki powodzenia według wystąpienia:

Użyj tego zapytania, aby porównać wskaźniki skuteczności według instancji.

requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart

Użyj tego zapytania, aby przeanalizować liczbę wystąpień, które aktywnie przetwarzają funkcję:

let _startTime = ago(20m); //Adjust start time as needed
let _endTime = now(); //Adjust end time as needed
let bins = 1s; //Adjust bin as needed - this will give per second results
requests
| where operation_Name == 'EventHubsTrigger' //Replace with the name of the function in the function app that you are analyzing
| where timestamp between(_startTime .. _endTime)
| make-series dcount(cloud_RoleInstance) default=0 on timestamp from _startTime to _endTime step bins
| render columnchart

Wyświetlanie kosztów

Ponieważ możesz dostosować wydajność i koszty operacyjne aplikacji, ważne jest, aby śledzić koszty związane z uruchamianiem aplikacji w planie Flex Consumption.

Aby wyświetlić bieżące koszty:

  1. Na stronie aplikacji funkcji w portalu Azure wybierz link grupy zasobów.

  2. Na stronie grupy zasobów wybierz Cost Management>Analiza kosztów.

  3. Przejrzyj bieżące koszty i trajektorię kosztów samej aplikacji.

  4. Opcjonalnie wybierz pozycję Cost Management, następnie >, a potem + Dodaj, aby utworzyć nowy alert dla aplikacji.

Dostrajanie aplikacji

Plan Flex Consumption oferuje kilka ustawień, które można dostosować, aby uczynić bardziej precyzyjną wydajność aplikacji. Rzeczywista wydajność i koszty mogą się różnić w zależności od wzorców i konfiguracji obciążeń specyficznych dla aplikacji. Na przykład wyższe rozmiary wystąpień pamięci mogą zwiększyć wydajność operacji intensywnie korzystających z pamięci, ale przy wyższym koszcie w przeliczeniu na aktywny okres.

Poniżej przedstawiono kilka korekt, które można dostosować w celu dostosowania wydajności i kosztów: