Настройка коллекции журналов в аналитике контейнеров

В этой статье содержатся сведения о настройке сбора данных в аналитике контейнеров для кластера Kubernetes после его подключения. Рекомендации по включению аналитики контейнеров в кластере см. в разделе "Включение мониторинга для кластеров Kubernetes".

Методы конфигурации

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

Метод Description
Правило сбора данных (DCR) Правила сбора данных — это наборы инструкций, поддерживающих сбор данных с помощью конвейера Azure Monitor. DCR создается при включении аналитики контейнеров и можно изменить параметры в этом DCR с помощью портал Azure или других методов.
ConfigMap ConfigMaps — это механизм Kubernetes, позволяющий хранить не конфиденциальные данные, такие как файл конфигурации или переменные среды. Аналитика контейнеров ищет ConfigMap в каждом кластере с определенными параметрами, определяющими данные, которые должны собираться.

Настройка сбора данных с помощью DCR

DCR, созданный аналитикой контейнеров, называется MSCI-cluster-region-cluster-name><<>. Этот DCR можно просмотреть вместе с другими пользователями в подписке, а также изменить его с помощью методов, описанных в разделе "Создание и изменение правил сбора данных" (DCR) в Azure Monitor. Хотя вы можете напрямую изменить DCR для определенных настроек, вы можете выполнить наиболее необходимую настройку, используя описанные ниже методы. Дополнительные сведения об изменении DCR см. в разделе "Преобразования данных" в аналитике контейнеров.

Внимание

Кластеры AKS должны использовать управляемое удостоверение, назначаемое системой или назначаемое пользователем. Если кластер использует субъект-службу, необходимо обновить кластер, чтобы использовать управляемое удостоверение, назначаемое системой, или управляемое удостоверение, назначаемое пользователем.

Настройка DCR с помощью портал Azure

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

  1. Выберите кластер в портал Azure.

  2. Выберите параметр "Аналитика" в разделе "Мониторинг" в меню.

  3. Если аналитика контейнеров уже включена в кластере, нажмите кнопку "Параметры мониторинга". В противном случае выберите "Настройка Azure Monitor " и ознакомьтесь с разделом "Включить мониторинг в кластере Kubernetes" с помощью Azure Monitor , чтобы получить подробные сведения о включении мониторинга.

    Снимок экрана: кластер AKS с кнопкой

  4. Для AKS и Kubernetes с поддержкой Arc выберите использовать управляемое удостоверение , если кластер еще не перенесен на проверку подлинности управляемого удостоверения.

  5. Выберите один из предустановок затрат.

    Снимок экрана: параметры подключения.

    Предустановка затрат Частота сбора Фильтры пространства имен Сбор сообщений системного журнала Собранные данные
    Стандартные 1 м нет Не включено Все стандартные таблицы аналитики контейнеров
    Оптимизированные для затрат 5 м Исключает kube-system, gatekeeper-system, azure-arc Не включено Все стандартные таблицы аналитики контейнеров
    Системный журнал 1 м нет Включено по умолчанию Все стандартные таблицы аналитики контейнеров
    Журналы и события 1 м нет Не включено ContainerLog/ContainerLogV2
    KubeEvents
    KubePodInventory
  6. Если вы хотите настроить параметры, нажмите кнопку "Изменить параметры коллекции".

    Снимок экрана: параметры коллекции.

    Имя Описание
    Частота сбора Определяет частоту сбора данных агентом. Допустимые значения: 1 млн – 30 млн в интервалах 1 млн. Значение по умолчанию — 1 млн.
    Фильтрация пространства имен Выкл. Собирает данные во всех пространствах имен.
    Включить: собирает только данные из значений в поле пространств имен.
    Исключение. Собирает данные из всех пространств имен, за исключением значений в поле пространств имен.

    Массив пространств имен Kubernetes разделенных запятыми для сбора данных инвентаризации и perf на основе пространства именFilteringMode. Например, пространства имен = ["kube-system", "default"] с параметром Include собирают только эти два пространства имен. С параметром "Исключить" агент собирает данные из всех других пространств имен, за исключением kube-system и по умолчанию.
    Собранные данные Определяет, какие таблицы аналитики контейнеров необходимо собирать. Ниже приведено описание каждой группировки.
    Включение ContainerLogV2 Логический флаг для включения схемы ContainerLogV2. Если задано значение true, журналы stdout/stderr отправляются в таблицу ContainerLogV2 . В противном случае журналы контейнеров отправляются в таблицу ContainerLog , если иное не указано в ConfigMap. При указании отдельных потоков необходимо включить соответствующую таблицу для ContainerLog или ContainerLogV2.
    Включение коллекции Syslog Включает коллекцию Syslog из кластера.

    Параметр "Собранные данные" позволяет выбрать таблицы, заполненные для кластера. Таблицы группируются по наиболее распространенным сценариям. Чтобы указать отдельные таблицы, необходимо изменить DCR с помощью другого метода.

    Снимок экрана: параметры собранных данных.

    Группировка Таблицы Примечания.
    Все (по умолчанию) Все стандартные таблицы аналитики контейнеров Требуется для включения визуализаций аналитики контейнеров по умолчанию
    Производительность Perf, InsightsMetrics
    Журналы и события ContainerLog или ContainerLogV2, KubeEvents, KubePodInventory Рекомендуется, если вы включили управляемые метрики Prometheus
    Рабочие нагрузки, развертывания и hpAs InsightsMetrics, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
    Постоянные тома InsightsMetrics, KubePVInventory
  7. Нажмите кнопку "Настроить", чтобы сохранить параметры.

Применимые таблицы и метрики для DCR

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

Имя таблицы Интервал? Пространства имен? Замечания
ContainerInventory Да Да
ContainerNodeInventory Да Нет Параметр сбора данных для пространств имен не применяется, так как узел Kubernetes не является ресурсом с областью действия пространства имен
KubeNodeInventory Да Нет Параметр сбора данных для пространств имен не является применимым узлом Kubernetes не является ресурсом области имен
KubePodInventory Да Да
KubePVInventory Да Да
KubeServices Да Да
KubeEvents No Да Параметр сбора данных для интервала не применим для событий Kubernetes
Производительность Да Да Параметр сбора данных для пространств имен не применим для связанных метрик узла Kubernetes, так как узел Kubernetes не является объектом области имен.
InsightsMetrics Да Да Параметры сбора данных применимы только для метрик, которые собирают следующие пространства имен: container.azm.ms/kubestate, container.azm.ms/pv и container.azm.ms/gpu
Пространство имен метрик Интервал? Пространства имен? Замечания
Insights.container/nodes Да Нет Узел не является ресурсом с областью действия пространства имен
Insights.container/pods Да Да
Insights.container/containers Да Да
Insights.container/persistentvolumes Да Да

Потоковая передача значений в DCR

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

Примечание.

Если вы знакомы со структурой правила сбора данных, имена потоков в этой таблице указываются в разделе потоков данных DCR.

Stream Таблица аналитики контейнеров
Microsoft-ContainerInventory ContainerInventory
Microsoft-ContainerLog Журнал контейнера
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (режим высокой шкалы)1
Microsoft-ContainerNodeInventory ContainerNodeInventory
Microsoft-InsightsMetrics InsightsMetrics
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents KubeMonAgentEvents
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory KubePodInventory
Microsoft-KubePVInventory KubePVInventory
Microsoft-KubeServices KubeServices
Microsoft-Perf Производительность

1 Не следует использовать Microsoft-ContainerLogV2 и Microsoft-ContainerLogV2-HighScale в одном DCR. Это приведет к тому, что данные будут повторяться.

Совместное использование DCR с несколькими кластерами

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

DCR связан с кластером с соответствующим правилом сбора данных (DCRA). Используйте интерфейс предварительной версии DCR для просмотра и удаления существующих связей DCR для каждого кластера. Затем эту функцию можно использовать для добавления связи в один DCR для нескольких кластеров.

Настройка сбора данных с помощью ConfigMap

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

Внимание

ConfigMap — это глобальный список, который может применяться только к агенту ConfigMap для аналитики контейнеров. Применение другого ConfigMap переопределит предыдущие параметры коллекции ConfigMap.

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

  • Минимальная версия агента, поддерживаемая для сбора stdout, stderr и переменных среды из рабочих нагрузок контейнеров, — ciprod06142019 или более поздней версии.

Настройка и развертывание ConfigMap

Используйте следующую процедуру, чтобы настроить и развернуть файл конфигурации ConfigMap в кластере:

  1. Если у вас еще нет ConfigMap для аналитики контейнеров, скачайте файл YAML шаблона ConfigMap и откройте его в редакторе.

  2. Измените файл YAML ConfigMap с помощью настроек. Шаблон содержит все допустимые параметры с описанием. Чтобы включить параметр, удалите символ комментария (#) и задайте его значение.

  3. Создайте ConfigMap, выполнив следующую команду kubectl:

    kubectl config set-context <cluster-name>
    kubectl apply -f <configmap_yaml_file.yaml>
    
    # Example: 
    kubectl config set-context my-cluster
    kubectl apply -f container-azm-ms-agentconfig.yaml
    

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

    configmap "container-azm-ms-agentconfig" created`.
    

Проверка конфигурации

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

kubectl logs ama-logs-fdf58 -n kube-system -c ama-logs

Если из модулей pod агента Azure Monitor возникают ошибки конфигурации, выходные данные будут отображать ошибки, аналогичные следующим:

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

Используйте следующие параметры для устранения неполадок изменений конфигурации:

  • Используйте ту же kubectl logs команду из модуля pod агента.

  • Просмотрите динамические журналы для ошибок, аналогичных следующим:

    config::error::Exception while parsing config map for log collection/env variable settings: \nparse error on value \"$\" ($end), using defaults, please check config map for errors
    
  • Данные отправляются KubeMonAgentEvents в таблицу в рабочей области Log Analytics каждый час с серьезностью ошибок в конфигурации. Если ошибки отсутствуют, запись в таблице будет содержать данные с информацией о серьезности, которая не сообщает об ошибках. Столбец Tags содержит дополнительные сведения об идентификаторе модуля pod и контейнера, на котором произошла ошибка, а также первое вхождение, последнее вхождение и подсчет за последний час.

Проверка версии схемы

Поддерживаемые версии схемы конфигурации доступны в виде заметки pod (версии схемы) в модуле агента Azure Monitor. Их можно увидеть с помощью следующей команды kubectl.

kubectl describe pod ama-logs-fdf58 -n=kube-system.

Параметры ConfigMap

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

Параметр Тип данных значение Описание
schema-version Строка (с учетом регистра) Версия 1 Используется агентом при анализе этого ConfigMap. Поддерживаемая в данный момент версия схемы — v1. Изменение этого значения не поддерживается и будет отклонено при оценке ConfigMap.
config-version Строка Позволяет отслеживать версию файла конфигурации в системе или репозитории системы управления версиями. Максимально допустимое количество символов равно 10, а все остальные символы усекаются.
[log_collection_settings]
[stdout]
enabled
Логический true
false
Определяет, включена ли коллекция журналов контейнеров stdout. Если задано true значение и нет пространств имен для коллекции журналов stdout, журналы stdout будут собираться из всех контейнеров во всех модулях pod и узлах кластера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является true.
[stdout]
exclude_namespaces
Строка Массив с разделителями-запятыми Массив пространств имен Kubernetes, для которых журналы stdout не будут собираться. Этот параметр действует только в том случае, если enabled задано значение true. Если значение по умолчанию не указано в ConfigMap, значение по умолчанию
["kube-system","gatekeeper-system"].
[stderr]
enabled
Логический true
false
Определяет, включена ли коллекция журналов контейнеров stderr. Если задано true значение и нет пространств имен для коллекции журналов stderr, журналы stderr будут собираться из всех контейнеров во всех модулях pod и узлах кластера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является true.
[stderr]
exclude_namespaces
Строка Массив с разделителями-запятыми Массив пространств имен Kubernetes, для которых журналы stderr не будут собираться. Этот параметр действует только в том случае, если enabled задано значение true. Если значение по умолчанию не указано в ConfigMap, значение по умолчанию
["kube-system","gatekeeper-system"].
[env_var]
enabled
Логический true
false
Управляет коллекцией переменных среды во всех модулях pod и узлах кластера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является true.
[enrich_container_logs]
enabled
Логический true
false
Управляет обогащением журнала контейнеров для заполнения Name значений и Image свойств для каждой записи журнала, записанной в таблицу ContainerLog для всех журналов контейнеров в кластере. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[collect_all_kube_events]
enabled
Логический true
false
Определяет, собираются ли события Kube всех типов. По умолчанию события Kube с типом Normal не собираются. Если этот параметр задан true, обычные события больше не фильтруются, а все события собираются. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[schema]
containerlog_schema_version
Строка (с учетом регистра) Версия 2
Версия 1
Задает формат приема журналов. Если v2используется таблица ContainerLogV2. Если v1используется таблица ContainerLog (эта таблица устарела). Для кластеров, включающего аналитику контейнеров с помощью Azure CLI версии 2.54.0 или более поздней, используется v2параметр по умолчанию. Дополнительные сведения см. в схеме журнала Аналитики контейнеров.
[enable_multiline_logs]
enabled
Логический true
false
Определяет, включены ли журналы контейнеров с несколькими линиями. Дополнительные сведения см . в разделе "Многострочный журнал" в Службе "Аналитика контейнеров". Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false. Для этого требуется schema , чтобы параметр был v2.
[metadata_collection]
enabled
Логический true
false
Определяет, собираются ли метаданные в KubernetesMetadata столбце ContainerLogV2 таблицы.
[metadata_collection]
include_fields
Строка Массив с разделителями-запятыми Список полей метаданных для включения. Если параметр не используется, собираются все поля. Допустимые значения: ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[metric_collection_settings]
[collect_kube_system_pv_metrics]
enabled
Логический true
false
Позволяет собирать метрики использования постоянного тома (PV) в пространстве имен kube-system. По умолчанию метрики использования для постоянных томов с утверждениями сохраняемого тома в пространстве имен kube-system не собираются. Если этот параметр имеет значение true, то собираются метрики использования для всех пространств имен. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[agent_settings]
[proxy_config]
ignore_proxy_settings
Логический true
false
Если trueпараметры прокси-сервера игнорируются. Для сред Kubernetes с поддержкой AKS и Arc, если кластер настроен с помощью перенаправленного прокси-сервера, то параметры прокси-сервера автоматически применяются и используются для агента. Для определенных конфигураций, таких как AMPLS + Proxy, может потребоваться игнорировать конфигурацию прокси-сервера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.

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