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
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Vysvětlení a splnění části Požadavky plánu Enterprise na Azure Marketplace
- Azure CLI verze 2.45.0 nebo vyšší.
- Git
- Rozšíření plánu Azure Spring Apps Enterprise Pomocí následujícího příkazu odeberte předchozí verze a nainstalujte nejnovější rozšíření plánu Enterprise. Pokud jste rozšíření nainstalovali dříve
spring-cloud
, odinstalujte ho, abyste se vyhnuli neshodám konfigurace a verzí.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Prostředky k monitorování, například prostředky vytvořené v následujících rychlých startech:
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.
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.
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}
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}
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
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:
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:
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:
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:
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:
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:
Přejděte do podokna Výkon , které bude vypadat podobně jako na následujícím snímku obrazovky:
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:
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:
Výběrem volání SQL zobrazíte komplexní transakci v kontextu, podobně jako na následujícím snímku obrazovky:
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:
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:
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.
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:
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ů: