Udostępnij za pośrednictwem


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

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.

  1. 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.

  2. 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}
    
  3. 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}
    
  4. 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
    
  5. 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:

Zrzut ekranu witryny Azure Portal przedstawiający przykładowe dane wyjściowe ze wszystkich zapytań dzienników aplikacji.

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:

Zrzut ekranu witryny Azure Portal przedstawiający przykładowe dane wyjściowe z dzienników aplikacji usługi katalogu.

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:

Zrzut ekranu witryny Azure Portal przedstawiający przykładowe dane wyjściowe z dzienników ruchu przychodzącego.

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:

Zrzut ekranu witryny Azure Portal przedstawiający przykładowe dane wyjściowe z dzienników usługi Spring Cloud Gateway.

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:

Zrzut ekranu witryny Azure Portal przedstawiający przykładowe dane wyjściowe z dzienników rejestru usług.

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:

Zrzut ekranu witryny Azure Portal przedstawiający mapę aplikacji aplikacja systemu Azure Insights.

Przejdź do okienka Wydajność , które będzie podobne do poniższego zrzutu ekranu:

Zrzut ekranu witryny Azure Portal przedstawiający okienko Wydajność aplikacja systemu Azure Insights.

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:

Zrzut ekranu witryny Azure Portal przedstawiający sekcję Zależności w okienku Wydajność aplikacja systemu Azure Insights.

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:

Zrzut ekranu witryny Azure Portal przedstawiający sekcję Role w okienku Wydajność aplikacja systemu Azure Insights.

Wybierz wywołanie SQL, aby wyświetlić kompleksową transakcję w kontekście, podobnie jak pokazano na poniższym zrzucie ekranu:

Zrzut ekranu witryny Azure Portal przedstawiający kompleksową transakcję wywołania S Q L.

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:

Zrzut ekranu witryny Azure Portal przedstawiający wykres błędów aplikacji.

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:

Zrzut ekranu witryny Azure Portal przedstawiający metryki na wykresie czasu.

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.

Zrzut ekranu przedstawiający metryki niestandardowe instrumentowane przez mikrometr.

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:

Zrzut ekranu przedstawiający metryki na żywo wszystkich aplikacji.

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: