Шаблоны ротации логов

Материал из Документация Ключ-АСТРОМ
Версия от 17:36, 6 октября 2026; IKuznetsov (обсуждение | вклад) (Новая страница: « = Шаблоны ротации логов = Ключ-АСТРОМ отслеживает шаблоны ротации файлов логов. Эта функция обеспечивает полноту процесса чтения файлов, даже если '''ЕдиныйАгент''' временно отключён или приложение аварийно завершилось. == Варианты использования == Пони...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Шаблоны ротации логов

Ключ-АСТРОМ отслеживает шаблоны ротации файлов логов. Эта функция обеспечивает полноту процесса чтения файлов, даже если ЕдиныйАгент временно отключён или приложение аварийно завершилось.

Варианты использования

Понимание шаблонов ротации логов актуально в следующих случаях:

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

Отслеживание ротации на основе имени файла

Обычно ротационные файлы логов содержат собственные идентификаторы ротации, встроенные в имена файлов. Идентификаторы ротации могут быть добавленной временной меткой или счётчиком. Например:

  • Активный файл лога без идентификатора ротации: /var/log/application.log
  • Ротационные/архивные файлы логов с добавленными идентификаторами в виде отметки даты:
/var/log/application.log.20220509
/var/log/application.log.20220508
…
/var/log/application.log.20220503
  • Ротационные/архивные файлы логов с добавленными идентификаторами в виде счётчика:
/var/log/application.log.1
/var/log/application.log.2

Идентификатор ротации и имя лога

В зависимости от типа файла Ключ-АСТРОМ может заменить идентификатор ротации символом # в процессе автообнаружения логов.

Пример замены идентификатора ротации на решётку

Активный файл лога:

/var/log/application20220509_060000.log

Ротационные/архивные файлы логов:

/var/log/application20220509_030000.log

/var/log/application20220508_000000.log /var/log/application20220508_210000.log … /var/log/application20220503_090000.log

определяются как /var/log/application#_#.log

Поддерживаемые идентификаторы ротации

Типы данных, которые могут быть заменены на #, включают:

  • Десятичные числа любой длины.
  • Шестнадцатеричные числа длиной не менее восьми цифр.
  • Глобально уникальные идентификаторы (GUID), 128-битные текстовые строки, представляющие идентификацию (ID).

Чтобы ротационный файл лога отслеживался, он должен содержать идентификатор ротации, перед которым и после которого стоит один из предопределённых разделителей, включая . (точка), - (дефис), _ (подчёркивание), () (скобки) или [] (квадратные скобки). В случае, когда идентификатор ротации является десятичным числом, достаточно, чтобы перед ним или после него стоял предопределённый разделитель.

Помимо явных идентификаторов ротации, видимых под символом #, Ключ-АСТРОМ неявно поддерживает мониторинг ротационных файлов, которые:

  • Содержат десятичный суффикс, добавленный в конец имени лога.
  • Содержат десятичный инфикс вместо любого из предопределённых разделителей (., -, _, (), []).

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

Активный файл лога: /var/log/application.log

Ключ-АСТРОМ обнаруживает файл с именем /var/log/application.log и идентифицирует ротационные файлы во всех примерах ниже:

/var/log/application.log.1
/var/log/application.log.2
…
/var/log/application.log.9

или

/var/log/application.20220509.120000.log

/var/log/application.20220509.060000.log /var/log/application.20220508.120000.log …

/var/log/application.20220503.120000.log

или

/var/log/application.20220509.log.1

/var/log/application.20220509.log.2 /var/log/application.20220508.log.1 … /var/log/application.20220503.log.1

/var/log/application.20220503.log.2

Отслеживание ротации на основе типа генерации логов

Ключ-АСТРОМ поддерживает основные типы генерации логов, включая:

  • Ротационная генерация логов на основе правила «Индекс», где приложение открывает файлы один за другим и присваивает им индексные номера.
  • Ротационная генерация логов на основе правила «Переименовать и заменить», где приложение пишет в файл с одним и тем же именем. Если критерий ротации выполнен (например, достигнут требуемый размер файла), открывается новый файл с тем же именем, а старый переименовывается.
  • Ротационная генерация логов на основе правила «Копировать и усечь», где приложение пишет в файл с одним и тем же именем, но сама ротация выполняется внешним процессом, который после выполнения критерия ротации копирует содержимое файла в другое место и усекает содержимое исходного (активного) файла. Примером здесь служит процесс logrotate в Linux.

Ограничения ротации логов

Сценарии, не поддерживаемые в процессе мониторинга ротационных логов, включают:

Тип Описание
Ротационная генерация логов с изменением директории Возможное последствие — создание дубликатов и/или неполных логов.
Ротационная генерация логов с немедленным сжатием Поддерживается в Linux с локальными дисками в ЕдиномАгенте версии 1.343+. На других платформах этот процесс может привести к неполной загрузке логов; сохраняйте хотя бы один несжатый ротационный файл.
Ротационная генерация логов с логикой очереди Самые старые записи логов удаляются всякий раз, когда в файл добавляется новое содержимое, что приводит к относительно постоянному размеру файла лога. Этот сценарий можно легко заменить поддерживаемой схемой ротации, например, начиная новый файл, когда текущий файл достигает предопределённого размера.

Неподдерживаемые сценарии автообнаружения

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

  • Ротационная генерация логов с изменением директории. Этот процесс может привести к созданию множества неагрегированных и/или неполных логов, а также к чрезмерному использованию ресурсов.

Ротационная генерация логов с немедленным сжатием в Linux с локальными дисками

В ЕдиномАгенте версии 1.343+ в Linux с локальными дисками модуль логов ЕдиногоАгента сохраняет открытый дескриптор файла для растущего файла лога. Открытый дескриптор не позволяет операционной системе удалить файл с диска даже после его сжатия или удаления во время ротации. В результате ЕдиныйАгент полностью читает файл, прежде чем освободить дескриптор.

Пример шаблона ротации:

  • /var/log/application.log
  • /var/log/application.log.1.gz
  • /var/log/application.log.2.gz
  • /var/log/application.log.3.gz

Настройка не требуется. Обнаружение немедленного сжатия работает автоматически.

Ограничения

  • Поддержка немедленного сжатия не применяется к шаблону ротации «Копировать и усечь». Файлы логов, ротированные путём копирования содержимого и усечения оригинала, не читаются через открытый дескриптор файла.
  • Поддержка немедленного сжатия доступна только для источников логов с одним активным файлом.
  • Модуль логов поддерживает максимум 2 000 открытых дескрипторов файлов для этой функции.