Jak monitorować aplikacje Spring Boot za pomocą elastycznego agenta java APM
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
Ten artykuł dotyczy:✅ Podstawowa/Standardowa ❎ Enterprise
W tym artykule wyjaśniono, jak używać agenta Elastic APM do monitorowania aplikacji Spring Boot działających w usłudze Azure Spring Apps.
Dzięki elastycznemu rozwiązaniu do obserwacji można osiągnąć ujednoliconą możliwość obserwowania:
- Monitorowanie aplikacji przy użyciu agenta Języka Java Elastic APM i używanie magazynu trwałego za pomocą usługi Azure Spring Apps.
- Użyj ustawień diagnostycznych, aby wysłać dzienniki usługi Azure Spring Apps do usługi Elastic. Aby uzyskać więcej informacji, zobacz Analizowanie dzienników za pomocą funkcji Elastic (ELK) przy użyciu ustawień diagnostycznych.
Poniższy film wideo przedstawia ujednoliconą obserwację aplikacji Spring Boot korzystających z funkcji Elastic.
Wymagania wstępne
- Interfejs wiersza polecenia platformy Azure
- Wdrażanie elastycznego na platformie Azure
- Zarządzanie serwerem APM & Fleet
Wdrażanie aplikacji Spring Petclinic
W tym artykule użyto przykładu Spring Petclinic, aby przejść przez wymagane kroki. Aby wdrożyć przykładową aplikację, wykonaj następujące kroki:
Postępuj zgodnie z instrukcjami w sekcji Wdrażanie aplikacji Spring Boot przy użyciu usług Azure Spring Apps i MySQL , dopóki nie osiągniesz sekcji Wdrażanie aplikacji Spring Boot i ustaw zmienne środowiskowe .
Użyj rozszerzenia Azure Spring Apps dla interfejsu wiersza polecenia platformy Azure za pomocą następującego polecenia, aby utworzyć aplikację do uruchomienia w usłudze Azure Spring Apps:
az spring app create \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --is-public true
Włączanie niestandardowego magazynu trwałego dla usługi Azure Spring Apps
Aby włączyć niestandardowy magazyn trwały, wykonaj następujące kroki:
Wykonaj kroki opisane w temacie Jak włączyć własny magazyn trwały w usłudze Azure Spring Apps.
Użyj następującego polecenia interfejsu wiersza polecenia platformy Azure, aby dodać trwały magazyn dla aplikacji usługi Azure Spring Apps.
az spring app append-persistent-storage \ --resource-group <your-resource-group-name> \ --service <your-Azure-Spring-Apps-instance-name> \ --name <your-app-name> \ --persistent-storage-type AzureFileVolume \ --share-name <your-Azure-file-share-name> \ --mount-path <unique-mount-path> \ --storage-name <your-mounted-storage-name>
Aktywowanie elastycznego agenta języka Java APM
Przed kontynuowaniem potrzebne są informacje o łączności z serwerem Elastic APM, które zakłada, że wdrożono usługę Elastic na platformie Azure. Aby uzyskać więcej informacji, zobacz How to deploy and manage Elastic on Microsoft Azure (Jak wdrażać usługę Elastic na platformie Microsoft Azure i zarządzać nią). Aby uzyskać te informacje, wykonaj następujące czynności:
W witrynie Azure Portal przejdź do strony Przegląd wdrożenia elastycznego, a następnie wybierz pozycję Zarządzaj wdrożeniem elastycznej chmury.
W obszarze wdrożenia w usłudze Elastic Cloud Console wybierz sekcję APM & Fleet , aby uzyskać punkt końcowy serwera Elastic APM i token tajny.
Pobierz program Elastic APM Java Agent z usługi Maven Central.
Przekaż agenta Elastic APM do niestandardowego magazynu trwałego, który został wcześniej włączony. Przejdź do pozycji Udział plików platformy Azure i wybierz pozycję Przekaż , aby dodać plik JAR agenta.
Po utworzeniu punktu końcowego elastic APM i tokenu wpisu tajnego użyj następującego polecenia, aby aktywować agenta Elastic APM Języka Java podczas wdrażania aplikacji. Symbol zastępczy
<agent-location>
odwołuje się do zainstalowanej lokalizacji magazynu agenta Języka Java Elastic APM.az spring app deploy \ --name <your-app-name> \ --artifact-path <unique-path-to-your-app-jar-on-custom-storage> \ --jvm-options='-javaagent:<elastic-agent-location>' \ --env ELASTIC_APM_SERVICE_NAME=<your-app-name> \ ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package-name>' \ ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>' \ ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
Automatyzowanie aprowizacji
Możesz również uruchomić potok automatyzacji aprowizacji przy użyciu narzędzia Terraform, Bicep lub szablonu usługi Azure Resource Manager (szablon usługi ARM). Ten potok może zapewnić pełne praktyczne środowisko instrumentacji i monitorowania wszelkich nowych aplikacji, które tworzysz i wdrażasz.
Automatyzowanie aprowizacji przy użyciu narzędzia Terraform
Aby skonfigurować zmienne środowiskowe w szablonie programu Terraform, dodaj następujący kod do szablonu, zastępując <symbole zastępcze ...> własnymi wartościami. Aby uzyskać więcej informacji, zobacz Manages an Active Azure Spring Apps Deployment (Zarządzanie wdrożeniem usługi Azure Spring Apps).
resource "azurerm_spring_cloud_java_deployment" "example" {
...
jvm_options = "-javaagent:<elastic-agent-location>"
...
environment_variables = {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
}
}
Automatyzowanie aprowizacji przy użyciu pliku Bicep
Aby skonfigurować zmienne środowiskowe w pliku Bicep, dodaj następujący kod do pliku, zastępując <symbole zastępcze ...> własnymi wartościami. Aby uzyskać więcej informacji, zobacz Microsoft.AppPlatform Spring/apps/deployments.
deploymentSettings: {
environmentVariables: {
ELASTIC_APM_SERVICE_NAME='<your-app-name>',
ELASTIC_APM_APPLICATION_PACKAGES='<your-app-package>',
ELASTIC_APM_SERVER_URL='<your-Elastic-APM-server-URL>',
ELASTIC_APM_SECRET_TOKEN='<your-Elastic-APM-secret-token>'
},
jvmOptions: '-javaagent:<elastic-agent-location>',
...
}
Automatyzowanie aprowizacji przy użyciu szablonu usługi ARM
Aby skonfigurować zmienne środowiskowe w szablonie usługi ARM, dodaj następujący kod do szablonu, zastępując <symbole zastępcze ...> własnymi wartościami. Aby uzyskać więcej informacji, zobacz Microsoft.AppPlatform Spring/apps/deployments.
"deploymentSettings": {
"environmentVariables": {
"ELASTIC_APM_SERVICE_NAME"="<your-app-name>",
"ELASTIC_APM_APPLICATION_PACKAGES"="<your-app-package>",
"ELASTIC_APM_SERVER_URL"="<your-Elastic-APM-server-URL>",
"ELASTIC_APM_SECRET_TOKEN"="<your-Elastic-APM-secret-token>"
},
"jvmOptions": "-javaagent:<elastic-agent-location>",
...
}
Uaktualnianie elastycznego agenta APM Java
Aby zaplanować uaktualnienie, zobacz Uaktualnianie wersji elastycznej chmury na platformie Azure i Istotne zmiany dotyczące programu APM. Po uaktualnieniu serwera APM przekaż plik JAR agenta Elastic APM Java w niestandardowym magazynie trwałym. Następnie uruchom ponownie aplikacje przy użyciu zaktualizowanych opcji JVM wskazujących uaktualniony plik JAR agenta Elastic APM Java.
Monitorowanie aplikacji i metryk za pomocą elastycznego APM
Aby monitorować aplikacje i metryki, wykonaj następujące czynności:
W witrynie Azure Portal przejdź do strony Przegląd wdrożenia elastycznego, a następnie wybierz link Kibana.
Po otwarciu narzędzia Kibana wyszukaj ciąg APM na pasku wyszukiwania, a następnie wybierz pozycję APM.
Kibana APM to wyselekcjonowane aplikacje do obsługi przepływów pracy monitorowania aplikacji. W tym miejscu możesz wyświetlić szczegółowe informacje o wysokim poziomie, takie jak czasy żądań/odpowiedzi, przepływność i transakcje w usłudze z największym wpływem na czas trwania.
Możesz przejść do szczegółów określonej transakcji, aby zrozumieć szczegóły specyficzne dla transakcji, takie jak śledzenie rozproszone.
Agent Elastic APM w języku Java przechwytuje również metryki JVM z aplikacji Azure Spring Apps, które są dostępne w aplikacji Kibana dla użytkowników na potrzeby rozwiązywania problemów.
Korzystając z wbudowanego aparatu sztucznej inteligencji w rozwiązaniu elastycznym, możesz również włączyć wykrywanie anomalii w usługach Azure Spring Apps Services i wybrać odpowiednią akcję — taką jak powiadomienie usługi Teams, utworzenie problemu JIRA, wywołanie interfejsu API opartego na elementach webhook i inne.