Schnellstart: End-to-End-Überwachung von Anwendungen

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei (3) Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für:❌ Basic/Standard ✔️ Enterprise

Diese Schnellstartanleitung zeigt Ihnen, wie Sie Anwendungen, die Azure Spring Apps im Enterprise-Plan ausführen, mithilfe von Application Insights und Log Analytics überwachen.

Hinweis

Für die End-to-End-Überwachung Ihrer Spring-Workloads können Sie ein Tool und eine Plattform Ihrer Wahl einsetzen, einschließlich App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic oder Splunk. Weitere Informationen finden Sie unter Arbeiten mit anderen Überwachungstools weiter unten in diesem Artikel.

Voraussetzungen

Aktualisieren von Anwendungen

Sie müssen den Anwendungen „Order Service“ (ASP.NET Core) und „Cart Service“ (Python) die Verbindungszeichenfolge für Application Insights manuell bereitstellen. In den folgenden Anweisungen wird beschrieben, wie Sie diese Verbindungszeichenfolge bereitstellen und die Samplingrate für Application Insights erhöhen.

Hinweis

Derzeit unterstützen nur die Buildpacks für Java- und NodeJS-Anwendungen die Application Insights Instrumentierung.

  1. Erstellen Sie Variablen zur Aufnahme der Ressourcennamen, indem Sie die folgenden Befehle verwenden. Ersetzen Sie die Platzhalter durch Ihre eigenen Werte. Der Name Ihrer Azure Spring Apps-Dienstinstanz muss zwischen 4 und 32 Zeichen lang sein und darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten. Das erste Zeichen des Dienstnamens muss ein Buchstabe und das letzte Zeichen entweder ein Buchstabe oder eine Ziffer sein.

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

    Hinweis

    Standardmäßig ist die APP_INSIGHTS_NAME mit dem AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME identisch.

  2. Verwenden Sie die folgenden Befehle, um die Verbindungszeichenfolge für Application Insights abzurufen und in Key Vault festzulegen:

    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. Mit dem folgenden Befehl aktualisieren Sie die Samplingrate für die Application Insights Bindung, um die verfügbare Datenmenge zu erhöhen:

    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. Mit den folgenden Befehlen starten Sie Anwendungen neu, um die Konfiguration neu zu 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. Wenn Sie einmaliges Anmelden konfiguriert haben, verwenden Sie die folgenden Befehle, um Anwendungen neu zu starten, um die Konfiguration der Identitäts-Service-App neu zu laden:

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

    Für die Java- und NodeJS-Anwendungen wird die neue Samplingrate nach dem Neustart wirksam. Nicht-Java-Anwendungen ermöglicht der Neustart den Zugriff auf den neu hinzugefügten Instrumentierungsschlüssel aus dem Key Vault.

Anzeigen von Protokollen

Es gibt zwei Möglichkeiten, um Protokolle in Azure Spring Apps anzuzeigen: Protokollstreaming von Echtzeitprotokollen für jede App-Instanz oder Log Analytics für aggregierte Protokolle mit erweiterter Abfragefunktion.

Verwenden des Protokollstreamings

Generieren Sie Datenverkehr in der Anwendung, indem Sie sich in der Anwendung bewegen, den Katalog anzeigen und Bestellungen aufgeben. Verwenden Sie die folgenden Befehle, um kontinuierlich Datenverkehr zu generieren, bis der Vorgang abgebrochen wird:

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

Verwenden Sie den folgenden Befehl, um die letzten 100 Zeilen der Anwendungskonsolenprotokolle aus der Anwendung „Catalog Service“ abzurufen:

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

Durch Hinzufügen der Option --follow können Sie Echtzeit-Protokollstreaming aus einer App erzielen. Verwenden Sie den folgenden Befehl, um das Protokollstreaming für die Anwendung „Catalog Service“ zu testen:

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

Tipp

Sie können „az spring app logs --help“ verwenden, um weitere Parameter und Funktionen des Protokollstreams zu erkunden.

Verwenden von Log Analytics

Navigieren Sie zum Azure-Portal, und öffnen Sie die von Ihnen erstellte Log Analytics-Instanz. Sie finden die Log Analytics-Instanz in derselben Ressourcengruppe, in der Sie die Azure Spring Apps-Dienstinstanz erstellt haben.

Wählen Sie auf der Seite „Log Analytics“ den Bereich Protokolle aus, und führen Sie eine der folgenden Beispielabfragen für Azure Spring Apps aus.

Geben Sie die folgende Kusto-Abfrage ein, und führen Sie sie aus, um Anwendungsprotokolle anzuzeigen:

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

Diese Abfrage erzeugt Ergebnisse ähnlich denen im folgenden Screenshot:

Screenshot des Azure-Portals mit einer Beispielausgabe einer Abfrage aller Anwendungsprotokolle.

Geben Sie die folgende Kusto-Abfrage ein, und führen Sie sie aus, um Anwendungsprotokolle für catalog-service anzuzeigen:

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

Diese Abfrage erzeugt Ergebnisse ähnlich denen im folgenden Screenshot:

Screenshot des Azure-Portals mit einer Beispielausgabe aus den Katalogdienst-Anwendungsprotokollen.

Geben Sie die folgende Kusto-Abfrage ein, und führen Sie sie aus, um Fehler und Ausnahmen anzuzeigen, die von den einzelnen Apps ausgelöst wurden:

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

Diese Abfrage erzeugt Ergebnisse ähnlich denen im folgenden Screenshot:

Screenshot des Azure-Portals mit einer Beispielausgabe aus den Eingangsprotokollen.

Geben Sie die folgende Kusto-Abfrage ein, um alle eingehenden Aufrufe in Azure Spring Apps anzuzeigen:

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

Geben Sie die folgende Kusto-Abfrage ein, um alle Protokolle aus dem verwalteten Spring Cloud-Konfigurationsgateway anzuzeigen, das von Azure Spring Apps verwaltet wird:

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

Diese Abfrage erzeugt Ergebnisse ähnlich denen im folgenden Screenshot:

Screenshot des Azure-Portals mit einer Beispielausgabe aus den Spring Cloud-Gatewayprotokollen.

Geben Sie die folgende Kusto-Abfrage ein, um alle Protokolle aus der verwalteten Spring Cloud-Dienstregistrierung anzuzeigen, die von Azure Spring Apps verwaltet wird:

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

Diese Abfrage erzeugt Ergebnisse ähnlich denen im folgenden Screenshot:

Screenshot des Azure-Portals mit einer Beispielausgabe aus den Dienstregistrierungsprotokollen.

Verwenden der Ablaufverfolgung

Öffnen Sie im Azure-Portal die von Azure Spring Apps erstellte Application Insights-Instanz, und starten Sie die Überwachung von Spring Boot-Anwendungen. Sie finden die Application Insights-Instanz in derselben Ressourcengruppe, in der Sie die Azure Spring Apps-Dienstinstanz erstellt haben.

Navigieren Sie zum Bereich Anwendungszuordnung –ähnlich dem folgenden Screenshot:

Screenshot des Azure-Portals mit der Anwendungsübersicht von Azure Application Insights.

Navigieren Sie zum Bereich Leistung –ähnlich dem folgenden Screenshot:

Screenshot des Azure-Portals mit dem Bereich „Leistung“ von Azure Application Insights.

Navigieren Sie zum Bereich Leistung/Abhängigkeiten. Hier sehen Sie den Leistungswert für Abhängigkeiten, insbesondere SQL-Aufrufe –ähnlich dem folgenden Screenshot:

Screenshot des Azure-Portals mit dem Abschnitt „Abhängigkeiten“ des Bereichs „Leistung“ von Azure Application Insights.

Navigieren Sie zum Bereich Leistung/Rollen. Hier sehen Sie die Leistungsmetriken für einzelne Instanzen oder Rollen, ähnlich wie im folgenden Screenshot:

Screenshot des Azure-Portals mit dem Abschnitt „Rollen“ des Bereichs „Leistung“ von Azure Application Insights.

Wählen Sie einen SQL-Aufruf aus, um die End-to-End-Transaktion im Kontext anzuzeigen, ähnlich wie im folgenden Screenshot:

Screenshot des Azure-Portals mit der End-to-End-Transaktion eines SQL-Aufrufs.

Navigieren Sie zum Bereich Fehler/Ausnahmen. Hier sehen Sie eine Sammlung von Ausnahmen, ähnlich wie im folgenden Screenshot:

Screenshot des Azure-Portals mit einer grafischen Darstellung von Anwendungsfehlern.

Anzeigen von Metriken

Navigieren Sie zum Bereich Metriken. Hier sehen Sie von Spring Boot-Apps, Spring Cloud-Modulen und Abhängigkeiten bereitgestellte Metriken. Das Diagramm im folgenden Screenshot zeigt http_server_requests und Verwendeter Heapspeicher:

Screenshot des Azure-Portals mit einem Graph von Metriken im zeitlichen Verlauf.

Spring Boot registriert eine große Anzahl von Kernmetriken: JVM, CPU, Tomcat, Logback usw. Die automatische Konfiguration von Spring Boot ermöglicht die Instrumentierung von Anforderungen, die von Spring MVC verarbeitet werden. Die REST-Controller ProductController und PaymentController wurden von der Micrometer-Anmerkung @Timed auf Klassenebene instrumentiert.

Für die Anwendung acme-catalog sind die folgenden benutzerdefinierten Metriken aktiviert: @Timed: store.products

Für die Anwendung acem-payment sind die folgenden benutzerdefinierten Metriken aktiviert: @Timed: store.payment

Sie können diese benutzerdefinierten Metriken im Bereich Metriken sehen, wie im folgenden Screenshot dargestellt.

Screenshot des Azure-Portals mit von Micrometer instrumentierten benutzerdefinierten Metriken.

Navigieren Sie zum Bereich Livemetriken. Auf diesem Bildschirm sehen Sie Livemetriken mit niedrigen Latenzen < 1 Sekunde, wie im folgenden Screenshot gezeigt:

Screenshot der Livemetriken aller Anwendungen.

Arbeiten mit anderen Überwachungstools

Der Azure Spring Apps Enterprise-Plan unterstützt auch den Export von Metriken in andere Tools, beispielsweise in die folgenden:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Mit dem folgenden Befehl können Sie einer Builderkomponente in Tanzu Build Service weitere Bindungen hinzufügen:

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>

Bereinigen von Ressourcen

Falls Sie mit weiteren Schnellstartanleitungen und Tutorials fortfahren möchten, sollten Sie die Ressourcen nicht bereinigen. Wenn Sie die Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe. Dadurch werden die Ressourcen in der Ressourcengruppe gelöscht. Wenn Sie die Ressourcengruppe mithilfe der Azure CLI löschen möchten, verwenden Sie die folgenden Befehle:

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

Nächste Schritte

Fahren Sie mit einer der folgenden optionalen Schnellstartanleitungen fort: