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


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

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

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

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

Метод Описание
Правило сбора данных (DCR) Правила сбора данных — это наборы инструкций, поддерживающих сбор данных с помощью конвейера Azure Monitor. DCR создается при включении аналитики контейнеров, и можно изменить параметры в этом DCR с помощью портала Azure или других методов.
Карта конфигурации 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
    ИнвентарьKubePod
  6. Если вы хотите настроить параметры, нажмите кнопку "Изменить параметры коллекции".

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

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

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

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

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

    Группировка Таблицы Примечания.
    Все (по умолчанию) Все стандартные таблицы аналитики контейнеров Требуется для включения визуализаций аналитики контейнеров по умолчанию
    Производительность Перф, InsightsMetrics
    Журналы и события ContainerLog или ContainerLogV2, KubeEvents, KubePodInventory Рекомендуется, если вы включили управляемые метрики Prometheus
    Рабочие нагрузки, развертывания и HPA ИнсайтсМетрикс, КубПодИнвентори, КубСобытия, КонтейнерИнвентори, КонтейнерУзелИнвентори, КубУзелИнвентори, КубСервисы
    Постоянные тома InsightsMetrics, KubePVInventory
  7. Нажмите кнопку "Настроить", чтобы сохранить параметры.

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

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

Имя таблицы Интервал? Пространство имен? Замечания
Инвентаризация контейнеров Да Да
Инвентарь контейнерного узла Да Нет Параметр сбора данных для пространств имен не применяется, так как узел Kubernetes не является ресурсом с областью действия пространства имен
KubeNodeInventory Да Нет Параметр сбора данных для пространств имен неприменим, так как узлы Kubernetes не являются ресурсами с областью видимости пространства имен.
ИнвентарьKubePod Да Да
Инвентарь KubePV Да Да
KubeServices Да Да
KubeEvents Нет Да Параметр сбора данных для интервала не применим для событий Kubernetes
Перф Да Да Настройка сбора данных для пространств имен неприменима к метрикам, связанным с узлом Kubernetes, так как узел Kubernetes не является объектом с областью имен.
Инсайты и метрики Да Да Параметры сбора данных применимы только для метрик, которые собирают следующие пространства имен: container.azm.ms/kubestate, container.azm.ms/pv и container.azm.ms/gpu

Примечание.

Фильтрация пространства имен не применяется к записям агента ama-logs. В результате, даже если пространство имен kube-system указано среди исключенных пространств имен, записи, связанные с контейнером агента ama-logs, по-прежнему будут обрабатываться.

Пространство имен метрик Интервал? Пространство имен? Замечания
Взаимосвязи.контейнер/узлы Да Нет Узел не является ресурсом, имеющим область действия в рамках пространства имён
Insights.Контейнер/Подсистемы Да Да
Insights.контейнер/контейнеры Да Да
Insights.container/persistentvolumes Да Да

Потоковые значения в DCR

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

Примечание.

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

Стрим Таблица аналитики контейнеров
Microsoft-ContainerInventory Инвентаризация контейнеров
Microsoft-ContainerLog Журнал контейнера
Microsoft-ContainerLogV2 ContainerLogV2
Microsoft-ContainerLogV2-HighScale ContainerLogV2 (режим высокой шкалы)1
Microsoft-ContainerNodeInventory Инвентарь контейнерного узла
Microsoft-InsightsMetrics Инсайты и метрики
Microsoft-KubeEvents KubeEvents
Microsoft-KubeMonAgentEvents События KubeMonAgent
Microsoft-KubeNodeInventory KubeNodeInventory
Microsoft-KubePodInventory ИнвентарьKubePod
Microsoft-KubePVInventory Инвентарь KubePV
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 в кластере перезагрузятся. Перезапуск — это пошаговый перезапуск для всех подов агента Azure Monitor, поэтому они не перезапускаются одновременно. После завершения перезапуска вы получите сообщение, аналогичное следующему результату:

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

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

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

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, а все остальные символы усекаются.
[параметры_сбора_логов]
[stdout]
enabled
Логический истина
ложь
Определяет, включен ли сбор журналов контейнера stdout. Если установлено значение true и никакие пространства имен не исключаются для сбора журналов stdout, журналы stdout будут собираться из всех контейнеров во всех pod и узлах кластера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является true.
[stdout]
exclude_namespaces
Строка Массив, разделённый запятыми Массив пространств имен Kubernetes, для которых журналы stdout не будут собираться. Этот параметр действует только в том случае, если enabled задано значение true. Если это не указано в ConfigMap, используется значение по умолчанию.
["kube-system","gatekeeper-system"].
[stderr]
enabled
Логический истина
ложь
Определяет, включен ли сбор логов контейнера stderr. Если задается true и никакие пространства имен не исключаются для сбора журналов stderr, журналы stderr будут собираться из всех контейнеров во всех подах и узлах кластера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является true.
[stderr]
exclude_namespaces
Строка Массив, разделённый запятыми Массив пространств имен Kubernetes, для которых журналы ошибок stderr не будут собираться. Этот параметр действует только в том случае, если enabled задано значение true. Если это не указано в ConfigMap, используется значение по умолчанию.
["kube-system","gatekeeper-system"].
[env_var]
enabled
Логический истина
ложь
Управляет коллекцией переменных среды во всех модулях pod и узлах кластера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является true.
[enrich_container_logs]
enabled
Логический истина
ложь
Управляет обогащением журнала контейнеров для заполнения значений свойств Name и Image для каждой записи журнала, записываемой в таблицу ContainerLog для всех журналов контейнеров в кластере. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[collect_all_kube_events]
enabled
Логический истина
ложь
Определяет, собираются ли события 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
Логический истина
ложь
Определяет, включены ли журналы контейнеров с несколькими линиями. См. Многострочный журнал в Службе Аналитика контейнеров для получения подробной информации. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false. Для этого параметр schema должен быть v2.
[metadata_collection]
enabled
Логический истина
ложь
Определяет, собираются ли метаданные в KubernetesMetadata столбце ContainerLogV2 таблицы.
[metadata_collection]
include_fields
Строка Массив, разделённый запятыми Список полей метаданных для включения. Если параметр не используется, собираются все поля. Допустимые значения: ["podLabels","podAnnotations","podUid","image","imageID","imageRepo","imageTag"]
[log_collection_settings.multi_tenancy]
enabled
Логический истина
ложь
Определяет, включена ли многотенантность. Дополнительные сведения см. в многотенантном управляемом логировании. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[настройки_сбора_метрик]
[collect_kube_system_pv_metrics]
enabled
Логический истина
ложь
Позволяет собирать метрики использования постоянного тома (PV) в пространстве имен kube-system. По умолчанию метрики использования постоянных томов с запросами на постоянный том в пространстве имен kube-system не собираются. Если этот параметр установлен на true, то метрики использования PV собираются для всех пространств имен. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[agent_settings]
[proxy_config]
ignore_proxy_settings
Логический истина
ложь
Когда true, параметры прокси-сервера игнорируются. Для сред Kubernetes с поддержкой AKS и Arc, если ваш кластер настроен с прямым прокси-сервером, то параметры прокси-сервера автоматически применяются и используются агентом. Для определенных конфигураций, таких как AMPLS + Proxy, может потребоваться игнорировать конфигурацию прокси-сервера. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.
[agent_settings.fbit_config]
enable_internal_metrics Логический истина
ложь
Определяет, включена ли коллекция внутренних метрик. Если значение по умолчанию не указано в ConfigMap, значением по умолчанию является false.

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