Настройка сбора данных в аналитике контейнеров с помощью ConfigMap
В этой статье описывается настройка сбора данных в аналитике контейнеров с помощью ConfigMap. Config Карты — это механизм Kubernetes, позволяющий хранить не конфиденциальные данные, такие как файл конфигурации или переменные среды.
ConfigMap в основном используется для настройки сбора данных журналов контейнеров и переменных среды кластера. Журналы stdout и stderr можно настроить отдельно, а также включить многостроочное ведение журнала. L Конкретная конфигурация, которая может выполняться с помощью ConfigMap, включает:
- Включение и отключение фильтрации пространства имен для журналов stdout и stderr
- Включение и отключение коллекции переменных среды для кластера
- Фильтрация для обычных событий Kube
- Выбор схемы журнала
- Включение и отключение многостроного ведения журнала
- Игнорировать параметры прокси-сервера
Внимание
Полная конфигурация сбора данных в аналитике контейнеров может потребовать редактирования как ConfigMap, так и правила сбора данных для кластера, так как каждый метод позволяет настроить другой набор параметров.
См. статью "Настройка сбора данных в аналитике контейнеров" с помощью правила сбора данных для списка параметров и процесса настройки сбора данных с помощью DCR.
Необходимые компоненты
- ConfigMap — это глобальный список, который может применяться только к агенту ConfigMap для аналитики контейнеров. Применение другого ConfigMap переопределит предыдущие параметры коллекции ConfigMap.
- Минимальная версия агента, поддерживаемая для сбора stdout, stderr и переменных среды из рабочих нагрузок контейнеров, — ciprod06142019 или более поздней версии. Чтобы проверить версию агента, на вкладке Node выберите узел. На панели "Свойства" обратите внимание на значение свойства тега изображения агента. Подробнее о версиях агентов и содержании каждого выпуска см. в разделе Заметки о выпуске агента.
Настройка и развертывание ConfigMap
Используйте следующую процедуру, чтобы настроить и развернуть файл конфигурации ConfigMap в кластере:
Скачайте файл YAML шаблона ConfigMap и откройте его в редакторе. Если у вас уже есть файл ConfigMap, его можно использовать.
Измените файл YAML ConfigMap с настройками с помощью параметров, описанных в параметрах сбора данных
Создайте 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_ENV False среды в параметре 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 аналитики контейнеров.
Следующие шаги
- См. статью "Настройка сбора данных в аналитике контейнеров" с помощью правила сбора данных для настройки сбора данных с помощью DCR вместо ConfigMap.