url image

Ротация журналов без ISPmanager

Журналы, также называемые "логами" (от англ. log), без ротации разрастались бы до неприличных размеров, занимая весь раздел жёсткого диска, отведённый под их хранение.

Ротация журналов (от англ. log rotation) - управление журналами системы: копирование, очищение, архивация, удаление устаревших архивов и перезапуск процесса, пишущего журнал. Правильно настроенная ротация сильно упростит работу администратора сервера.

Если в какой-то момент жизни сервера под управлением ISPmanager вы решили отказаться от использования данной панели вам необходимо знать, что ротация журналов ошибок и доступа к сайту производилась при помощи ISPmanager. Так как вы отказываетесь от лицензии на ISPmanager подобная ротация перестанет работать, что и приведет к вышеописанному увеличению размера журналов и со временем они смогут достичь размера, который вы считаете неприемлемым (всё свободное дисковое пространство сервера может быть занято журналами с ошибками, либо журналами доступа если на ваш сервер началась DDoS атака).

Правильнее всего настроить ротацию самостоятельно, но если вы хотите вовсе отключить ведение журналов, вам пригодится статья Отключение журналов сайтов без ISPmanager.

 

Debian/Ubuntu/CentOS

В Debian/Ubuntu/CentOS используется штатный logrotate. Logrotate - программа для управления файлами журналов, автоматически архивирует, удаляет, очищает их.

Установить (если пакет ещё не установлен):

aptitude install logrotate

Главный файл настроек: /etc/logrotate.conf

В этом файле должна быть строка для включения остальных файлов конфигурации:

include /etc/logrotate.d

Некоторое ПО складывает настройки ротации своих логов внутрь /etc/logrotate.d/

Синтаксис главного и второстепенных файлов одинаковый, можно настраивать ротацию логов и там, и там.

Пример настройки ротации журналов для nginx:

/var/log/nginx/*.log {
weekly
# ротация раз в неделю

create
# создавать файл после ротации
 
missingok
# отсутствие файла не является ошибкой

rotate 52
# сохраняется последние 52 ротированных файла

compress
# сжимать ротируемый файл

delaycompress
# сжимать предыдущий файл при следующей ротации

notifempty
# не обрабатывать пустые файлы

create 0640 user group
# сразу после ротации создать пустой файл с заданными правами и пользователем

sharedscripts
# скрипты prerotate/postrotate будут выполнены только один раз не зависимо от количества журналов, подходящих под заданный шаблон

postrotate
# скрипт будет выполнен сразу после ротации
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}

Для настройки ротации журналов для доменов (журнал доступа и ошибок) нужно создать секцию c таким заголовком:

/var/www/httpd-logs/*.log {

В большинстве случаев стоит указать следующие опции:

sharedscripts
notifempty
missingok
delaycompress
postrotate
[ ! -f /var/run/httpd.pid ] || kill -USR1 `cat /var/run/httpd.pid`
endscript

И настроить период ротации и кол-во хранимых архивов:

weekly
rotate 52

После чего закончить секцию фигурной закрывающей скобкой:

}

Внутри которой указать желаемые параметры ротации (зависят от посещаемости сайта и пожеланий администратора).

Проверяем как все у нас будет работать (ничего не создастся и не удалится, это только проверка):

logrotate -d /etc/logrotate.d/nginx

Если все в порядке, можно запустить ротацию:

logrotate -v -f /etc/logrotate.d/nginx

Запускается logrotate обычно сам ежедневно (из скрипта /etc/cron.daily/logrotate).

Этот материал был полезен?