ВОЙТИ
    opened image

    Как ограничить размер папки /var/log (logrotate)

    В ОС 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  [путь к файлу конфигурации]

     


    Теперь вы можете добавить/изменить нужные конфиги, что бы не забивалось свободное место на сервере.

    Безперебойной вам работы.