Шаблоны ротации логов
Шаблоны ротации логов
Ключ-АСТРОМ отслеживает шаблоны ротации файлов логов. Эта функция обеспечивает полноту процесса чтения файлов, даже если ЕдиныйАгент временно отключён или приложение аварийно завершилось.
Варианты использования
Понимание шаблонов ротации логов актуально в следующих случаях:
- Вы настраиваете мониторинг логов для приложения, которое выполняет ротацию файлов логов.
- Вам нужно убедиться, что ЕдиныйАгент собирает все записи логов во время ротации.
- Вы диагностируете пропажу данных логов, вызванную ротацией файлов.
Отслеживание ротации на основе имени файла
Обычно ротационные файлы логов содержат собственные идентификаторы ротации, встроенные в имена файлов. Идентификаторы ротации могут быть добавленной временной меткой или счётчиком. Например:
- Активный файл лога без идентификатора ротации:
/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 открытых дескрипторов файлов для этой функции.