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

Hinweis

Azure Spring Apps ist der neue Name für den Azure Spring Cloud-Dienst. Obwohl der Dienst umbenannt wurde, wird der alte Name noch an einigen Stellen verwendet, solange wir Ressourcen wie Screenshots, Videos und Diagramme aktualisieren.

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 of Azure portal showing example output from all application logs query.

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 of Azure portal showing example output from Catalog Service application logs.

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 of Azure portal showing example output from the Ingress Logs.

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 of Azure portal showing example output from the Spring Cloud Gateway Logs.

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 of Azure portal showing example output from service registry logs.

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 of Azure portal showing the Application Map of Azure Application Insights.

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

Screenshot of Azure portal showing the Performance pane of 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 of Azure portal showing the Dependencies section of the Performance pane of 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 of Azure portal showing the Roles section of the Performance pane of 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 of Azure portal showing the end-to-end transaction of an S Q L call.

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

Screenshot of Azure portal showing application failures graphed.

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 of Azure portal showing metrics over time graph.

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 showing custom metrics instrumented by Micrometer.

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

Screenshot showing the live metrics of all applications.

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: