Мониторинг журналов в приложениях контейнеров Azure с помощью Log Analytics
Приложения контейнеров Azure интегрированы с Azure Monitor Log Analytics для отслеживания и анализа журналов приложения контейнера. При выборе в качестве решения для мониторинга журналов среда "Приложения контейнеров" включает рабочую область Log Analytics, которая предоставляет общее место для хранения данных журнала системы и приложений из всех приложений контейнеров, работающих в среде.
Записи журнала доступны путем запроса таблиц Log Analytics через портал Azure или командную оболочку с помощью Azure CLI.
Существует два типа журналов для приложений контейнеров.
- Журналы консоли, которые создаются приложением.
- Системные журналы, которые создаются службой приложений контейнеров.
Системные журналы
Служба "Приложения-контейнеры" предоставляет системные сообщения журнала на уровне приложения контейнера. Системные журналы выдают следующие сообщения:
Исходный код | Тип | Сообщение |
---|---|---|
Dapr | Сведения | Успешно создано имя> компонента <dapr с областью <dapr-component-scope> |
Dapr | Сведения | Успешно обновлено имя> компонента компонента <dapr с типом компонента области <> |
Dapr | Ошибка | Ошибка при создании имени компонента <dapr> |
Подключения томов | Сведения | Успешно подключенное имя> тома тома <для области редакции <> |
Подключения томов | Ошибка | Ошибка подключения тома с именем тома <> |
Привязка домена | Сведения | Успешно привязан <домен домена> к имени приложения-контейнера <контейнера> |
Проверка подлинности | Сведения | Включена проверка подлинности в приложении. Создание конфигурации проверки подлинности |
Проверка подлинности | Сведения | Конфигурация проверки подлинности успешно создана |
Вес трафика | Сведения | Установка веса трафика в процентах <>для редакции с именем редакции<\> |
Подготовка редакции | Сведения | Создание новой редакции: <имя редакции> |
Подготовка редакции | Сведения | Успешно подготовлено имя редакции <> |
Подготовка редакции | Сведения | Отключение старых редакций с момента "ActiveRevisionsMode=Single" |
Подготовка редакции | Ошибка | Имя> редакции редакции для <подготовки ошибок. ErrorCode: <[ErrImagePull]|[ Время ожидания]|[ContainerCrashing]> |
Данные системного журнала доступны путем запроса ContainerAppSystemLogs_CL
таблицы. Наиболее используемыми столбцами в таблице являются следующие столбцы:
Столбец | Description |
---|---|
ContainerAppName_s |
Имя приложения-контейнера |
EnvironmentName_s |
Имя окружения службы "Контейнеры приложений" |
Log_s |
Сообщение журнала |
RevisionName_s |
Имя редакции |
Журналы консоли
Журналы консоли исходят из stderr
stdout
контейнеров и сообщений из контейнеров в приложении контейнера и на стороне 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
таблицы.
Ниже приведен запрос 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