Краткое руководство. Мониторинг комплексных приложений

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к:❌ Basic/Standard ✔️ Enterprise

В этом кратком руководстве показано, как отслеживать приложения с планом Azure Spring Apps Enterprise с помощью Аналитика приложений и Log Analytics.

Примечание.

Вы можете отслеживать конечные рабочие нагрузки Spring с помощью любого средства и платформы, включая приложение Аналитика, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic или Splunk. Дополнительные сведения см . в статье "Работа с другими средствами мониторинга" далее в этой статье.

Необходимые компоненты

Обновление приложений

Необходимо вручную указать Аналитика строка подключения приложениям Службы заказов (ASP.NET ядра) и службы корзины (python). В следующих инструкциях описано, как предоставить эту строка подключения и увеличить частоту выборки в приложение Аналитика.

Примечание.

В настоящее время только пакеты сборки для приложений Java и NodeJS поддерживают инструментирование приложений Аналитика.

  1. Создайте переменные для хранения имен ресурсов с помощью следующих команд. Обязательно замените заполнители своими значениями. Имя экземпляра службы Azure Spring Apps должно быть от 4 до 32 символов и может содержать только строчные буквы, цифры и дефисы. Первым символом в имени службы должна быть буква, а последним — буква или цифра.

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

    Примечание.

    По умолчанию APP_INSIGHTS_NAME совпадает с AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME.

  2. Используйте следующие команды, чтобы получить приложение Аналитика строка подключения и задать его в Key Vault:

    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. Чтобы увеличить объем доступных данных, используйте следующую команду, чтобы обновить частоту выборки для привязки приложения Аналитика.

    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. Используйте следующие команды для перезапуска приложений для перезагрузки конфигурации:

    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. Если вы настроили единый вход, используйте следующие команды, чтобы перезагрузить приложения для перезагрузки конфигурации приложения службы удостоверений:

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

    Для приложений Java и NodeJS перезапуск позволит ввести в силу новую частоту выборки. Для приложений, отличных от Java, перезапуск позволит им получить доступ к только что добавленному ключу инструментирования из Key Vault.

Просмотреть журналы

Существует два способа просмотра журналов в Azure Spring Apps: потоковая передача журналов в режиме реального времени для каждого экземпляра приложения или Log Analytics для агрегированных журналов с расширенными возможностями запроса.

Использование потоковой передачи журналов

Создайте трафик в приложении, перемещаясь через приложение, просматривая каталог и размещая заказы. Используйте следующие команды для непрерывного создания трафика до отмены:

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

Используйте следующую команду, чтобы получить последние 100 строк журналов консоли приложения из приложения службы каталогов:

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

Добавив --follow этот параметр, вы можете получить потоковую передачу журналов в режиме реального времени из приложения. Используйте следующую команду, чтобы попробовать потоковую передачу журналов для приложения службы каталогов:

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

Совет

Вы можете использовать журналы az spring app для изучения дополнительных --help параметров и функций потока журналов.

Использование Log Analytics

Перейдите к портал Azure и откройте созданный экземпляр Log Analytics. Экземпляр Log Analytics можно найти в той же группе ресурсов, где вы создали экземпляр службы Azure Spring Apps.

На странице Log Analytics выберите область журналов и выполните любой из следующих примеров запросов для Azure Spring Apps.

Введите и выполните следующий запрос Kusto, чтобы просмотреть журналы приложений:

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

Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:

Screenshot of Azure portal showing example output from all application logs query.

Введите и выполните следующий запрос Kusto, чтобы просмотреть catalog-service журналы приложений:

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

Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:

Screenshot of Azure portal showing example output from Catalog Service application logs.

Введите и выполните следующий запрос Kusto, чтобы увидеть ошибки и исключения, вызванные каждым приложением:

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

Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:

Screenshot of Azure portal showing example output from the Ingress Logs.

Введите и выполните следующий запрос Kusto, чтобы просмотреть все в входящих вызовах в Azure Spring Apps:

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

Введите и выполните следующий запрос Kusto, чтобы просмотреть все журналы из управляемого шлюза конфигурации Spring Cloud, управляемого Azure Spring Apps:

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

Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:

Screenshot of Azure portal showing example output from the Spring Cloud Gateway Logs.

Введите и выполните следующий запрос Kusto, чтобы просмотреть все журналы из управляемого реестра служб Spring Cloud, управляемого Azure Spring Apps:

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

Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:

Screenshot of Azure portal showing example output from service registry logs.

Использование трассировки

В портал Azure откройте экземпляр приложения Аналитика, созданный Azure Spring Apps, и запустите мониторинг приложений Spring Boot. Экземпляр приложения Аналитика можно найти в той же группе ресурсов, где вы создали экземпляр службы Azure Spring Apps.

Перейдите к области карты приложения, которая будет похожа на следующий снимок экрана:

Screenshot of Azure portal showing the Application Map of Azure Application Insights.

Перейдите на панель "Производительность ", которая будет похожа на следующий снимок экрана:

Screenshot of Azure portal showing the Performance pane of Azure Application Insights.

Перейдите в область производительности и зависимостей . Здесь можно увидеть номер производительности для зависимостей, особенно вызовов SQL, как показано на следующем снимке экрана:

Screenshot of Azure portal showing the Dependencies section of the Performance pane of Azure Application Insights.

Перейдите на панель "Производительность и роли ". Здесь можно увидеть метрики производительности для отдельных экземпляров или ролей, как показано на следующем снимке экрана:

Screenshot of Azure portal showing the Roles section of the Performance pane of Azure Application Insights.

Выберите вызов SQL, чтобы просмотреть сквозную транзакцию в контексте, как показано на следующем снимке экрана:

Screenshot of Azure portal showing the end-to-end transaction of an S Q L call.

Перейдите к области "Сбои и исключения". Здесь вы увидите коллекцию исключений, как показано на следующем снимке экрана:

Screenshot of Azure portal showing application failures graphed.

Просмотр метрик

Перейдите на панель метрик . Здесь можно увидеть метрики, внесенные приложениями Spring Boot, модулями Spring Cloud и зависимостями. На следующем снимке экрана показана http_server_requests и использованная кучи память:

Screenshot of Azure portal showing metrics over time graph.

Spring Boot регистрирует большое количество основных метрик: JVM, ЦП, Tomcat, Logback и т. д. Автоматическая настройка Spring Boot позволяет инструментирование запросов, обрабатываемых Spring MVC. Контроллеры ProductController REST и PaymentController инструментированы @Timed заметкой Micrometer на уровне класса.

В acme-catalog приложении включена следующая настраиваемая метрика: @Timedstore.products

В acem-payment приложении включена следующая настраиваемая метрика: @Timedstore.payment

Эти пользовательские метрики можно увидеть на панели метрик , как показано на следующем снимке экрана.

Screenshot showing custom metrics instrumented by Micrometer.

Перейдите на панель динамических метрик. Здесь можно увидеть динамические метрики на экране с низкой задержкой < 1 секунды, как показано на следующем снимке экрана:

Screenshot showing the live metrics of all applications.

Работа с другими средствами мониторинга

План Azure Spring Apps Enterprise также поддерживает экспорт метрик в другие средства, включая следующие средства:

  • AppDynamics
  • ApacheSkyWalking
  • Dynatrace
  • ElasticAPM
  • NewRelic

Вы можете добавить дополнительные привязки к построителю в службе сборки Tanzu, выполнив следующую команду:

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>

Очистка ресурсов

Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующие команды:

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

Следующие шаги

Перейдите к любому из следующих необязательных кратких руководств: