Dela via


Snabbstart: Övervaka program från slutpunkt till slutpunkt

Kommentar

Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.

Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.

Den här artikeln gäller för:❌ Basic/Standard ✔️ Enterprise

Den här snabbstarten visar hur du övervakar appar som kör Azure Spring Apps Enterprise-planen med hjälp av Application Insights och Log Analytics.

Kommentar

Du kan övervaka dina Spring-arbetsbelastningar från slutpunkt till slutpunkt med valfritt verktyg och valfri plattform, inklusive App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic eller Splunk. Mer information finns i Arbeta med andra övervakningsverktyg senare i den här artikeln.

Förutsättningar

Uppdatera program

Du måste ange Application Insights-anslutningssträng manuellt till programmen Order Service (ASP.NET core) och Cart Service (Python). Följande instruktioner beskriver hur du tillhandahåller den här anslutningssträng och ökar samplingsfrekvensen till Application Insights.

Kommentar

För närvarande stöder endast buildpacks för Java- och NodeJS-program Application Insights-instrumentation.

  1. Skapa variabler för att lagra resursnamnen med hjälp av följande kommandon. Se till att ersätta platshållarna med dina egna värden. Namnet på din Azure Spring Apps-tjänstinstans måste vara mellan 4 och 32 tecken långt och får endast innehålla gemener, siffror och bindestreck. Det första tecknet i tjänstnamnet måste vara en bokstav och det sista tecknet måste vara antingen en bokstav eller ett tal.

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

    Kommentar

    Som standard är APP_INSIGHTS_NAME samma som AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Använd följande kommandon för att hämta Application Insights-anslutningssträng och ange den i 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. Använd följande kommando för att uppdatera samplingsfrekvensen för Application Insights-bindningen för att öka mängden tillgängliga data:

    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. Använd följande kommandon för att starta om program för att läsa in konfigurationen igen:

    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. Om du har konfigurerat enkel inloggning använder du följande kommandon för att starta om program för att läsa in appkonfigurationen för identitetstjänsten igen:

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

    För Java- och NodeJS-programmen tillåter omstart att den nya samplingsfrekvensen börjar gälla. För icke-Java-program gör omstart att de kan komma åt den nyligen tillagda instrumentationsnyckeln från Nyckelvalvet.

Visa loggar

Det finns två sätt att se loggar på Azure Spring Apps: loggströmning av realtidsloggar per appinstans eller Log Analytics för aggregerade loggar med avancerad frågefunktion

Använda loggströmning

Generera trafik i programmet genom att flytta genom programmet, visa katalogen och göra beställningar. Använd följande kommandon för att generera trafik kontinuerligt tills den avbryts:

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

Använd följande kommando för att hämta de senaste 100 raderna med programkonsolloggar från katalogtjänstprogrammet:

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

Genom att --follow lägga till alternativet kan du hämta loggströmning i realtid från en app. Använd följande kommando för att prova loggströmning för katalogtjänstprogrammet:

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

Dricks

Du kan använda az spring app-loggar --help för att utforska fler parametrar och loggströmsfunktioner.

Använda Log Analytics

Gå till Azure Portal och öppna Log Analytics-instansen som du skapade. Du hittar Log Analytics-instansen i samma resursgrupp där du skapade Azure Spring Apps-tjänstinstansen.

På sidan Log Analytics väljer du fönstret Loggar och kör någon av följande exempelfrågor för Azure Spring Apps.

Skriv och kör följande Kusto-fråga för att se programloggar:

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

Den här frågan ger resultat som liknar de som visas på följande skärmbild:

Skärmbild av Azure Portal som visar exempelutdata från alla programloggfrågor.

Skriv och kör följande Kusto-fråga för att se catalog-service programloggar:

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

Den här frågan ger resultat som liknar de som visas på följande skärmbild:

Skärmbild av Azure Portal som visar exempelutdata från katalogtjänstprogramloggar.

Skriv och kör följande Kusto-fråga för att se fel och undantag som genereras av varje app:

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

Den här frågan ger resultat som liknar de som visas på följande skärmbild:

Skärmbild av Azure Portal som visar exempelutdata från ingressloggarna.

Skriv och kör följande Kusto-fråga för att se alla inkommande anrop till Azure Spring Apps:

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

Skriv och kör följande Kusto-fråga för att se alla loggar från den hanterade Spring Cloud Config Gateway som hanteras av Azure Spring Apps:

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

Den här frågan ger resultat som liknar de som visas på följande skärmbild:

Skärmbild av Azure Portal som visar exempelutdata från Spring Cloud Gateway-loggarna.

Skriv och kör följande Kusto-fråga för att se alla loggar från det hanterade Spring Cloud Service Registry som hanteras av Azure Spring Apps:

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

Den här frågan ger resultat som liknar de som visas på följande skärmbild:

Skärmbild av Azure Portal som visar exempelutdata från tjänstregisterloggar.

Använda spårning

I Azure Portal öppnar du Application Insights-instansen som skapats av Azure Spring Apps och börjar övervaka Spring Boot-program. Du hittar Application Insights-instansen i samma resursgrupp där du skapade en Azure Spring Apps-tjänstinstans.

Gå till fönstret Programkarta , som liknar följande skärmbild:

Skärmbild av Azure Portal som visar programkartan för Azure Application Insights.

Gå till fönstret Prestanda , som liknar följande skärmbild:

Skärmbild av Azure Portal som visar prestandafönstret i Azure Application Insights.

Gå till fönstret Prestanda/beroenden . Här kan du se prestandanumret för beroenden, särskilt SQL-anrop, liknande det som visas på följande skärmbild:

Skärmbild av Azure Portal som visar avsnittet Beroenden i fönstret Prestanda i Azure Application Insights.

Gå till fönstret Prestanda/Roller . Här kan du se prestandamåtten för enskilda instanser eller roller, ungefär som i följande skärmbild:

Skärmbild av Azure Portal som visar avsnittet Roller i fönstret Prestanda i Azure Application Insights.

Välj ett SQL-anrop för att se transaktionen från slutpunkt till slutpunkt i kontext, ungefär som i följande skärmbild:

Skärmbild av Azure Portal som visar transaktionen från slutpunkt till slutpunkt för ett S Q L-anrop.

Gå till fönstret Fel/undantag . Här kan du se en samling undantag som liknar vad som visas i följande skärmbild:

Skärmbild av Azure Portal som visar programfel i grafen.

Visa mått

Gå till fönstret Mått . Här kan du se mått som har bidragit med Spring Boot-appar, Spring Cloud-moduler och beroenden. Diagrammet i följande skärmbild visar http_server_requests och Heap Memory Used:

Skärmbild av Azure Portal som visar mått över tidsdiagram.

Spring Boot registrerar ett stort antal kärnmått: JVM, CPU, Tomcat, Logback och så vidare. Den automatiska Spring Boot-konfigurationen möjliggör instrumentering av begäranden som hanteras av Spring MVC. REST-styrenheterna ProductController och PaymentController har instrumenterats av @Timed mikrometerkommentaren på klassnivå.

Programmet acme-catalog har följande anpassade mått aktiverat: : @Timedstore.products

Programmet acem-payment har följande anpassade mått aktiverat: : @Timedstore.payment

Du kan se dessa anpassade mått i fönstret Mått , som du ser i följande skärmbild.

Skärmbild som visar anpassade mått som instrumenterats av Micrometer.

Gå till fönstret Live metrics (Live Metrics ). Här kan du se livemått på skärmen med korta svarstider < 1 sekund, som du ser i följande skärmbild:

Skärmbild som visar live-mått för alla program.

Arbeta med andra övervakningsverktyg

Azure Spring Apps Enterprise-planen stöder också export av mått till andra verktyg, inklusive följande verktyg:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Du kan lägga till fler bindningar till en byggare i Tanzu Build Service med hjälp av följande kommando:

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>

Rensa resurser

Om du planerar att fortsätta arbeta med efterföljande snabbstarter och självstudier kanske du vill lämna dessa resurser på plats. Ta bort resursgruppen när den inte längre behövs, vilket tar bort resurserna i resursgruppen. Om du vill ta bort resursgruppen med hjälp av Azure CLI använder du följande kommandon:

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

Nästa steg

Fortsätt till någon av följande valfria snabbstarter: