Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

v1.1.3

Новые возможности

  • Добавлена трансформация SetTimestamp в ClusterLogDestination: задаёт время события из поля лога.
  • Добавлен параметр keepDeletedFilesOpenedFor источника file в ClusterLoggingConfig: сколько времени удалённый (ротированный) файл остаётся открытым для чтения.

Изменения

  • Оптимизированы трансформации ClusterLogDestination для снижения нагрузки на агент.

Исправления

  • Исправлена обработка спецсимволов ({{ }}, $, не-ASCII) в значениях лейблов.
  • Исправлены ссылки addLabels на ключи лейблов с /, например {{ .pod_labels."app.kubernetes.io/name" }}.
  • Исправлены фильтры In/NotIn для числовых значений полей: строковые значения фильтра теперь совпадают с целочисленными полями.
  • Исправлен формат syslog в хранилище Socket: неизвестный или числовой syslog.severity, отсутствующий timestamp или нестроковый message больше не приводят к отправке сообщения без заголовка syslog.

Безопасность

  • Исправлены различные уязвимости.

v1.1.2

Изменения

  • Шаблоны путей к файлам в ClusterLoggingConfig проверяются. Список include источника file теперь обязателен и не может быть пустым. Шаблоны include и exclude проверяются контроллером: поддерживаются *, ?, [...] и ** как целый компонент пути. О некорректном шаблоне контроллер сообщает с указанием имени ресурса, и конфигурация агента не обновляется, пока ресурс не исправлен.
  • tenantID хранилища Loki принимает только допустимые для Loki символы, шаблоны {{ field }} и спецификаторы strftime.
  • Агент больше не запрашивает все лейблы узла для каждой записи лога.

Исправления

  • Исправлена ошибка, из-за которой агент не запускался после аварийного завершения (перезагрузка узла, OOM kill), если дисковый буфер хранилища остался в несогласованном состоянии.
  • Исправлено применение maxSize дискового буфера хранилища со значением 4Gi и больше: применялось меньшее значение.

Безопасность

  • Исправлены различные уязвимости.

v1.1.1

Новые возможности

  • Удаление записей лога для отдельного хранилища. Новая трансформация DropEvent в ClusterLogDestination удаляет запись лога, если истинны все условия из when (синтаксис условий такой же, как в AddLabels). Действует только для того хранилища, где задана, в отличие от logFilter и labelFilter в ClusterLoggingConfig, которые фильтруют для всех хранилищ.
  • Порядок чтения и размер порции чтения файлов логов. У источников kubernetesPods и file в ClusterLoggingConfig и PodLoggingConfig появились два параметра: maxReadBytes ограничивает, сколько читается из одного файла, прежде чем перейти к следующему, — чтение распределяется равномерно между множеством активных файлов; oldestFirst заставляет агент дочитывать старые файлы раньше новых. Без них агент читает как раньше.

Изменения

  • Агент сбора логов обновлён до Vector 0.58. Существующие ресурсы ClusterLoggingConfig, PodLoggingConfig и ClusterLogDestination продолжают работать без изменений. Метрики буферов vector_buffer_events и vector_buffer_byte_size удалены в Vector; в собственных дашбордах и алертах используйте vector_buffer_size_events, vector_buffer_size_bytes и vector_buffer_max_size_events.

Исправления

  • Исправлено время события для хранилищ Loki, Splunk, Vector и Socket с кодеком GELF: они сохраняли время отправки записи вместо времени её появления. Поле timestamp для этих хранилищ теперь содержит время в UTC, а не в локальном часовом поясе узла; для Splunk строка в локальном часовом поясе сохраняется в поле datetime. Остальные хранилища не затронуты.

v1.1.0

Изменения

  • Сбором логов теперь управляет отдельный контроллер. Раньше конфигурацию агента сбора логов генерировали хуки модуля; теперь её собирает Deployment log-shipper-controller, который работает в неймспейсе модуля на системных узлах. Контроллер следит за ресурсами ClusterLogDestination, ClusterLoggingConfig и PodLoggingConfig, обновляет конфигурацию агента при каждом изменении и запускает или останавливает DaemonSet агента в зависимости от того, есть ли что отправлять. Существующие ресурсы и настройки модуля продолжают работать без изменений. Контроллер отдаёт собственные метрики, которые собирает Prometheus платформы.

Улучшения

  • Логи, собранные с подов Kubernetes, теперь содержат лейбл host_ip с IP-адресом узла, на котором работает под. Раньше лейбл устанавливался только для логов, читаемых из файлов.

Безопасность

  • Исправлены различные уязвимости.

v1.0.7

Новые возможности

  • Порядок чтения и размер порции чтения файлов логов. У источников kubernetesPods и file в ClusterLoggingConfig и в PodLoggingConfig появились два новых параметра. maxReadBytes ограничивает, сколько байт агент читает из одного файла за проход, прежде чем перейти к следующему, — так чтение распределяется равномернее между множеством активно растущих файлов. oldestFirst заставляет агент дочитывать старые файлы, прежде чем браться за новые. Если параметры не заданы, агент работает как раньше: логи подов читаются от старых к новым, файлы — равномерно, порция чтения — 2048 байт. Кроме того, агент больше не добавляет к каждой записи лога пода идентификатор контейнера, идентификатор образа, список IP-адресов пода, аннотации пода, UID пода и лейблы неймспейса. Эти поля удалялись перед отправкой, поэтому отправляемые логи не меняются.

Исправления

  • Исправлено время события для хранилищ Loki, Splunk, Vector и Socket с кодеком GELF. Агент преобразовывал метку времени каждой записи в строку в локальном часовом поясе узла, а эти хранилища берут время события только из типизированной метки времени, поэтому сохраняли время отправки записи вместо времени её появления. Теперь метка времени доходит до них без изменений, и поле timestamp в записи содержит время в UTC, а не в локальном часовом поясе узла; для Splunk строка в локальном часовом поясе сохраняется в поле datetime. Elasticsearch, Logstash, Kafka и Socket с другими кодеками по-прежнему получают метку времени строкой в локальном часовом поясе узла. Преобразование теперь выполняется непосредственно перед трансформациями хранилища, а метка времени, уже заменённая трансформацией, остаётся как есть.

v1.0.6

Новые возможности

  • Удаление записей лога для отдельного хранилища. Новая трансформация DropEvent в ClusterLogDestination удаляет запись лога, если истинны все условия из when. Условия записываются так же, как в AddLabels, а трансформация выполняется на своей позиции в списке, поэтому может опираться на лейблы, добавленные предыдущими трансформациями. В отличие от logFilter и labelFilter в ClusterLoggingConfig, которые фильтруют на источнике для всех хранилищ, DropEvent действует только для того хранилища, где задана.

Изменения

  • Логи, собираемые с подов Kubernetes, теперь содержат лейбл host_ip с IP-адресом узла, на котором работает под. У логов, собираемых из файлов, он уже был.

v1.0.5

Улучшения

  • В документации с примерами теперь описано, как обрабатываются несколько трансформаций ParseMessage: они применяются к каждой записи по порядку сверху вниз, и после первого успешного разбора остальные не применяются. Поэтому трансформации для конкретных форматов, например JSON, следует указывать первыми, а универсальную трансформацию строки — последней.

v1.0.4

Исправления

  • Исправлена трансформация ReplaceValue с литеральной строкой замены (без именованных групп в target). Агент сбора логов отклонял сгенерированную конфигурацию, поэтому трансформация не работала.

v1.0.3

Изменения

  • Системные метрики агента сбора логов теперь содержат лейбл d8_source="dkp". Он позволяет отличать метрики платформы от метрик, которые отдают пользовательские приложения.
  • Неймспейс модуля теперь проверяется по профилю Pod Security Standards restricted. Нарушения выводятся только как предупреждения и не блокируют запуск нагрузки. Отклонения, которые нужны агенту, — запуск от root и монтирование путей узла для чтения логов контейнеров и узла и для хранения позиции чтения — описаны и обоснованы в ресурсе SecurityPolicyException, который поставляется вместе с модулем, поэтому сбор логов продолжает работать без каких-либо действий.
  • Права агента ограничены настолько, насколько это позволяет сбор логов: применён seccomp-профиль RuntimeDefault, сброшены все Linux capabilities, запрещено повышение привилегий, корневая файловая система контейнеров доступна только для чтения.
  • Удалён параметр конфигурации модуля registry.dockercfg. Образы модуля всегда загружаются с учётными данными хранилища образов платформы, поэтому, если параметр указан в настройках модуля, удалите его перед обновлением.

Безопасность

  • Исправлены различные уязвимости.

v1.0.2

Исправления

  • Исправлены ссылки между страницами документации и в описаниях custom resource, которые перестали работать после переноса модуля в отдельный репозиторий.

v1.0.1

Изменения

  • Образы модуля теперь собираются на основе образов container-base с использованием пакетного менеджера pm.

Безопасность

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

v1.0.0

Изменения

  • Переработано управление ресурсами в режиме Static: запросы CPU и памяти теперь задаются в секции resourcesRequests.static.requests, а ограничения CPU и памяти для агента — в секции resourcesRequests.static.limits. Существующие настройки модуля конвертируются автоматически, никаких действий не требуется.

Исправления

  • Исправлена ошибка, из-за которой запросы CPU и памяти, заданные для режима управления ресурсами Static, не доходили до контейнера агента сбора логов.