Ведение журнала для групп и экземпляров контейнеров с помощью журналов Azure Monitor

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

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

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

Примечание.

Сведения из данной статьи были недавно обновлены. Теперь вместо термина "Log Analytics" используется термин "журналы Azure Monitor". Данные журнала по-прежнему хранятся в рабочей области Log Analytics, собираются и анализируются той же службой Log Analytics. Целью обновления терминологии является лучшее отражение роли журналов в Azure Monitor. Дополнительные сведения см. в статье Изменения фирменной символики Azure Monitor.

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

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

Получение учетных данных Log Analytics

Экземплярам контейнеров Azure нужны разрешения на отправку данных в рабочую область Log Analytics. Чтобы предоставить такие разрешения и включить ведение журнала, необходимо указать идентификатор рабочей области Log Analytics и один из ключей для нее (первичный или вторичный) при создании группы контейнеров.

Чтобы получить идентификатор и первичный ключ рабочей области Log Analytics, сделайте следующее:

  1. На портале Azure перейдите к рабочей области Log Analytics.
  2. В разделе Параметры выберите Управление агентами.
  3. Запишите следующее:
    • Идентификатор рабочей области
    • Главный ключ

Создание группы контейнеров

Теперь у вас есть идентификатор и первичный ключ рабочей области Log Analytics, а значит вы можете создать группу контейнеров с поддержкой ведения журнала.

В следующих примерах показаны два способа создания группы контейнеров, состоящей из одного контейнера fluentd: с помощью Azure CLI и Azure CLI с шаблоном YAML. Контейнер Fluentd в стандартной конфигурации создает несколько строк выходных данных. Так как эти выходные данные направляются в рабочую область Log Analytics, такой контейнер отлично подходит для демонстрации процессов просмотра журналов и обращения к ним.

Развертывание с помощью интерфейса командной строки Azure

Для развертывания с помощью Azure CLI следует указать параметры --log-analytics-workspace и --log-analytics-workspace-key при вызове команды az container create. Замените два значения рабочей области значениями, полученными на предыдущем шаге (и обновите имя группы ресурсов), прежде чем выполнять следующую команду.

Примечание.

В следующем примере вытягивается общедоступный образ контейнера из Docker Hub. Рекомендуется настроить секрет для извлечения, чтобы проверка подлинности выполнялась с помощью учетной записи Docker Hub, а не анонимного запроса на вытягивание. Чтобы повысить надежность при работе с общедоступным содержимым, импортируйте образ и управляйте им в частном реестре контейнеров Azure. Узнайте больше о работе с общедоступными образами.

az container create \
    --resource-group myResourceGroup \
    --name mycontainergroup001 \
    --image fluent/fluentd:v1.3-debian-1 \
    --log-analytics-workspace <WORKSPACE_ID> \
    --log-analytics-workspace-key <WORKSPACE_KEY>

Развертывание с помощью YAML

Используйте этот метод, чтобы развернуть группы контейнеров с YAML. Этот пример YAML определяет группу контейнеров с одним контейнером. Скопируйте код YAML в новый файл, а затем замените LOG_ANALYTICS_WORKSPACE_ID и LOG_ANALYTICS_WORKSPACE_KEY значениями, полученными на предыдущем шаге. Сохраните файл как deploy-aci.yaml.

Примечание.

В следующем примере вытягивается общедоступный образ контейнера из Docker Hub. Рекомендуется настроить секрет для извлечения, чтобы проверка подлинности выполнялась с помощью учетной записи Docker Hub, а не анонимного запроса на вытягивание. Чтобы повысить надежность при работе с общедоступным содержимым, импортируйте образ и управляйте им в частном реестре контейнеров Azure. Узнайте больше о работе с общедоступными образами.

apiVersion: 2019-12-01
location: eastus
name: mycontainergroup001
properties:
  containers:
  - name: mycontainer001
    properties:
      environmentVariables: []
      image: fluent/fluentd:v1.3-debian-1
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  osType: Linux
  restartPolicy: Always
  diagnostics:
    logAnalytics:
      workspaceId: LOG_ANALYTICS_WORKSPACE_ID
      workspaceKey: LOG_ANALYTICS_WORKSPACE_KEY
tags: null
type: Microsoft.ContainerInstance/containerGroups

Затем выполните следующую команду, чтобы развернуть группу контейнеров. Замените в ней myResourceGroup именем группы ресурсов в вашей подписке (или создайте группу ресурсов с именем myResourceGroup перед выполнением команды).

az container create --resource-group myResourceGroup --name mycontainergroup001 --file deploy-aci.yaml

Вскоре после выполнения команды вы получите от Azure ответ с информацией о развертывании.

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

После развертывания группы контейнеров в портал Azure может потребоваться несколько минут (до 10).

Чтобы просмотреть журналы группы контейнеров в таблице ContainerInstanceLog_CL, выполните следующие действия:

  1. На портале Azure перейдите к рабочей области Log Analytics.
  2. В разделе Общие выберите Журналы.
  3. Введите следующий запрос: ContainerInstanceLog_CL | limit 50.
  4. Выберите Выполнить.

Вы увидите несколько результатов, отображаемых запросом. Если результаты не выводятся, подождите несколько минут и нажмите Выполнить, чтобы выполнить запрос еще раз. По умолчанию записи журнала отображаются в формате Таблица. Вы также можете развернуть любую строку, чтобы просмотреть содержимое отдельной записи журнала.

Параметры поиска по журналам на портале Azure

Просмотр событий

Вы также можете просмотреть события для экземпляров контейнеров на портале Azure. События включают время создания экземпляра и его запуска. Чтобы просмотреть данные события в таблице ContainerEvent_CL, выполните следующие действия:

  1. На портале Azure перейдите к рабочей области Log Analytics.
  2. В разделе Общие выберите Журналы.
  3. Введите следующий запрос: ContainerEvent_CL | limit 50.
  4. Выберите Выполнить.

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

Результаты поиска событий на портале Azure

Запрос по журналам контейнера

Журналы Azure Monitor поддерживают расширенный язык запросов для извлечения информации из выходных данных журналов, размер которых может достигать тысяч строк.

Базовая структура запроса включает имя таблицы с исходными данными (в этой статье ContainerInstanceLog_CL или ContainerEvent_CL) и ряд операторов, разделенных символом вертикальной черты (|). Вы можете объединить несколько операторов в цепочку, чтобы получить более точные результаты или применить более сложные функции.

Чтобы просмотреть пример результатов запроса, вставьте следующий текст в поле запроса и нажмите кнопку Запустить, чтобы выполнить этот запрос. Этот запрос отображает все записи журнала, у которых поле Message (Сообщение) которого содержит слово warn (Предупреждение):

ContainerInstanceLog_CL
| where Message contains "warn"

Также поддерживаются более сложные запросы. Например, такой запрос отображает записи из журнала группы контейнеров mycontainergroup001, которые были созданы за последний час:

ContainerInstanceLog_CL
| where (ContainerGroup_s == "mycontainergroup001")
| where (TimeGenerated > ago(1h))

Схема журнала

Примечание.

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

ContainerInstanceLog_CL

Column Type Описание
Компьютер строка Нет значения
ContainerGroup_s строка Имя группы контейнеров, связанной с этой записью
ContainerID_s строка Уникальный идентификатор контейнера, связанного с записью
ContainerImage_s строка Имя образа контейнера, связанного с записью
Location_s строка Расположение ресурса, связанного с записью
Message строка Если применимо, сообщение из контейнера
OSType_s строка Имя операционной системы, на которой основан контейнер
RawData строка Нет значения
ResourceGroup строка Имя группы ресурсов, с которой связана запись
Source_s строка Имя компонента ведения журнала LoggingAgent
SubscriptionId строка Уникальный идентификатор подписки, с которой связана запись
TimeGenerated datetime Метка времени, когда служба Azure создала событие при обработке соответствующего этому событию запроса
Тип строка Имя таблицы.
_ResourceId строка Уникальный идентификатор ресурса, с которым связана запись.
_SubscriptionId строка Уникальный идентификатор подписки, с которой связана запись

ContainerEvent_CL

Column Type Описание
Компьютер строка Нет значения
ContainerGroupInstanceId_g строка Уникальный идентификатор группы контейнеров, связанной с записью
ContainerGroup_s строка Имя группы контейнеров, связанной с этой записью
ContainerName_s строка Имя контейнера, связанного с записью
Count_d real Сколько раз событие произошло с момента последнего опроса
FirstTimestamp_t datetime Метка времени для первого возникновения события
Location_s строка Расположение ресурса, связанного с записью
Message строка Если применимо, сообщение из контейнера
OSType_s строка Имя операционной системы, на которой основан контейнер
RawData строка Нет значения
Reason_s строка Текущее состояние группы контейнеров
ResourceGroup строка Имя группы ресурсов, с которой связана запись
SubscriptionId строка Уникальный идентификатор подписки, с которой связана запись
TimeGenerated datetime Метка времени, когда служба Azure создала событие при обработке соответствующего этому событию запроса
Тип строка Имя таблицы.
_ResourceId строка Уникальный идентификатор ресурса, с которым связана запись.
_SubscriptionId строка Уникальный идентификатор подписки, с которой связана запись

Использование диагностических Параметры

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

Например, вот как можно использовать команду New-AzDiagnosticSetting для применения объекта диагностики Параметры к группе контейнеров.

$log = @()
$log += New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category ContainerInstanceLog -RetentionPolicyDay 7 -RetentionPolicyEnabled $true
 
New-AzDiagnosticSetting -Name test-setting -ResourceId <container-group-resource-id> -WorkspaceId <log-analytics-workspace-id> -Log $log

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

Журналы Azure Monitor

Дополнительные сведения о запросах по журналам и настройке предупреждений в журналах Azure Monitor см. в следующих статьях:

Мониторинг использования ЦП и памяти

Дополнительные сведения о мониторинге ресурсов ЦП и памяти для экземпляра контейнера см. в следующей статье: