Quickstart: Toepassingen end-to-end bewaken

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op:❌ Basic/Standard ✔️ Enterprise

In deze quickstart ziet u hoe u apps bewaakt waarop het Azure Spring Apps Enterprise-plan wordt uitgevoerd met behulp van Application Insights en Log Analytics.

Notitie

U kunt uw Spring-workloads end-to-end bewaken met elk hulpprogramma en platform van uw keuze, waaronder App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic of Splunk. Zie Werken met andere bewakingshulpprogramma's verderop in dit artikel voor meer informatie.

Vereisten

Toepassingen bijwerken

U moet de Application Insights-verbindingsreeks handmatig verstrekken aan de toepassingen Order Service (ASP.NET core) en Cart Service (Python). In de volgende instructies wordt beschreven hoe u deze verbindingsreeks opgeeft en hoe u de steekproeffrequentie verhoogt naar Application Insights.

Notitie

Momenteel ondersteunen alleen de buildpacks voor Java- en NodeJS-toepassingen Application Insights-instrumentatie.

  1. Maak variabelen voor het opslaan van de resourcenamen met behulp van de volgende opdrachten. Vervang de tijdelijke aanduidingen door uw eigen waarden. De naam van uw Azure Spring Apps-service-exemplaar moet tussen 4 en 32 tekens lang zijn en mag alleen kleine letters, cijfers en afbreekstreepjes bevatten. Het eerste teken van de servicenaam moet een letter zijn en het laatste teken moet een letter of een cijfer zijn.

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

    Notitie

    De APP_INSIGHTS_NAME is standaard hetzelfde als de AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Gebruik de volgende opdrachten om de Application Insights-verbindingsreeks op te halen en in Key Vault in te stellen:

    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. Gebruik de volgende opdracht om de samplingfrequentie voor de Application Insights-binding bij te werken om de beschikbare hoeveelheid gegevens te verhogen:

    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. Gebruik de volgende opdrachten om toepassingen opnieuw te starten om de configuratie opnieuw te laden:

    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. Als u eenmalige aanmelding hebt geconfigureerd, gebruikt u de volgende opdrachten om toepassingen opnieuw te starten om de configuratie van identity-service-apps opnieuw te laden:

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

    Voor de Java- en NodeJS-toepassingen kan het opnieuw opstarten de nieuwe steekproeffrequentie van kracht worden. Voor de niet-Java-toepassingen is het opnieuw opstarten mogelijk om toegang te krijgen tot de zojuist toegevoegde Instrumentatiesleutel vanuit de Key Vault.

Logboeken weergeven

Er zijn twee manieren om logboeken te bekijken in Azure Spring Apps: logboekstreaming van realtime logboeken per app-exemplaar of Log Analytics voor geaggregeerde logboeken met geavanceerde querymogelijkheden

Logboekstreaming gebruiken

Genereer verkeer in de toepassing door de toepassing te doorlopen, de catalogus weer te geven en orders te plaatsen. Gebruik de volgende opdrachten om continu verkeer te genereren totdat het is geannuleerd:

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

Gebruik de volgende opdracht om de meest recente 100 regels met toepassingsconsolelogboeken op te halen uit de Catalogusservicetoepassing:

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

Door de --follow optie toe te voegen, kunt u realtime logboekstreaming krijgen vanuit een app. Gebruik de volgende opdracht om logboekstreaming te proberen voor de Catalogusservicetoepassing:

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

Tip

U kunt az spring app-logboeken --help gebruiken om meer parameters en logboekstreamfunctionaliteiten te verkennen.

Log Analytics gebruiken

Navigeer naar Azure Portal en open het Log Analytics-exemplaar dat u hebt gemaakt. U vindt het Log Analytics-exemplaar in dezelfde resourcegroep waar u het Azure Spring Apps-service-exemplaar hebt gemaakt.

Selecteer op de pagina Log Analytics het deelvenster Logboeken en voer een van de volgende voorbeeldquery's uit voor Azure Spring Apps.

Typ en voer de volgende Kusto-query uit om toepassingslogboeken te bekijken:

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

Deze query produceert resultaten die vergelijkbaar zijn met de resultaten die worden weergegeven in de volgende schermopname:

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

Typ en voer de volgende Kusto-query uit om toepassingslogboeken te bekijken catalog-service :

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

Deze query produceert resultaten die vergelijkbaar zijn met de resultaten die worden weergegeven in de volgende schermopname:

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

Typ en voer de volgende Kusto-query uit om fouten en uitzonderingen te zien die door elke app zijn gegenereerd:

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

Deze query produceert resultaten die vergelijkbaar zijn met de resultaten die worden weergegeven in de volgende schermopname:

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

Typ en voer de volgende Kusto-query uit om alle inkomende aanroepen naar Azure Spring Apps weer te geven:

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

Typ en voer de volgende Kusto-query uit om alle logboeken van de beheerde Spring Cloud-configuratiegateway te bekijken die wordt beheerd door Azure Spring Apps:

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

Deze query produceert resultaten die vergelijkbaar zijn met de resultaten die worden weergegeven in de volgende schermopname:

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

Typ en voer de volgende Kusto-query uit om alle logboeken uit het beheerde Spring Cloud Service Registry te zien dat wordt beheerd door Azure Spring Apps:

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

Deze query produceert resultaten die vergelijkbaar zijn met de resultaten die worden weergegeven in de volgende schermopname:

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

Tracering gebruiken

Open in Azure Portal het Application Insights-exemplaar dat is gemaakt door Azure Spring Apps en begin met het bewaken van Spring Boot-toepassingen. U vindt het Application Insights-exemplaar in dezelfde resourcegroep waar u een Azure Spring Apps-service-exemplaar hebt gemaakt.

Navigeer naar het deelvenster Toepassingsoverzicht , dat vergelijkbaar is met de volgende schermopname:

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

Navigeer naar het deelvenster Prestaties , die vergelijkbaar is met de volgende schermopname:

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

Navigeer naar het deelvenster Prestaties/afhankelijkheden . Hier ziet u het prestatienummer voor afhankelijkheden, met name SQL-aanroepen, vergelijkbaar met wat wordt weergegeven in de volgende schermopname:

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

Navigeer naar het deelvenster Prestaties/rollen . Hier ziet u de metrische prestatiegegevens voor afzonderlijke exemplaren of rollen, vergelijkbaar met wat wordt weergegeven in de volgende schermopname:

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

Selecteer een SQL-aanroep om de end-to-end transactie in context weer te geven, vergelijkbaar met wat wordt weergegeven in de volgende schermopname:

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

Navigeer naar het deelvenster Fouten/Uitzonderingen . Hier ziet u een verzameling uitzonderingen, vergelijkbaar met wat wordt weergegeven in de volgende schermopname:

Screenshot of Azure portal showing application failures graphed.

Metrische gegevens bekijken

Navigeer naar het deelvenster Metrische gegevens . Hier ziet u metrische gegevens die zijn bijgedragen door Spring Boot-apps, Spring Cloud-modules en afhankelijkheden. In de grafiek in de volgende schermopname ziet u http_server_requests en Heap Memory Used:

Screenshot of Azure portal showing metrics over time graph.

Spring Boot registreert een groot aantal metrische kerngegevens: JVM, CPU, Tomcat, Logback, enzovoort. Met de automatische configuratie van Spring Boot kunt u de instrumentatie van aanvragen die worden verwerkt door Spring MVC. De REST-controllers ProductController en PaymentController zijn geïnstrueerd door de @Timed micrometeraantekening op klasseniveau.

De acme-catalog toepassing heeft de volgende aangepaste metrische gegevens ingeschakeld: @Timedstore.products

De acem-payment toepassing heeft de volgende aangepaste metrische gegevens ingeschakeld: @Timedstore.payment

U kunt deze aangepaste metrische gegevens zien in het deelvenster Metrische gegevens , zoals wordt weergegeven in de volgende schermopname.

Screenshot showing custom metrics instrumented by Micrometer.

Navigeer naar het deelvenster Live Metrics . Hier ziet u live metrische gegevens op het scherm met een lage latentie < van 1 seconde, zoals wordt weergegeven in de volgende schermopname:

Screenshot showing the live metrics of all applications.

Werken met andere bewakingshulpprogramma's

Het Azure Spring Apps Enterprise-abonnement biedt ook ondersteuning voor het exporteren van metrische gegevens naar andere hulpprogramma's, waaronder de volgende hulpprogramma's:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

U kunt meer bindingen toevoegen aan een opbouwfunctie in Tanzu Build Service met behulp van de volgende opdracht:

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>

Resources opschonen

Als u van plan bent om verder te gaan met volgende snelstarts en zelfstudies, kunt u deze resources het beste intact laten. Als u de resourcegroep niet meer nodig hebt, verwijdert u deze. Hierdoor worden ook de resources in de resourcegroep verwijderd. Als u de resourcegroep wilt verwijderen met behulp van Azure CLI, gebruikt u de volgende opdrachten:

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

Volgende stappen

Ga door naar een van de volgende optionele quickstarts: