@Venot

Как сделать ротацию логов в зависимости от процента занимаего места?

Есть директория с логами, как можно удалять старые файлы если размер папки больше определенного размера? У logrotate есть ли такая возможность или написать скрипт на bash и добавить в cron?
  • Вопрос задан
  • 715 просмотров
Пригласить эксперта
Ответы на вопрос 6
@q2digger
никого не трогаю, починяю примус
У logrotate есть возможность запускать скрипты до и или после ротации. В этих скриптах можно все реализовать.
Ответ написан
Комментировать
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
У logrotate нет зависимости от размера папки - потому что в linux нет папок, там директории.
Но и от размера директории тоже нет-есть только размер файлов.
Поэтому можно отключить автоматическую ротацию, написать скрипт, который будет проверять размер директории по крону и давать команду logrotate с определенным конфигом.
Ответ написан
@pfg21
ex-турист
задачу в системд по превышению размера каталога, в задаче скрипт удаляющий десять самых старых файликов.
потом допилить рашпилем по месту.
Ответ написан
@Jordan_Belforts
Ох, что то мне это напоминает тестовое задание в UCOZ(UKIT)
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Погуглите "logrotate based on directory size".
Насколько понимаю, это пример вполне рабочий:

For instance (/etc/logrotate.d/foo):

/var/log/foo # logs path
{
rotate 4 # limit number of files
size 10M # limit to 10 Mb
weekly # if less than size limit, it will rotate by expired time
compress # compressed file
delaycompress
}
In case logrotate scrip runs every day, it will be implement if file's size is bigger than 10Mb. Max log files at the folder (/var/log/foo) is limited to 4, Otherwise it will remove old files
Ответ написан
Комментировать
FoxCloud
@FoxCloud
Хостинг и облачные сервисы
Здравствуйте!
Ротация логов помогает достичь нескольких целей:
- Сохранение логов определённого периода.
- Уменьшение занимаемого места на диске.

Чтобы достичь результата есть несколько вариантов.
Рекомендуемый вариант №1.
Увеличить приоритет на: наличие доступа к логам за именно тот промежуток времени, который необходим вам. Понизить приоритет на сохранение места на диске за счет ротации логов.
Таким образом вы настраиваете ротацию логов и, если места на диске не хватает - делаете апгрейд/добавление дискового пространства. Варианты есть как для выделенных серверов, так и для виртуальных. На данный момент ресурс дискового пространства очень дешевый и с каждым годом становится дешевле.

Вариант №2
Два параметра, которые могут дополнить вашу текущую настройки logroate:
rotate 2
size 500M

Данные параметры могут помочь вам сохранить дисковое пространство за счет удаления некоторых логов.
Ротация логов сработает, если файл достигнет 500МБ и при этом максимальное количество логов ограничено. Все более старые будут удаляться.
Таким образом можно строго ограничивать количество места в директории, которое могут занять ваши логи.
Не рекомендуемый вариант, т.к. здесь приоритет выставлен на уменьшение занимаемого диска, а не на наличие логов, которые могут быть необходимы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы