В ОС Linux, почти все программы и сервисы, которые работают в фоне, Apache, Nginx, MySQL и т.д., пишут свое состояние, результат работы и ошибки в лог файлы. Расположение логов размещено в стандартной папке /var/log. Если на сервере очень много сайтов, или же не верно настроены сервисы, сайты имеют множество ошибок, данная папка будет быстро наполняться и может "забить" все свободное место на сервере.
Logrotate — это утилита, которая управляет чередованием и сжатием файлов журналов. Что поможет уберечь владельцев серверов от остановки сервисов, и недоступности сайтов.
В этой статье мы рассмотрим как настроить ротацию журналов, что бы место на диске не забивалось. Настроим стандартную конфигурацию Logrotate, и так же увидим как подстроить под свои потребности.
В большинстве дистрибутивов данная утилита установлена по умолчанию. Версию можно проверить коммандой:
logrotate --version
Если у вас не установлен logrotate, то его можно установить следующими коммандами:
На Ubuntu:
apt install logrotate
На Centos:
yum install logrotate
Конфигурационные файлы logrotate размещены:
/etc/logrotate.conf и каталоге /etc/logrotate.d
В файле /etc/logrotate.conf размещены общие настройки, по умолчанию.
В папке /etc/logrotate.d/ - размещены конфигурационные файлы, программ, сервисов, ротацию логов которых мы будем осуществлять.
Важно!!!
Все конфигурационные файлы, которые размещены в папке /etc/logrotate.d, будут переопределять значения которые установлены по умолчанию в конфигурационном файле /etc/logrotate.conf
И так, допустим нам необходимо сделать ротацю логов для vestacp. Как видим для нее уже автоматически создан файл конфигурации со стандартными настройками.
Разберем директивы:
/usr/local/vesta/log/*.log - это путь к файлам которые необходимо ротировать. * - указывает на то что будут зачищены все файлы в данной папке /usr/local/vesta/log с расширением .log
missingok - не писать сообщение об ошибке, если файл журнала отсутствует.
notifempty - не менять файл журнала, если он пуст.
size 30k - гворить о том что, пока размер лога не превысит 30k он не будет ротироваться. (Можно выставить свое значение)
yearly - ротация раз в год. Это отменяет значение по weekly по молчанию. (Посмотрим еще раз)
create 0600 root root - создает файл после ротирования с правами 0600 владельцем и групой root.
Ниже приведены остальные директивы, которые можно использоваться для настройки ротации. Множество других директив можно посмотреть по коммнанде:
man logrotate
Добавим в стандартный файл:
rotate 2 - таким образом будут сохраняться 2 старых журнала. Что отменяет значение по умолчанию rotate 4
daily - ротация раз в день. Это отменяет значение по умолчанию, один раз в неделю weekly.
Добавим compress - что бы сжимать ротированные файлы. (В данном случае будет использоваться gzip, это будет добавлять к файлам .gz)
Теперь нужный нам конфиг выглядит так:
Эти и другие значения, которые описаны в man logrotate, вы можете добавить в другой нужный вам файл в папке /etc/logrotate.d/ или же подправить те которые уже есть.
Что бы настроить logrotate для другой нужной вам службы, или той службы в которой нет конфигурационного файла в папке /etc/logrotate.d/, можете просто создать его.
После создания/изменения можем его запустить коммандой:
logrotate -f [путь к файлу конфигурации]
Теперь вы можете добавить/изменить нужные конфиги, что бы не забивалось свободное место на сервере.
Безперебойной вам работы.