Jak monitorować aplikacje Spring Boot za pomocą elastycznego agenta java APM

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

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:

Poniższy film wideo przedstawia ujednoliconą obserwację aplikacji Spring Boot korzystających z funkcji Elastic.


Wymagania wstępne

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:

  1. 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 .

  2. 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:

  1. Wykonaj kroki opisane w temacie Jak włączyć własny magazyn trwały w usłudze Azure Spring Apps.

  2. 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:

  1. W witrynie Azure Portal przejdź do strony Przegląd wdrożenia elastycznego, a następnie wybierz pozycję Zarządzaj wdrożeniem elastycznej chmury.

    Zrzut ekranu przedstawiający stronę elasticsearch (Elastic Cloud) w witrynie Azure Portal.

  2. 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.

    Zrzut ekranu przedstawiający stronę Elastic APM & Fleet z wyróżnionym tokenem tajnym kopiowania punktu końcowego i wpisu tajnego serwera APM.

  3. Pobierz program Elastic APM Java Agent z usługi Maven Central.

    Zrzut ekranu programu Maven Central z wyróżnionym plikiem jar download.

  4. 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.

    Zrzut ekranu witryny Azure Portal przedstawiający okienko Przekazywanie plików na stronie Udział plików.

  5. 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:

  1. W witrynie Azure Portal przejdź do strony Przegląd wdrożenia elastycznego, a następnie wybierz link Kibana.

    Zrzut ekranu witryny Azure Portal przedstawiający stronę elasticsearch z wyróżnionym linkiem Kibana adresu URL wdrożenia.

  2. Po otwarciu narzędzia Kibana wyszukaj ciąg APM na pasku wyszukiwania, a następnie wybierz pozycję APM.

    Zrzut ekranu programu Elastic/Kibana przedstawiający wyniki wyszukiwania 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.

Zrzut ekranu programu Elastic/Kibana przedstawiający stronę Przegląd usług APM.

Możesz przejść do szczegółów określonej transakcji, aby zrozumieć szczegóły specyficzne dla transakcji, takie jak śledzenie rozproszone.

Zrzut ekranu przedstawiający stronę Transakcje usług APM/Kibana.

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.

Zrzut ekranu przedstawiający stronę JVM usług APM/ Kibana.

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.

Zrzut ekranu przedstawiający stronę Elastic/Kibana z wyświetloną stroną Usług APM z wyświetlonym okienkiem Tworzenie reguły i wyróżnionymi akcjami.

Następne kroki