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

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

ConfigMap в основном используется для настройки сбора данных журналов контейнеров и переменных среды кластера. Журналы stdout и stderr можно настроить отдельно, а также включить многостроочное ведение журнала. L Конкретная конфигурация, которая может выполняться с помощью ConfigMap, включает:

  • Включение и отключение фильтрации пространства имен для журналов stdout и stderr
  • Включение и отключение коллекции переменных среды для кластера
  • Фильтрация для обычных событий Kube
  • Выбор схемы журнала
  • Включение и отключение многостроного ведения журнала
  • Игнорировать параметры прокси-сервера

Внимание

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

См. статью "Настройка сбора данных в аналитике контейнеров" с помощью правила сбора данных для списка параметров и процесса настройки сбора данных с помощью DCR.

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

  • ConfigMap — это глобальный список, который может применяться только к агенту ConfigMap для аналитики контейнеров. Применение другого ConfigMap переопределит предыдущие параметры коллекции ConfigMap.
  • Минимальная версия агента, поддерживаемая для сбора stdout, stderr и переменных среды из рабочих нагрузок контейнеров, — ciprod06142019 или более поздней версии. Чтобы проверить версию агента, на вкладке Node выберите узел. На панели "Свойства" обратите внимание на значение свойства тега изображения агента. Подробнее о версиях агентов и содержании каждого выпуска см. в разделе Заметки о выпуске агента.

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

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

  1. Скачайте файл YAML шаблона ConfigMap и откройте его в редакторе. Если у вас уже есть файл ConfigMap, его можно использовать.

  2. Измените файл YAML ConfigMap с настройками с помощью параметров, описанных в параметрах сбора данных

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

    kubectl apply -f <configmap_yaml_file.yaml>
    

    Пример:

    kubectl apply -f container-azm-ms-agentconfig.yaml
    

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

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

Параметры сбора данных

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

Параметр Тип данных значение Описание
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. Если коллекция переменных среды включена глобально, ее можно отключить для определенного контейнера, установив переменную AZMON_COLLECT_ENVFalse среды в параметре Dockerfile или в файле конфигурации pod в разделе env: . Если коллекция переменных среды глобально отключена, невозможно включить коллекцию для определенного контейнера. Единственным переопределением, которое можно применить на уровне контейнера, является отключение коллекции, когда она уже включена глобально.
[enrich_container_logs] enabled Логический true
false
Управляет обогащением журнала контейнеров для заполнения Name значений и Image свойств для каждой записи журнала, записанной в таблицу ContainerLogV2 или 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.
[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.

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

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

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

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

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

Ошибки, связанные с применением изменений конфигурации, также доступны для просмотра. Для устранения неполадок изменений конфигурации доступны следующие параметры:

  • Из журнала pod агента с помощью той же kubectl logs команды.

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

    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. Данные отправляются каждый час с серьезностью ошибок для ошибок конфигурации. Если ошибки отсутствуют, запись в таблице будет содержать данные с информацией о серьезности, которая не сообщает об ошибках. Свойство Теги содержит дополнительные сведения об объекте pod и идентификаторе контейнера, в которых произошла ошибка, а также о первом и последнем случае ошибок и их количестве за последний час.

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

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

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

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

    Name:           ama-logs-fdf58
    Namespace:      kube-system
    Node:           aks-agentpool-95673144-0/10.240.0.4
    Start Time:     Mon, 10 Jun 2019 15:01:03 -0700
    Labels:         controller-revision-hash=589cc7785d
                    dsName=ama-logs-ds
                    pod-template-generation=1
    Annotations:    agentVersion=1.10.0.1
                  dockerProviderVersion=5.0.0-0
                    schema-versions=v1 

Часто задаваемые вопросы

Как включить сбор журналов для контейнеров в пространстве имен kube-system через Helm?

Сбор журналов из контейнеров в пространстве имен kube-system по умолчанию отключен. Вы можете включить коллекцию журналов, задав переменную среды в агенте Azure Monitor. См. страницу GitHub аналитики контейнеров.

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