Ротация журналов

Чтобы не забивать журналы бесполезной информацией, ограничивая объем разумными пределами, необходимо регулярно проводить ротацию. Регулярная очистка журналов от устаревшей информации позволяет сэкономить место на диске.

Простейшая стратегия ротации журналов состоит в их удалении при запуске демона syslogd и создании новых, чистых журналов. Например, ввод следующих команд

# rm /var/log/messages

# kill -HUP `cat /var/run/syalogd.pid

приводит к удалению файла /var/ log/messages и созданию нового при перезапуске sys logd. Подобная стратегия хорошо работает только в однопользовательских и домашних системах, где нет большой надобности в хранении старых журналов. Что касается многопользовательских серверов, то здесь историческая информация имеет особую ценность, особенно при отслеживании возможных нарушений безопасности. В этом случае удобна иная стратегия ротации - сохранение одного поколения журналов, при котором при запуске syslogd журналы не удаляются, а переименовываются.

# mv /var/log/messages /var/log/messages.1

# kill -HUP `cat /var/run/syslogd.pid"

Если требуется сохранить два поколения журналов, то журналам первого поколения присваиваются имена журналов второго, а текущие журналы переименовываются в журналы первого поколения.

# mv /var/log/messages.1 /var/log/messages.2

# mv /var/log/messages /var/log/messages.1

# kill -HUP ` cat /var/run/syslogd.pid'

Эту процедуру следует автоматизировать, выполняя ее, к примеру, еженедельно в установленное время. Для этого надо написать сценарий процедуры ротации. На сервере Linux Red Hat 7.1 при сохранении одного поколения журналов сценарий будет выглядеть примерно так:

#!/bin/sh

mv /var/log/messages /var/log/messages.1

mv /var/log/secure /var/log/secure. 1

mv /var/log/maillog /var/log/maillog.1

mv /var/log/spooler /var/log/spooler.1 kill -HUP ` cat /var/run/syslogd.pid'

Файл сценария (например, /usr/local/bin/newlogs) создается в текстовом редакторе, затем преобразуется в выполняемый файл.

# chmod 755 /usr/local/bin/newlogs

Далее, требуется внести соответствующую запись в файл crontab, воспользовавшись одним из двух методов, описанных ранее. Запись для запуска сценария каждое воскресное утро в 12.01 имеет следующий вид:

1 12 * * sun /usr/local/bin/newlogs

Примечание

В Red Hat Linux 7.1 ротационный процесс автоматизирован с помощью файла /etc/logro-tate. conf. Первые две команды этого файла выполняют ротацию журналов каждую неделю с использованием четырех недельных журналов. Например, вы можете располагать пятью журналами: /var/log/messages И С /var/log/messages . 1 ПО /var/log/messages . 4.