Rychlý start: Kompletní monitorování aplikací

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

Tento článek se vztahuje na:❌ Basic/Standard ✔️ Enterprise

V tomto rychlém startu se dozvíte, jak monitorovat aplikace, na kterých běží plán Azure Spring Apps Enterprise, pomocí aplikačních Přehledy a Log Analytics.

Poznámka:

Kompletní úlohy Spring můžete monitorovat pomocí libovolného nástroje a platformy podle vašeho výběru, včetně app Přehledy, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic nebo Splunk. Další informace naleznete v části Práce s dalšími monitorovacími nástroji dále v tomto článku.

Požadavky

Aktualizace aplikací

Aplikaci musíte zadat ručně Přehledy připojovací řetězec do aplikací služby objednávek (ASP.NET jádra) a služby košíku (python). Následující pokyny popisují, jak tuto připojovací řetězec poskytnout a zvýšit vzorkovací frekvenci Přehledy aplikace.

Poznámka:

V současné době podporují instrumentaci aplikací Přehledy aplikace pouze buildpacky pro aplikace Java a NodeJS.

  1. Pomocí následujících příkazů vytvořte proměnné, které budou obsahovat názvy prostředků. Zástupné symboly nezapomeňte nahradit vlastními hodnotami. Název instance služby Azure Spring Apps musí mít délku 4 až 32 znaků a může obsahovat jenom malá písmena, číslice a pomlčky. První znak názvu služby musí být písmeno a poslední znak musí být písmeno nebo číslo.

    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>"
    

    Poznámka:

    Ve výchozím nastavení je APP_INSIGHTS_NAME stejný jako AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Pomocí následujících příkazů načtěte Přehledy připojovací řetězec aplikace a nastavte ji ve službě 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. Pomocí následujícího příkazu aktualizujte vzorkovací frekvenci pro vazbu Přehledy aplikace, aby se zvýšilo množství dostupných dat:

    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. Pomocí následujících příkazů restartujte aplikace, aby se znovu načítá konfigurace:

    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. Pokud jste nakonfigurovali jednotné přihlašování, pomocí následujících příkazů restartujte aplikace a znovu načtěte konfiguraci aplikace služby Identity Service:

    az spring app restart \
        --resource-group ${RESOURCE_GROUP} \
        --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
        --name identity-service
    

    U aplikací Java a NodeJS se restartování umožní, aby se nová vzorkovací frekvence projevila. U aplikací mimo Javu jim restartování umožní přístup k nově přidanému instrumentačnímu klíči ze služby Key Vault.

Zobrazení protokolů

Protokoly ve službě Azure Spring Apps můžete zobrazit dvěma způsoby: streamování protokolů v reálném čase na instanci aplikace nebo Log Analytics pro agregované protokoly s pokročilými možnostmi dotazů

Použití streamování protokolů

Vygenerujte provoz v aplikaci tak, že přejdete přes aplikaci, zobrazíte katalog a umístíte objednávky. K průběžnému generování provozu použijte následující příkazy, dokud se nezruší:

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

Pomocí následujícího příkazu získáte nejnovějších 100 řádků protokolů konzoly aplikace z aplikace Katalogová služba:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --lines 100

--follow Přidáním této možnosti můžete z aplikace získat streamování protokolů v reálném čase. K vyzkoušení streamování protokolů pro aplikaci Služby katalogu použijte následující příkaz:

az spring app logs \
    --resource-group ${RESOURCE_GROUP} \
    --name catalog-service \
    --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \
    --follow

Tip

K prozkoumání dalších parametrů a funkcí streamu protokolů můžete použít az spring app logs --help .

Použití Log Analytics

Přejděte na web Azure Portal a otevřete instanci Log Analytics, kterou jste vytvořili. Instanci Log Analytics najdete ve stejné skupině prostředků, ve které jste vytvořili instanci služby Azure Spring Apps.

Na stránce Log Analytics vyberte podokno Protokoly a spusťte některý z následujících ukázkových dotazů pro Azure Spring Apps.

Zadáním a spuštěním následujícího dotazu Kusto zobrazte protokoly aplikace:

AppPlatformLogsforSpring
| where TimeGenerated > ago(24h)
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Tento dotaz vytvoří podobné výsledky jako na následujícím snímku obrazovky:

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

Zadáním a spuštěním následujícího dotazu Kusto zobrazte catalog-service protokoly aplikace:

AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log

Tento dotaz vytvoří podobné výsledky jako na následujícím snímku obrazovky:

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

Zadáním a spuštěním následujícího dotazu Kusto zobrazíte chyby a výjimky vyvolané jednotlivými aplikacemi:

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

Tento dotaz vytvoří podobné výsledky jako na následujícím snímku obrazovky:

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

Zadáním a spuštěním následujícího dotazu Kusto zobrazíte všechna příchozí volání do Azure Spring Apps:

AppPlatformIngressLogs
| project TimeGenerated, RemoteAddr, Host, Request, Status, BodyBytesSent, RequestTime, ReqId, RequestHeaders
| sort by TimeGenerated

Zadáním a spuštěním následujícího dotazu Kusto zobrazte všechny protokoly ze spravované brány Spring Cloud Config Gateway spravované službou Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "SpringCloudGateway"
| project TimeGenerated,Log

Tento dotaz vytvoří podobné výsledky jako na následujícím snímku obrazovky:

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

Zadáním a spuštěním následujícího dotazu Kusto zobrazte všechny protokoly ze spravovaného registru služby Spring Cloud spravovaného službou Azure Spring Apps:

AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log

Tento dotaz vytvoří podobné výsledky jako na následujícím snímku obrazovky:

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

Použití trasování

Na webu Azure Portal otevřete instanci aplikace Přehledy vytvořenou službou Azure Spring Apps a začněte monitorovat aplikace Spring Boot. Instanci Přehledy aplikace najdete ve stejné skupině prostředků, ve které jste vytvořili instanci služby Azure Spring Apps.

Přejděte do podokna Mapa aplikace, které bude vypadat podobně jako na následujícím snímku obrazovky:

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

Přejděte do podokna Výkon , které bude vypadat podobně jako na následujícím snímku obrazovky:

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

Přejděte do podokna Výkon nebo závislosti . Tady vidíte číslo výkonu závislostí, zejména volání SQL, podobně jako na následujícím snímku obrazovky:

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

Přejděte do podokna Výkon/Role . Tady vidíte metriky výkonu jednotlivých instancí nebo rolí, podobně jako na následujícím snímku obrazovky:

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

Výběrem volání SQL zobrazíte komplexní transakci v kontextu, podobně jako na následujícím snímku obrazovky:

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

Přejděte do podokna Selhání nebo výjimky . Tady vidíte kolekci výjimek, podobně jako na následujícím snímku obrazovky:

Screenshot of Azure portal showing application failures graphed.

Zobrazení metrik

Přejděte do podokna Metriky . Tady můžete zobrazit metriky, které přispěly aplikacemi Spring Boot, moduly Spring Cloud a závislostmi. Graf na následujícím snímku obrazovky ukazuje http_server_requests a využitou paměť haldy:

Screenshot of Azure portal showing metrics over time graph.

Spring Boot registruje velký počet základních metrik: JVM, CPU, Tomcat, Logback atd. Automatická konfigurace Spring Boot umožňuje instrumentaci požadavků zpracovávaných aplikací Spring MVC. Kontrolery ProductController REST a PaymentController byly instrumentovány poznámkou @Timed Micrometer na úrovni třídy.

Aplikace acme-catalog má povolenou následující vlastní metriku: @Timedstore.products

Aplikace acem-payment má povolenou následující vlastní metriku: @Timedstore.payment

Tyto vlastní metriky můžete zobrazit v podokně Metriky , jak je znázorněno na následujícím snímku obrazovky.

Screenshot showing custom metrics instrumented by Micrometer.

Přejděte do podokna Živé metriky . Tady můžete vidět živé metriky < na obrazovce s nízkou latencí 1 sekundu, jak je znázorněno na následujícím snímku obrazovky:

Screenshot showing the live metrics of all applications.

Práce s dalšími monitorovacími nástroji

Plán Azure Spring Apps Enterprise podporuje také export metrik do jiných nástrojů, včetně následujících nástrojů:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Další vazby můžete přidat do tvůrce ve službě Tanzu Build Service pomocí následujícího příkazu:

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>

Vyčištění prostředků

Pokud chcete pokračovat v práci s dalšími rychlými starty a kurzy, můžete tyto prostředky ponechat na místě. Pokud už ji nepotřebujete, odstraňte skupinu prostředků, která odstraní prostředky ve skupině prostředků. Pokud chcete odstranit skupinu prostředků pomocí Azure CLI, použijte následující příkazy:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Další kroky

Pokračujte k některému z následujících volitelných rychlých startů: