Szybki start: kompleksowe monitorowanie aplikacji

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Ten artykuł dotyczy:❌ Podstawowa/Standardowa ✔️ Enterprise

W tym przewodniku Szybki start pokazano, jak monitorować aplikacje z planem Azure Spring Apps Enterprise przy użyciu Szczegółowe informacje aplikacji 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 aplikacji Szczegółowe informacje, 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

Należy ręcznie podać aplikację Szczegółowe informacje parametry połączenia 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 aplikacji Szczegółowe informacje.

Uwaga

Obecnie tylko pakiety buildpack dla aplikacji Java i NodeJS obsługują instrumentację Szczegółowe informacje aplikacji.

  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ć Szczegółowe informacje parametry połączenia aplikacji i ustawić ją 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 dla powiązania Szczegółowe informacje aplikacji, 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:

Screenshot of Azure portal showing example output from all application logs query.

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:

Screenshot of Azure portal showing example output from Catalog Service application logs.

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:

Screenshot of Azure portal showing example output from the Ingress Logs.

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:

Screenshot of Azure portal showing example output from the Spring Cloud Gateway Logs.

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:

Screenshot of Azure portal showing example output from service registry logs.

Korzystanie ze śledzenia

W witrynie Azure Portal otwórz wystąpienie aplikacji Szczegółowe informacje utworzone przez usługę Azure Spring Apps i rozpocznij monitorowanie aplikacji Spring Boot. Wystąpienie usługi Application Szczegółowe informacje 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:

Screenshot of Azure portal showing the Application Map of Azure Application Insights.

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

Screenshot of Azure portal showing the Performance pane of Azure Application 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:

Screenshot of Azure portal showing the Dependencies section of the Performance pane of Azure Application 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:

Screenshot of Azure portal showing the Roles section of the Performance pane of Azure Application Insights.

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

Screenshot of Azure portal showing the end-to-end transaction of an S Q L call.

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:

Screenshot of Azure portal showing application failures graphed.

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:

Screenshot of Azure portal showing metrics over time graph.

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.

Screenshot showing custom metrics instrumented by Micrometer.

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:

Screenshot showing the live metrics of all applications.

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: