Sdílet prostřednictvím


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

Poznámka:

Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.

Tento článek se vztahuje na: ❎ Basic/Standard ✅ Enterprise

V tomto rychlém startu se dozvíte, jak monitorovat aplikace s plánem Azure Spring Apps Enterprise pomocí Application Insights a Log Analytics.

Poznámka:

Kompletní úlohy Spring můžete monitorovat pomocí libovolného nástroje a platformy, včetně App Insights, 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 Application Insights musíte zadat ručně připojovací řetězec aplikacím Order Service (ASP.NET core) a Cart Service (python). Následující pokyny popisují, jak tuto připojovací řetězec poskytnout a zvýšit vzorkovací frekvenci do Application Insights.

Poznámka:

V současné době podporují instrumentaci Application Insights jenom 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řipojovací řetězec Application Insights a nastavte ho 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 Application Insights, abyste zvýšili 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:

Snímek obrazovky webu Azure Portal s ukázkovým výstupem ze všech dotazů na protokoly aplikací

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:

Snímek obrazovky webu Azure Portal s ukázkovým výstupem z protokolů aplikací služby Katalogu

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:

Snímek obrazovky webu Azure Portal znázorňující ukázkový výstup z protokolů příchozího přenosu dat

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:

Snímek obrazovky webu Azure Portal znázorňující ukázkový výstup z protokolů brány Spring Cloud

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:

Snímek obrazovky webu Azure Portal znázorňující ukázkový výstup z protokolů registru služeb

Použití trasování

Na webu Azure Portal otevřete instanci Application Insights vytvořenou službou Azure Spring Apps a začněte monitorovat aplikace Spring Boot. Instanci Application Insights 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:

Snímek obrazovky webu Azure Portal znázorňující mapu aplikace Aplikace Azure lication Insights

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

Snímek obrazovky webu Azure Portal s podoknem Výkon Aplikace Azure lication 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:

Snímek obrazovky webu Azure Portal znázorňující část Závislosti v podokně Výkon Aplikace Azure lication 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:

Snímek obrazovky webu Azure Portal zobrazující část Role v podokně Výkon Aplikace Azure lication Insights

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

Snímek obrazovky webu Azure Portal znázorňující komplexní transakci volání S Q L

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:

Snímek obrazovky webu Azure Portal znázorňující graf selhání aplikací

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:

Snímek obrazovky webu Azure Portal zobrazující metriky v průběhu času

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.

Snímek obrazovky znázorňující vlastní metriky instrumentované mikrometrem

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:

Snímek obrazovky zobrazující živé metriky všech aplikací

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ů: