Краткое руководство. Мониторинг комплексных приложений
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к: ❎ Basic/Standard ✅ Enterprise
В этом кратком руководстве показано, как отслеживать приложения с планом Azure Spring Apps Enterprise с помощью Application Insights и Log Analytics.
Примечание.
Вы можете отслеживать конечные рабочие нагрузки Spring с помощью любого средства и платформы, включая App Insights, Log Analytics, New Relic, Dynatrace, AppDynamics, Elastic или Splunk. Дополнительные сведения см . в статье "Работа с другими средствами мониторинга" далее в этой статье.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Изучите и выполните раздел "Требования" плана Enterprise в Azure Marketplace.
- Azure CLI версии 2.45.0 или более поздней.
- Git.
- Расширение плана Azure Spring Apps Enterprise. Используйте следующую команду, чтобы удалить предыдущие версии и установить последнее расширение плана Enterprise. Если вы ранее установили
spring-cloud
расширение, удалите его, чтобы избежать несоответствий конфигурации и версий.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Ресурсы для мониторинга, такие как те, которые созданы в следующих кратких руководствах:
Обновление приложений
Необходимо вручную предоставить application Insights строка подключения приложениям Службы заказов (ASP.NET ядра) и службы корзины (python). В следующих инструкциях описано, как предоставить эту строка подключения и увеличить частоту выборки в Application Insights.
Примечание.
В настоящее время только пакеты сборки для приложений Java и NodeJS поддерживают инструментирование Application Insights.
Создайте переменные для хранения имен ресурсов с помощью следующих команд. Обязательно замените заполнители своими значениями. Имя экземпляра службы 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.
Используйте следующие команды, чтобы получить строка подключения Application Insights и задать его в 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}
Чтобы увеличить объем доступных данных, используйте следующую команду, чтобы обновить частоту выборки для привязки Application Insights:
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}
Используйте следующие команды для перезапуска приложений для перезагрузки конфигурации:
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
Если вы настроили единый вход, используйте следующие команды, чтобы перезагрузить приложения для перезагрузки конфигурации приложения службы удостоверений:
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
Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:
Введите и выполните следующий запрос Kusto, чтобы просмотреть catalog-service
журналы приложений:
AppPlatformLogsforSpring
| where AppName has "catalog-service"
| limit 500
| sort by TimeGenerated
| project TimeGenerated, AppName, Log
Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:
Введите и выполните следующий запрос 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
Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:
Введите и выполните следующий запрос 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
Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:
Введите и выполните следующий запрос Kusto, чтобы просмотреть все журналы из управляемого реестра служб Spring Cloud, управляемого Azure Spring Apps:
AppPlatformSystemLogs
| where LogType contains "ServiceRegistry"
| project TimeGenerated, Log
Этот запрос создает результаты, аналогичные приведенным на следующем снимке экрана:
Использование трассировки
В портал Azure откройте экземпляр Application Insights, созданный Azure Spring Apps, и запустите мониторинг приложений Spring Boot. Экземпляр Application Insights можно найти в той же группе ресурсов, где вы создали экземпляр службы Azure Spring Apps.
Перейдите к области карты приложения, которая будет похожа на следующий снимок экрана:
Перейдите на панель "Производительность ", которая будет похожа на следующий снимок экрана:
Перейдите в область производительности и зависимостей . Здесь можно увидеть номер производительности для зависимостей, особенно вызовов SQL, как показано на следующем снимке экрана:
Перейдите на панель "Производительность и роли ". Здесь можно увидеть метрики производительности для отдельных экземпляров или ролей, как показано на следующем снимке экрана:
Выберите вызов SQL, чтобы просмотреть сквозную транзакцию в контексте, как показано на следующем снимке экрана:
Перейдите к области "Сбои и исключения". Здесь вы увидите коллекцию исключений, как показано на следующем снимке экрана:
Просмотр метрик
Перейдите на панель метрик . Здесь можно увидеть метрики, внесенные приложениями Spring Boot, модулями Spring Cloud и зависимостями. На следующем снимке экрана показана http_server_requests и использованная кучи память:
Spring Boot регистрирует большое количество основных метрик: JVM, ЦП, Tomcat, Logback и т. д.
Автоматическая настройка Spring Boot позволяет инструментирование запросов, обрабатываемых Spring MVC.
Контроллеры ProductController
REST и PaymentController
инструментированы @Timed
заметкой Micrometer на уровне класса.
В acme-catalog
приложении включена следующая настраиваемая метрика: @Timedstore.products
В acem-payment
приложении включена следующая настраиваемая метрика: @Timedstore.payment
Эти пользовательские метрики можно увидеть на панели метрик , как показано на следующем снимке экрана.
Перейдите на панель динамических метрик. Здесь можно увидеть динамические метрики на экране с низкой задержкой < 1 секунды, как показано на следующем снимке экрана:
Работа с другими средствами мониторинга
План 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 ..."
Следующие шаги
Перейдите к любому из следующих необязательных кратких руководств: