Мониторинг журналов в приложениях контейнеров Azure с помощью Log Analytics

Приложения контейнеров Azure интегрированы с Azure Monitor Log Analytics для отслеживания и анализа журналов приложения контейнера. При выборе в качестве решения для мониторинга журналов среда "Приложения контейнеров" включает рабочую область Log Analytics, которая предоставляет общее место для хранения данных журнала системы и приложений из всех приложений контейнеров, работающих в среде.

Записи журнала доступны путем запроса таблиц Log Analytics через портал Azure или командную оболочку с помощью Azure CLI.

Существует два типа журналов для приложений контейнеров.

  • Журналы консоли, которые создаются приложением.
  • Системные журналы, которые создаются службой приложений контейнеров.

Системные журналы

Служба "Приложения-контейнеры" предоставляет системные сообщения журнала на уровне приложения контейнера. Системные журналы выдают следующие сообщения:

Оригинал Тип Message
Dapr Сведения Успешно создано имя> компонента <компонента dapr с область <dapr-component-область>
Dapr Сведения Успешно обновлено имя> компонента компонента dapr с типом компонента <область <>
Dapr Ошибка Ошибка при создании имени компонента <dapr>
Подключения томов Сведения Успешно подключенное имя тома <для версии <версии область>>
Подключения томов Ошибка Ошибка подключения тома с именем тома <>
Привязка домена Сведения Успешно привязан <домен домена> к имени приложения-контейнера <контейнера>
Проверка подлинности Сведения Включена проверка подлинности в приложении. Создание конфигурации проверки подлинности
Проверка подлинности Сведения Конфигурация проверки подлинности успешно создана
Вес трафика Сведения Установка веса трафика в процентах <>для редакции с именем редакции<\>
Подготовка редакции Сведения Создание новой редакции: <имя редакции>
Подготовка редакции Сведения Успешно подготовлено имя редакции <>
Подготовка редакции Сведения Отключение старых редакций с момента "ActiveRevisionsMode=Single"
Подготовка редакции Ошибка Имя> редакции редакции для <подготовки ошибок. ErrorCode: <[ErrImagePull]|[ Время ожидания]|[ContainerCrashing]>

Данные системного журнала доступны путем запроса ContainerAppSystemLogs_CL таблицы. Наиболее используемыми столбцами в таблице являются следующие столбцы:

Столбец Description
ContainerAppName_s Имя приложения-контейнера
EnvironmentName_s Имя окружения службы "Контейнеры приложений"
Log_s Сообщение журнала
RevisionName_s Имя редакции

Журналы консоли

Журналы консоли исходят из stderrstdout контейнеров и сообщений из контейнеров в приложении контейнера и на стороне Dapr. Журналы консоли можно просматривать, запрашивая таблицу ContainerAppConsoleLogs_CL .

Совет

Инструментирование кода с помощью четко определенных сообщений журнала поможет понять, как выполняется код и как выполняется отладка проблем. Дополнительные сведения о рекомендациях см. в статье "Проектирование операций".

К наиболее часто используемым столбцам приложений контейнеров в ContainerAppConsoleLogs_CL относятся следующие:

Столбец Description
ContainerAppName_s Имя приложения-контейнера
ContainerGroupName_g Имя реплики
ContainerId_s Идентификатор контейнера
ContainerImage_s Имя образа контейнера
EnvironmentName_s Имя окружения службы "Контейнеры приложений"
Log_s Сообщение журнала
RevisionName_s Имя редакции

Запрос журнала с помощью Log Analytics

Log Analytics — это средство на портале Azure, которое можно применять для просмотра и анализа данных журнала. С помощью Log Analytics можно написать запросы Kusto, а затем сортировать, фильтровать и визуализировать результаты в диаграммах для выявления тенденций и выявления проблем. С результатами запроса можно работать в интерактивном режиме или же использовать их в других возможностях, таких как оповещения, информационные панели и книги.

Портал Azure

Запустите Log Analytics из раздела Журналы в меню боковой панели на странице контейнера приложения. Кроме того, Log Analytics можно запустить, выбрав Мониторинг>Журналы.

Журналы можно запросить с помощью таблиц, перечисленных на вкладке "Таблицы категорий CustomLogs". Таблицы в этой категории — это ContainerAppSystemlogs_CL таблицы и ContainerAppConsoleLogs_CL таблицы.

Screenshot of the Log Analytics custom log tables.

Ниже приведен запрос Kusto, в котором отображаются записи журнала консоли для приложения контейнера с именем album-api.

ContainerAppConsoleLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s
| take 100

Ниже приведен запрос Kusto, в котором отображаются системные записи журнала для приложения-контейнера с именем album-api.

ContainerAppSystemLogs_CL
| where ContainerAppName_s == 'album-api'
| project Time=TimeGenerated, EnvName=EnvironmentName_s, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s
| take 100

Дополнительные сведения о Log Analytics и запросах на журналы см. в учебнике по Log Analytics.

Azure CLI/PowerShell

Журналы службы "Контейнеры приложений" можно запрашивать с помощью Azure CLI.

В этом примере azure CLI запрашивает таблицу, содержащую записи журнала для api имени приложения-контейнера. Столбцы таблицы задаются параметрами после project оператора. Переменная $WORKSPACE_CUSTOMER_ID содержит GUID рабочей области Log Analytics.

В этом примере выполняется запрос таблицы ContainerAppConsoleLogs_CL :

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Container=ContainerName_s, Message=Log_s, LogLevel_s | take 5" --out table

В этом примере выполняется запрос таблицы ContainerAppSystemLogs_CL :

az monitor log-analytics query --workspace $WORKSPACE_CUSTOMER_ID --analytics-query "ContainerAppSystemLogs_CL | where ContainerAppName_s == 'album-api' | project Time=TimeGenerated, AppName=ContainerAppName_s, Revision=RevisionName_s, Message=Log_s, LogLevel_s | take 5" --out table

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