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
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Verstehen und Erfüllen des Abschnitts Anforderungen des Enterprise-Plans in Azure Marketplace.
- Die Azure CLI Version 2.45.0 oder höher.
- Git.
- Die Erweiterung des Azure Spring Apps Enterprise-Plans. Verwenden Sie den folgenden Befehl, um frühere Versionen zu entfernen und die neueste Erweiterung des Enterprise-Plans zu installieren. Wenn Sie zuvor die
spring-cloud
-Erweiterung installiert hatten, deinstallieren Sie diese Erweiterung, um Konfigurations- und Versionskonflikte zu vermeiden.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Zu überwachende Ressourcen, beispielsweise diejenigen, die in den folgenden Schnellstartanleitungen erstellt wurden:
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.
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.
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}
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}
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
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:
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:
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:
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:
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:
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:
Navigieren Sie zum Bereich Leistung –ähnlich dem folgenden Screenshot:
Navigieren Sie zum Bereich Leistung/Abhängigkeiten. Hier sehen Sie den Leistungswert für Abhängigkeiten, insbesondere SQL-Aufrufe –ähnlich dem folgenden Screenshot:
Navigieren Sie zum Bereich Leistung/Rollen. Hier sehen Sie die Leistungsmetriken für einzelne Instanzen oder Rollen, ähnlich wie im folgenden Screenshot:
Wählen Sie einen SQL-Aufruf aus, um die End-to-End-Transaktion im Kontext anzuzeigen, ähnlich wie im folgenden Screenshot:
Navigieren Sie zum Bereich Fehler/Ausnahmen. Hier sehen Sie eine Sammlung von Ausnahmen, ähnlich wie im folgenden Screenshot:
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:
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.
Navigieren Sie zum Bereich Livemetriken. Auf diesem Bildschirm sehen Sie Livemetriken mit niedrigen Latenzen < 1 Sekunde, wie im folgenden Screenshot gezeigt:
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: