Szybki start: kompleksowe monitorowanie aplikacji
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy: ❎ Podstawowa/Standardowa ✅ Enterprise
W tym przewodniku Szybki start pokazano, jak monitorować aplikacje z planem Azure Spring Apps Enterprise przy użyciu usługi Application Insights i usługi Log Analytics.
Uwaga
Możesz monitorować kompleksowe obciążenia platformy Spring przy użyciu dowolnego wybranego narzędzia i platformy, w tym usługi App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic lub Splunk. Aby uzyskać więcej informacji, zobacz Praca z innymi narzędziami do monitorowania w dalszej części tego artykułu.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Zapoznaj się z sekcją Wymagania planu Enterprise w witrynie Azure Marketplace i spełnij je.
- Interfejs wiersza polecenia platformy Azure w wersji 2.45.0 lub nowszej.
- Git.
- Rozszerzenie planu Usługi Azure Spring Apps Enterprise. Użyj następującego polecenia, aby usunąć poprzednie wersje i zainstalować najnowsze rozszerzenie planu Enterprise. Jeśli wcześniej zainstalowano
spring-cloud
rozszerzenie, odinstaluj je, aby uniknąć niezgodności konfiguracji i wersji.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Zasoby do monitorowania, takie jak te utworzone w następujących przewodnikach Szybki start:
Aktualizowanie aplikacji
Musisz ręcznie podać parametry połączenia usługi Application Insights do aplikacji Order Service (ASP.NET Core) i Cart Service (Python). W poniższych instrukcjach opisano sposób podawania tego parametry połączenia i zwiększania częstotliwości próbkowania do usługi Application Insights.
Uwaga
Obecnie tylko pakiety buildpack dla aplikacji Java i NodeJS obsługują instrumentację usługi Application Insights.
Utwórz zmienne do przechowywania nazw zasobów przy użyciu następujących poleceń. Pamiętaj, aby zastąpić symbole zastępcze własnymi wartościami. Nazwa wystąpienia usługi Azure Spring Apps musi mieć długość od 4 do 32 znaków i może zawierać tylko małe litery, cyfry i łączniki. Pierwszy znak nazwy usługi musi być literą, a ostatni znak musi być literą lub cyfrą.
export RESOURCE_GROUP="<resource-group-name>" export APP_INSIGHTS_NAME="<app-insights-name>" export KEY_VAULT_NAME="<key-vault-name>" export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME="<Azure-Spring-Apps-service-instance-name>"
Uwaga
Domyślnie APP_INSIGHTS_NAME jest taka sama jak AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.
Użyj następujących poleceń, aby pobrać parametry połączenia usługi Application Insights i ustawić je w usłudze Key Vault:
export CONNECTION_STRING=$(az monitor app-insights component show \ --resource-group ${RESOURCE_GROUP} \ --app ${APP_INSIGHTS_NAME} \ --query "connectionString" \ --output tsv) az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "ApplicationInsights--ConnectionString" \ --value ${CONNECTION_STRING}
Użyj następującego polecenia, aby zaktualizować częstotliwość próbkowania powiązania usługi Application Insights, aby zwiększyć ilość dostępnych danych:
az spring build-service builder buildpack-binding set \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --builder-name default \ --name default \ --type ApplicationInsights \ --properties sampling-rate=100 connection_string=${CONNECTION_STRING}
Użyj następujących poleceń, aby ponownie uruchomić aplikacje w celu ponownego załadowania konfiguracji:
az spring app restart \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --name cart-service az spring app restart \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --name order-service az spring app restart \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --name catalog-service az spring app restart \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --name frontend az spring app restart \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --name payment-service
Jeśli skonfigurowano logowanie jednokrotne, użyj następujących poleceń, aby ponownie uruchomić aplikacje w celu ponownego załadowania konfiguracji aplikacji usługi tożsamości:
az spring app restart \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --name identity-service
W przypadku aplikacji Java i NodeJS ponowne uruchomienie umożliwi zastosowanie nowego współczynnika próbkowania. W przypadku aplikacji innych niż Java ponowne uruchomienie umożliwi im dostęp do nowo dodanego klucza instrumentacji z usługi Key Vault.
Wyświetlanie dzienników
Istnieją dwa sposoby wyświetlenia dzienników w usłudze Azure Spring Apps: przesyłanie strumieniowe dzienników dzienników w czasie rzeczywistym dla wystąpienia aplikacji lub usługi Log Analytics w przypadku zagregowanych dzienników z zaawansowaną możliwością wykonywania zapytań
Korzystanie z przesyłania strumieniowego dzienników
Generuj ruch w aplikacji, przechodząc przez aplikację, wyświetlając katalog i umieszczając zamówienia. Użyj następujących poleceń, aby stale generować ruch do momentu anulowania:
export GATEWAY_URL=$(az spring gateway show \
--resource-group ${RESOURCE_GROUP} \
--service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
--query "properties.url" \
--output tsv)
export GATEWAY_URL=https://${GATEWAY_URL}
cd azure-spring-apps-enterprise/load-test/traffic-generator
./gradlew gatlingRun-com.vmware.acme.simulation.GuestSimulation.java
Użyj następującego polecenia, aby pobrać najnowsze 100 wierszy dzienników konsoli aplikacji z aplikacji usługi katalogu:
az spring app logs \
--resource-group ${RESOURCE_GROUP} \
--name catalog-service \
--service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
--lines 100
--follow
Dodając tę opcję, możesz pobrać przesyłanie strumieniowe dzienników w czasie rzeczywistym z aplikacji. Użyj następującego polecenia, aby spróbować wykonać przesyłanie strumieniowe dzienników dla aplikacji usługi katalogu:
az spring app logs \
--resource-group ${RESOURCE_GROUP} \
--name catalog-service \
--service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
--follow
Napiwek
Aby poznać więcej parametrów i funkcji strumienia dzienników, możesz użyć polecenia az spring app logs --help
.
Korzystanie z usługi Log Analytics
Przejdź do witryny Azure Portal i otwórz utworzone wystąpienie usługi Log Analytics. Wystąpienie usługi Log Analytics można znaleźć w tej samej grupie zasobów, w której utworzono wystąpienie usługi Azure Spring Apps.
Na stronie Log Analytics wybierz okienko Dzienniki i uruchom dowolne z następujących przykładowych zapytań dotyczących usługi Azure Spring Apps.
Wpisz i uruchom następujące zapytanie Kusto, aby wyświetlić dzienniki aplikacji:
AppPlatformLogsforSpring
| where TimeGenerated > ago(24h)
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log
To zapytanie generuje wyniki podobne do tych pokazanych na poniższym zrzucie ekranu:
Wpisz i uruchom następujące zapytanie Kusto, aby wyświetlić catalog-service
dzienniki aplikacji:
AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log
To zapytanie generuje wyniki podobne do tych pokazanych na poniższym zrzucie ekranu:
Wpisz i uruchom następujące zapytanie Kusto, aby zobaczyć błędy i wyjątki zgłaszane przez każdą aplikację:
AppPlatformLogsforSpring
| where Log contains "error" or Log contains "exception"
| extend FullAppName = strcat(ServiceName, "/", AppName)
| summarize count_per_app = count() by FullAppName, ServiceName, AppName, _ResourceId
| sort by count_per_app desc
| render piechart
To zapytanie generuje wyniki podobne do tych pokazanych na poniższym zrzucie ekranu:
Wpisz i uruchom następujące zapytanie Kusto, aby wyświetlić wszystkie wywołania przychodzące do usługi Azure Spring Apps:
AppPlatformIngressLogs
| project TimeGenerated, RemoteAddr, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated
Wpisz i uruchom następujące zapytanie Kusto, aby wyświetlić wszystkie dzienniki z zarządzanej bramy konfiguracji Spring Cloud zarządzanej przez usługę Azure Spring Apps:
AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log
To zapytanie generuje wyniki podobne do tych pokazanych na poniższym zrzucie ekranu:
Wpisz i uruchom następujące zapytanie Kusto, aby wyświetlić wszystkie dzienniki z zarządzanego rejestru Spring Cloud Service Registry zarządzanego przez usługę Azure Spring Apps:
AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log
To zapytanie generuje wyniki podobne do tych pokazanych na poniższym zrzucie ekranu:
Korzystanie ze śledzenia
W witrynie Azure Portal otwórz wystąpienie usługi Application Insights utworzone przez usługę Azure Spring Apps i rozpocznij monitorowanie aplikacji Spring Boot. Wystąpienie usługi Application Insights można znaleźć w tej samej grupie zasobów, w której utworzono wystąpienie usługi Azure Spring Apps.
Przejdź do okienka Mapa aplikacji, które będzie podobne do poniższego zrzutu ekranu:
Przejdź do okienka Wydajność , które będzie podobne do poniższego zrzutu ekranu:
Przejdź do okienka Wydajność/Zależności . W tym miejscu można zobaczyć numer wydajności zależności, szczególnie wywołań SQL, podobnie jak pokazano na poniższym zrzucie ekranu:
Przejdź do okienka Wydajność/Role . W tym miejscu można zobaczyć metryki wydajności dla poszczególnych wystąpień lub ról, podobnie jak pokazano na poniższym zrzucie ekranu:
Wybierz wywołanie SQL, aby wyświetlić kompleksową transakcję w kontekście, podobnie jak pokazano na poniższym zrzucie ekranu:
Przejdź do okienka Błędy/Wyjątki . W tym miejscu można zobaczyć kolekcję wyjątków, podobnie jak pokazano na poniższym zrzucie ekranu:
Wyświetlanie metryk
Przejdź do okienka Metryki . W tym miejscu można zobaczyć metryki dodane przez aplikacje Spring Boot, moduły Spring Cloud i zależności. Na poniższym zrzucie ekranu przedstawiono http_server_requests i użyto pamięci stertowej:
Platforma Spring Boot rejestruje dużą liczbę podstawowych metryk: JVM, CPU, Tomcat, Logback itd.
Automatyczna konfiguracja platformy Spring Boot umożliwia instrumentację żądań obsługiwanych przez platformę Spring MVC.
Kontrolery ProductController
REST i PaymentController
zostały instrumentowane przez adnotację @Timed
Mikrometr na poziomie klasy.
Aplikacja acme-catalog
ma włączoną następującą niestandardową metryki: : @Timedstore.products
Aplikacja acem-payment
ma włączoną następującą niestandardową metryki: : @Timedstore.payment
Te metryki niestandardowe można zobaczyć w okienku Metryki , jak pokazano na poniższym zrzucie ekranu.
Przejdź do okienka Metryki na żywo. W tym miejscu można zobaczyć metryki na żywo na ekranie z małymi opóźnieniami < 1 sekundy, jak pokazano na poniższym zrzucie ekranu:
Praca z innymi narzędziami do monitorowania
Plan usługi Azure Spring Apps Enterprise obsługuje również eksportowanie metryk do innych narzędzi, w tym następujących narzędzi:
- AppDynamics
- ApacheSkyWalking
- Dynatrace
- ElasticAPM
- NewRelic
Aby dodać więcej powiązań do konstruktora w usłudze Tanzu Build Service, użyj następującego polecenia:
az spring build-service builder buildpack-binding create \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--builder-name <builder-name> \
--name <binding-name> \
--type <ApplicationInsights|AppDynamics|ApacheSkyWalking|Dynatrace|ElasticAPM|NewRelic> \
--properties <connection-properties>
--secrets <secret-properties>
Czyszczenie zasobów
Jeśli planujesz kontynuować pracę z kolejnymi przewodnikami Szybki start i samouczkami, możesz pozostawić te zasoby na miejscu. Gdy grupa zasobów nie będzie już potrzebna, usuń grupę zasobów, która usuwa zasoby w grupie zasobów. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następujących poleceń:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Następne kroki
Przejdź do dowolnego z następujących opcjonalnych przewodników Szybki start: