Журналы и метрики в приложениях контейнеров Azure
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к:✅ Basic/Standard ✅ Enterprise
При переходе из Azure Spring Apps в приложения контейнеров Azure вы найдете аналогичные функции наблюдаемости, но с некоторыми ключевыми различиями. В этой статье рассматриваются эти различия и объясняется, как отслеживать приложения в приложениях контейнеров Azure.
Необходимые компоненты
- Существующее приложение контейнера Azure. Дополнительные сведения см. в статье Краткое руководство. Развертывание первого приложения-контейнера с помощью портала Azure.
- Azure CLI.
Журналы
Настройка параметров ведения журнала
Приложения контейнеров Azure позволяют управлять ведением журнала в среде приложений контейнеров Azure.
Журналы можно хранить как в Azure Log Analytics, так и в Azure Monitor. Если выбрать Azure Monitor, вы найдете меню параметров диагностика в параметрах среды, как и в Azure Spring Apps.
При создании среды с помощью Azure CLI, как показано в следующем примере, подготавливается автоматическая рабочая область Log Analytics.
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--location eastus2
Вы также можете использовать следующую команду для создания среды с существующей рабочей областью Log Analytics:
az containerapp env create \
--resource-group MyResourceGroup \
--name MyContainerappEnvironment \
--logs-workspace-id myLogsWorkspaceID \
--logs-workspace-key myLogsWorkspaceKey \
--location eastus2
Анализ журналов
Приложения контейнеров Azure позволяют передавать журналы из консоли контейнера. В следующем списке описаны основные различия в ведении журнала.
Журналы консоли. Для журналов консоли запросите таблицу
ContainerAppConsoleLogs_CL
в приложениях контейнеров Azure вместо таблицы, используемойApplicationConsole
в Azure Spring Apps.Системные журналы: Azure Spring Apps предоставляет
SystemLogs
сервер конфигурации, реестр служб, портал API, службу конфигурации приложений и шлюз Spring Cloud. В приложениях контейнеров Azure необходимо подготовить эти компоненты в виде отдельных приложений и запросить их журналы вContainerAppConsoleLogs_CL
таблице, указав имя каждого приложения в запросе.Журналы сборки: журналы сборки из локальных сборок с помощью пакетов buildpacks Paketo недоступны в приложениях контейнеров Azure, которые отличаются от Azure Spring Apps.
Просмотреть журналы
По умолчанию приложения контейнеров Azure отправляют журналы непосредственно в Azure Log Analytics. Однако если вы решили хранить журналы в Azure Monitor, имена таблиц и столбцов могут отличаться. В Azure Monitor имена таблиц и столбцов не включают суффиксы. Например, используйте ContainerAppConsoleLogs
вместо ContainerAppConsoleLogs_CL
него и Log
вместо Log_s
создания запросов для журналов, хранящихся в Azure Monitor.
Чтобы просмотреть журналы консоли в приложениях контейнеров Azure, используйте следующий запрос в качестве примера:
ContainerAppConsoleLogs_CL
| limit 50
Azure Log Analytics выполняется с подсистемой Kusto, чтобы запросить журналы для анализа. Общие сведения о запросах журналов с помощью Kusto см . в руководстве по Log Analytics.
Отображение журналов приложений
Чтобы просмотреть список журналов приложений, отсортированных по времени с помощью последних журналов, показанных сначала, используйте следующий запрос:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| sort by TimeGenerated desc
Отображение записей журналов, содержащих ошибки или исключения
Чтобы просмотреть неортированные записи журнала, которые упоминают об ошибке или исключении, используйте следующий запрос:
ContainerAppConsoleLogs_CL
| project TimeGenerated, EnvironmentName_s, ContainerAppName_s, RevisionName_s, Log_s
| where Log_s contains "error" or Log_s contains "exception"
Этот запрос позволяет искать ошибки или менять условия запроса таким образом, чтобы находить конкретные исключения или коды ошибки.
Отображение количества ошибок и исключений, о которых сообщило приложение за последний час
Чтобы создать круговую диаграмму, отображающую количество ошибок и исключений, зарегистрированных приложением за последний час, используйте следующий запрос:
ContainerAppConsoleLogs_CL
| where TimeGenerated > ago(1h)
| where Log_s contains "error" or Log_s contains "exception"
| summarize count_per_app = count() by ContainerAppName_s
| sort by count_per_app desc
| render piechart
Отображение журналов Шлюза Spring Cloud
Чтобы просмотреть записи журнала для журналов Spring Cloud Gateway, используйте следующий запрос:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudGateway"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
Отображение журналов Eureka Server
Чтобы просмотреть записи журнала для журналов Eureka Server, используйте следующий запрос:
ContainerAppSystemLogs_CL
| where ComponentType_s == "SpringCloudEureka"
| project TimeGenerated, ComponentType_s, EnvironmentName_s, ComponentName_s, Log_s
| limit 100
Метрики
Следующие таблицы сопоставляют метрики между Azure Spring Apps и Приложениями контейнеров Azure:
Распространенный почтовый сервис
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
Загрузка ЦП приложением | Н/П |
Объем памяти, используемый приложением | Н/П |
Сеть приложения, вход | Н/П |
Сеть приложения, выход | Н/П |
Метрики с ошибками
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
tomcat.global.error |
Н/П |
Метрики производительности
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
system.cpu.usage |
Процент использования ЦП (предварительная версия) |
process.cpu.usage |
Н/П |
Объем памяти, используемый приложением | Неприменимо |
jvm.memory.committed |
jvm.memory.committed |
jvm.memory.used |
jvm.memory.used |
jvm.memory.max |
Неприменимо |
Дополнительные метрики JVM | Н/П |
Метрики производительности .NET
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
Использование процессора | Процент использования ЦП (предварительная версия) |
Рабочий набор | Рабочий набор памяти, в байтах |
Размер кучи GC | Н/П |
Gen 0 — счетчик сборщика мусора | Н/П |
Дополнительные метрики GC | Н/П |
Метрики запросов
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
tomcat.global.sent |
Н/П |
tomcat.global.request.total.count |
Запросы |
Метрики запросов .NET
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
Число запросов в секунду | Н/П |
Итого запросов | Запросы |
Метрики сеанса
Имя метрики Azure Spring Apps | Имя метрики приложений контейнеров Azure |
---|---|
tomcat.sessions.active.max |
Неприменимо |
tomcat.sessions.alive.max |
Неприменимо |
Метрики Java для приложений Java в приложениях контейнеров Azure
Если вы выбираете Java в качестве стека разработки для приложений контейнеров Azure, мониторинг метрик виртуальной машины Java (JVM) необходим для обеспечения работоспособности и производительности приложений. Дополнительные сведения см. в разделе метрики Java для приложений Java в приложениях контейнеров Azure.
Управляемые компоненты
Сведения о мониторинге управляемых компонентов см. в следующих статьях:
Интеграция
Приложения контейнеров Azure предлагают несколько встроенных функций наблюдаемости, которые помогут вам отслеживать и диагностировать состояние приложения. Однако если вы хотите использовать Azure Monitor Application Insights или другие агенты мониторинга производительности приложений (APM), необходимо добавить инструментирование в код приложения.
Интеграция с мониторингом производительности приложений
Сведения об интеграции с Azure Monitor Application Insights или другими API см. в статье "Интеграция мониторинга производительности приложений" в образы контейнеров.
Агенты OpenTelemetry (предварительная версия)
Данные о наблюдаемости можно отправлять в формате OpenTelemetry в такие назначения, как Azure Monitor Application Insights, Datadog или любая конечная точка, совместимая с OTLP, с помощью агента данных OpenTelemetry с средой Azure Container Apps. Управляемый агент упрощает настройку, позволяя изменять конечные точки назначения без ручного запуска или перенастройки агента. Чтобы настроить его, настройте агент в среде контейнера с помощью шаблонов ARM, Bicep или Azure CLI и подготовьте приложение, установив пакет SDK OpenTelemetry и инструментируя код для метрик, журналов или трассировок. Обязательно настройте целевую службу заранее, например Application Insights. У каждого назначения есть определенные требования, а агент отправляет данные только в том случае, если он правильно настроен и инструментирован. Дополнительные сведения см. в разделе "Сбор и чтение данных OpenTelemetry" в приложениях контейнеров Azure.
Пользовательские панели мониторинга и оповещения
При развертывании приложений в приложениях контейнеров Azure пользовательские панели мониторинга могут полагаться на два различных подхода к источнику данных:
Агенты APM, интегрированные с приложением: если вы интегрированы сторонние агенты APM в приложение во время процесса сборки, эти агенты отправляют метрики и журналы непосредственно на платформу APM. В этом случае, если код приложения остается неизменным, вам не нужно изменять панели мониторинга.
Панели мониторинга на основе Azure Monitor. Если панели мониторинга используют метрики и журналы из Azure Monitor, например с помощью API Application Insights, Центры событий Azure или служба хранилища Azure, их может потребоваться обновить, чтобы отразить имена метрик, пространства имен или структуры журналов для приложений контейнеров Azure. Обязательно просмотрите и обновите панели мониторинга на основе сопоставлений метрик для контейнеров Azure и структур данных.
Тщательно проверьте конфигурации панели мониторинга, чтобы убедиться, что они остаются точными после перехода в приложения контейнеров Azure.
Устранение неполадок
Приложения контейнеров Azure не предоставляют API для создания дампа кучи или дампа потока для приложений Java. Чтобы создать эти дампы, необходимо подключиться к приложению контейнера через консоль. Затем используйте jmap
команду или jstack
команду для создания файлов дампа внутри контейнера. После этого скопируйте созданные файлы на локальный компьютер для дальнейшего анализа.
Вы также можете использовать jcmd
команду для выполнения той же операции и запуска jFR в работающем приложении. Дополнительные сведения о том, как получить доступ к приложению-контейнеру через консоль, см. в статье "Подключение к консоли контейнера" в приложениях контейнеров Azure.
Известные ограничения
- Структурированные журналы. Приложения контейнеров Azure не поддерживают структурированные журналы приложений. Если журналы приложений соответствуют схеме Azure Spring Apps, в столбце столбца
Log_s
ContainerAppConsoleLogs_CL
отображается полная строка JSON. - Журналы входящего трафика. Хотя Azure Spring Apps имеет встроенные журналы доступа к входящего трафика, приложения контейнеров Azure не имеют. Для записи этих данных необходимо реализовать ведение журнала доступа в коде приложения.
- Приложения контейнеров Azure не предоставляют события жизненного цикла приложений.
- Приложения контейнеров Azure не поддерживают встроенные метрики входящего трафика. Необходимо реализовать пользовательское отслеживание в приложениях.