На днях увидел “распухший” на 500 мегабайт zebra.log. Нужно срочно чего-то делать. Погуглив, понял, что все уже давно сделано, нужно только использовать это и почаще и побольше читать маны и hanbooks :) . В FreeBSD ротацией логов занимается newsyslog

Newsyslog обычно запускается по cron’у раз в час, читает конфигурационный файл /etc/newsyslog.conf и определяет, когда лог-файлы нуждаются в архивировании и перегруппировке. logfile перемещается в logfile.0, logfile.0 перемещается в logfile.1, и так далее. Другое именование получится при архивировании с помощью gzip: logfile.0.gz, logfile.1.gz, и т.д.

newsyslog.conf показывает, какие лог файлы должны быть проинспектированы, сколько их должно быть сохранено, и когда они должны быть пересмотрены. Лог файлы могут быть перегруппированы и/или заархивированы, когда они либо достигнут определённого размера, либо при достижении определённых даты/времени.

Пример моего /etc/newsyslog.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
лог-файл [владелец:группа]             права к-во размер когда  флаги [пид файл] [sig_num]
/var/log/all.log                        600  7     *    @T00  J
/var/log/amd.log                        644  7     100  *     J
/var/log/auth.log                       600  7     100  *     JC
/var/log/console.log                    600  5     100  *     J
/var/log/cron                           600  3     100  *     JC
/var/log/daily.log                      640  7     *    @T00  JN
/var/log/debug.log                      600  7     100  *     JC
/var/log/kerberos.log                   600  7     100  *     J
/var/log/lpd-errs                       644  7     100  *     JC
/var/log/maillog                        640  7     *    @T00  JC
/var/log/messages                       644  5     100  *     JC
/var/log/monthly.log                    640  12    *    $M1D0 JN
/var/log/pflog                          600  3     100  *     JB    /var/run/pflogd.pid
/var/log/ppp.log        root:network    640  3     100  *     JC
/var/log/security                       600  10    100  *     JC
/var/log/sendmail.st                    640  10    *    168   B
/var/log/slip.log       root:network    640  3     100  *     JC
/var/log/weekly.log                     640  5     1    $W6D0 JN
/var/log/wtmp                           644  3     *    @01T05 B
/var/log/xferlog                        600  7     100  *     JC
/var/log/zebra.log                      644  10    300  *     JC
/var/log/snmpd.log                      644  10    100  *     JC

Разбор конфига

  • лог-файл – абсолютный путь к файлу, с которым будем работать.
  • [владелец:группа] – необязательный параметр, который указывает newsyslog’у кто должен являться владельцом данного лог файла
  • права – права, которые должны быть на файле
  • к-во – максимальное количество заархивированных лог файлов.
  • когда – время, через которое архивировать лог-файл.
  • флаги — некоторые параметры, для лог-файлов:
    • B – по умолчанию, newsyslog добавляет в новый лог-файл сообщение о том, что лог-файл был ротирован, но если лог-файл бинарный, то это сообщение испортит лог, с параметром B newsyslog не будет добавлятьт никаких сообщений в лог
    • C – если лог-файл не существует, то его необходимо создать.
    • G – если указан данный флаг, то в названии лог-файла можно использовать стандартные шаблоны(например *)
    • J – сжимать лог-файл, используя bzip2
    • N – Не предупреждать никакой процесс, о ротации лог-файла
    • W – если используете флаги Z или J, то newsyslog должен подождать, пока заверщиться процесс архивации.
    • Z – сжимать лог, использую gzip.

После редактирования конфига ждем изминений, или же запускаем вручную

1
# newsyslog

После чего в /var/log видим разбитые и сжатые логи согласно нашему конфигу

Ссылки
www.freebsd.org.ua
www.lissyara.su

Нравится эта статья? Подпишитесь на RSS-ленту и получите еще больше классной информации!