Поделиться через


Схема журнала аналитики контейнеров

Аналитика контейнеров хранит данные журнала, собираемые в таблице с именем ContainerLogV2 в рабочей области Log Analytics. В этой статье описывается схема этой таблицы и параметров конфигурации. Она также сравнивает эту таблицу с устаревшей таблицей ContainerLog и содержит подробные сведения о переносе из нее.

Сравнение таблиц

ContainerLogV2 — это схема по умолчанию для CLI версии 2.54.0 и больше. Это таблица по умолчанию для клиентов, которые начали работать с аналитикой контейнеров, используя проверку подлинности с управляемым удостоверением. ContainerLogV2 можно явно включить с помощью CLI версии 2.51.0 или более поздней, используя настройки сбора данных.

Внимание

Поддержка таблицы ContainerLog будет прекращена 30 сентября 2026 г.

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

Отличия функций Журнал контейнера ContainerLogV2
Схема Сведения в ContainerLog. Сведения о ContainerLogV2.
Дополнительные столбцы:
- ContainerName
- PodName
- PodNamespace
- LogLevel 1
- KubernetesMetadata 2
Введение Настраивается только с помощью ConfigMap. Настраиваемая с помощью ConfigMap и DCR. 3
Цены Совместим только с журналами аналитики по полной цене. Поддерживает недорогой уровень базовых журналов в дополнение к журналам аналитики.
Выполнение запроса Требуется несколько операций соединения с таблицами инвентаризации для стандартных запросов. Включает дополнительные метаданные pod и контейнера для уменьшения сложности запросов и операций соединения.
Многострочный Не поддерживаются: многострочные записи разделяются на несколько строк. Поддержка многострочного ведения журнала для создания консолидированных единых записей многострочных выходных данных.

1 Если LogMessage является допустимым JSON и имеет ключ с именем level, его значение будет использоваться. В противном случае сопоставление ключевых слов на основе регулярных выражений используется для вывода LogLevel из LogMessage. Это вывод может привести к некоторым неправильным классификациям. LogLevel— строковое поле со значением работоспособности, например CRITICAL, ERROR, WARNING, INFO, DEBUGTRACEили UNKNOWN.

2KubernetesMetadata — это необязательный столбец, который активируется с помощью метаданных Kubernetes. Значение этого поля — JSON с полями podLabels, podAnnotations, podUid, , Imageи ImageTagImage repo.

Конфигурация DCRтребует аутентификации управляемой учетной записи.

Примечание.

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

Если код LogMessage JSON неправильно сформирован, эти сообщения журнала будут приема с помощью экранирования. По умолчанию, сообщения журнала размером больше 16 КБ усекаются. При включении многострочного ведения журнала сообщения журнала больше 64 КБ обрезаются.

Включение схемы ContainerLogV2

Включите схему ContainerLogV2 для кластера с помощью правила сбора данных кластера (DCR) или ConfigMap. Если оба параметра включены, ConfigMap имеет приоритет. Таблица ContainerLog используется только при явном отключении DCR и ConfigMap.

Прежде чем включить схему ContainerLogsV2 , необходимо оценить наличие правил генерации оповещений, использующих таблицу ContainerLog . Для использования новой таблицы необходимо обновить все такие оповещения. Выполните следующий запрос Azure Resource Graph, чтобы проверить правила генерации оповещений, ссылающиеся на таблицу ContainerLog .

resources
| where type in~ ('microsoft.insights/scheduledqueryrules') and ['kind'] !in~ ('LogToMetric')
| extend severity = strcat("Sev", properties["severity"])
| extend enabled = tobool(properties["enabled"])
| where enabled in~ ('true')
| where tolower(properties["targetResourceTypes"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["targetResourceType"]) matches regex 'microsoft.operationalinsights/workspaces($|/.*)?' or tolower(properties["scopes"]) matches regex 'providers/microsoft.operationalinsights/workspaces($|/.*)?'
| where properties contains "ContainerLog"
| project id,name,type,properties,enabled,severity,subscriptionId
| order by tolower(name) asc

Фильтрация метаданных и журналов Kubernetes

Фильтрация метаданных и журналов Kubernetes расширяет схему ContainerLogsV2 с дополнительными метаданными Kubernetes. Функция фильтрации журналов предоставляет возможности фильтрации как для рабочих нагрузок, так и для контейнеров платформы. Эти функции обеспечивают более широкий контекст и улучшенную видимость рабочих нагрузок.

Примечание.

Метаданные и журналы Kubernetes на панели мониторинга Grafana в настоящее время не позволяют фильтровать базовые журналы.

Функции

  • Расширенная схема ContainerLogV2 при включении метаданных журналов Kubernetes добавляет столбец, который ContainerLogV2KubernetesMetadata улучшает устранение неполадок с простыми запросами журналов и удаляет необходимость объединения с другими таблицами. Поля в этом столбце включают: PodLabels, PodAnnotations, PodUid, Image, ImageID, , ImageRepo. ImageTag Эти поля расширяют возможности устранения неполадок с помощью запросов журналов, не присоединяясь к другим таблицам. Дополнительные сведения о включении функции метаданных Kubernetes см. ниже.

  • Уровень логирования Эта функция добавляет LogLevel столбец в ContainerLogV2 с возможными значениями критические, ошибка, предупреждение, информация, отладка, трассировка или неизвестно. Это помогает оценить работоспособность приложений на основе уровня серьезности. Добавление панели мониторинга Grafana позволяет визуализировать тенденции на уровне журнала с течением времени и быстро определять затронутые ресурсы.

  • Панель мониторинга Grafana для визуализации Панель мониторинга Grafana предоставляет цветовую визуализацию уровня журнала, а также предоставляет анализ об объёме данных, частоте, записях и журналах. Вы можете получить анализ с учётом срочности, динамическую информацию о тенденциях на уровнях журналирования с течением времени и критически важный мониторинг в режиме реального времени. Панель мониторинга также предоставляет подробную разбивку по компьютерам, модулям pod и контейнерам, что позволяет подробно анализировать и определить устранение неполадок. Дополнительные сведения об установке панели мониторинга Grafana см. ниже.

  • Фильтрация журналов на основе аннотаций для рабочих нагрузок. Эффективная фильтрация журналов с помощью аннотаций Pod. Это позволяет сосредоточиться на релевантной информации, не отвлекаясь на шум. Фильтрация на основе аннотаций позволяет исключать сбор журналов для определённых подов и контейнеров путём аннотирования пода, что поможет значительно снизить затраты на анализ журналов. Дополнительные сведения о настройке фильтрации на основе заметок см. в разделе "Фильтрация журналов на основе заметок".

  • Фильтрация журналов на основе ConfigMap для журналов платформы (системные пространства имен Kubernetes). Журналы платформы генерируются контейнерами в системных (или аналогичных ограниченных) пространствах имен. По умолчанию все журналы контейнеров из пространства имен системы исключаются, чтобы свести к минимуму затраты на данные в рабочей области Log Analytics. Однако в конкретных сценариях устранения неполадок журналы контейнеров системного контейнера играют важную роль. Одним из примеров coredns является контейнер в kube-system пространстве имен.

Включение метаданных Kubernetes

Внимание

Для сбора метаданных Kubernetes требуется аутентификация с помощью управляемой идентичности и ContainerLogsV2

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

[log_collection_settings.metadata_collection]
    enabled = true
    include_fields = ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]

Через несколько минут KubernetesMetadata столбец должен быть включен в любые запросы журнала для ContainerLogV2 таблицы, как показано ниже.

Снимок экрана: containerlogv2.

Установка панели мониторинга Grafana

Внимание

Если вы включили Grafana, используя рекомендации по включению мониторинга для кластеров Kubernetes, ваш экземпляр Grafana уже должен иметь доступ к рабочей области Azure Monitor для метрик Prometheus. Панель мониторинга метаданных журналов Kubernetes также требует доступа к рабочей области Log Analytics, содержащей данные журнала. Ссылку «Изменение разрешений на доступ к Azure Monitor» используйте для получения рекомендаций по предоставлению вашему экземпляру Grafana роли «Читатель мониторинга» для рабочей области Log Analytics.

Импортируйте панель мониторинга из галереи Grafana на панели мониторинга ContainerLogV2. Затем вы можете открыть приборную панель и выбрать значения для DataSource, Subscription, ResourceGroup, кластера, пространства имен и меток.

Снимок экрана: панель мониторинга grafana.

Примечание.

При первоначальной загрузке панели мониторинга Grafana могут появиться ошибки из-за того, что переменные еще не выбраны. Чтобы предотвратить повторение, сохраните панель мониторинга после выбора набора переменных, чтобы он стал по умолчанию на первом открытии.

Ведение журнала с несколькими строками

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

Примечание.

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

Ограничения

  • Многострочное ведение журнала объединяет трассировки стека исключений из контейнеров с помощью Java, Python, .NET и Go. Другие записи журнала с несколькими линиями, включая пользовательские исключения и произвольные сообщения журнала, не объединяются.

  • Если строка журнала превышает 16 КБ, вместо того чтобы по умолчанию усекаться средой выполнения контейнера, она будет поддерживаться до 64 КБ.

Примеры

Отключено многострочное ведение журнала трассировки исключений

Снимок экрана, на котором показано, что многострочная регистрация отключена.

Включено многострочное ведение журнала многострочной трассировки стека исключений Go

Снимок экрана с включённой поддержкой многострочности.

Многострочное ведение журнала трассировки стека Java включено

Снимок экрана, на котором показана поддержка нескольких строк для Java.

Включено многострочное ведение журнала для трассировки стека Python

Снимок экрана: многострочный режим для Python.

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