Производительность компьютера или сервера в значительной степени зависит от объема системной памяти и использования диска. Если что-то потребляет больше дискового пространства, это приведет к системной ошибке. Аналогичным образом, увеличение размера файла журнала должно контролироваться для уменьшения такого риска.
Logrotate был представлен как системная утилита, которая вращает, сжимает файлы журналов и отправляет системные журналы по почте. Такое управление файлами журналов позволяет сократить использование дискового пространства и предотвратить системные ошибки.
В этой статье мы рассмотрим процесс установки и настройки logrotate на сервере Ubuntu.
Установка Logrotate на сервер Ubuntu
На Ubuntu logrotate установлен по умолчанию, но если он не установлен, вы можете установить его с помощью команды, как показано ниже.
1 2 | sudo apt update sudo apt install logrotate |
Вы можете подтвердить установку командой, как показано ниже.
1 | logrotate --version |
Конфигурационные файлы Logrotate
Конфигурационный файл для logrotate создается демоном logrotate. Существует два пути для такой конфигурации, как показано ниже.
1 | /etc/logrotate.conf |
Это конфигурационный файл, обычно создаваемый для утилиты logrotate
1 | /etc/logrotate.d/ |
Это каталог, состоящий из конкретных ротаций приложений. По умолчанию используется /etc/logrotate.conf, но для каждого приложения может быть задана своя конфигурация в /etc/logrotate.d/.
Конфигурационный файл Logrotate по умолчанию
Как вы знаете, файл /etc/logrotate.conf является файлом конфигурации по умолчанию. Давайте проверим конфигурационный файл, как показано на скриншоте ниже.
Проверьте файл конфигурации с помощью команды, как показано ниже.
1 | cat /etc/logrotate.conf |
Вывод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # see "man logrotate" for details # global options do not affect preceding include directives # rotate log files weekly weekly # use the adm group by default, since this is the owning group # of /var/log/syslog. su root adm # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file #dateext # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # system-specific logs may also be configured here. |
Конфигурация для конкретного приложения
На скриншоте выше есть конфигурация include /etc/logrotate.d, которая означает, что конфигурация для конкретных приложений может быть установлена в этом каталоге. Здесь мы покажем конфигурацию для dpkg, как показано ниже.
1 | cd /etc/logrotate.d/ |
1 | cat dpkg |
Чтобы получить подробную информацию о каждой строке конфигурации, ознакомьтесь с пунктами, рассмотренными ниже. Эти конфигурации заменят конфигурацию по умолчанию /etc/logrotate.conf для конкретных приложений, таких как dpkg.
- monthly: Ротация раз в месяц. Вы можете заменить его на ежедневный или еженедельный в соответствии с вашими требованиями.
- rotate 12: Двенадцать старых файлов журнала будут сохранены. Заменяет стандартное значение 4 в файле /etc/logrotate.conf.
- compress: файлы журналов для этого приложения будут сжиматься с помощью gzip
- delaycompress: сжатие предыдущего лог-файла до следующего цикла ротации откладывается, так как он все еще используется какой-то программой.
- missingok: Не писать никакого сообщения об ошибке, если файл журнала отсутствует
- notifempty: Не ротировать файл журнала, если он пуст.
- create 644 root root: Файл журнала создается с разрешением 644, с пользователем и группой как root
Создание файла конфигурации Logrotate
Допустим, вы установили приложение типа nginx, и его файл журнала создается в /var/log/nginx/, тогда вы можете настроить файл конфигурации logrotate для этого конкретного приложения с помощью команды, как показано ниже.
Перейдите в каталог logrotate
1 | cd /etc/logorate.d/ |
Создайте файл logrotate с помощью редактора
1 | sudo nano nginx |
Конфигурация logrotate Nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript } |
В приведенной выше конфигурации мы установили ротацию на 14, поэтому 14 старых файлов журнала будут сохранены, а файл журнала сжат с помощью gzip. Другая конфигурация, использованная в приведенном выше файле, почти полностью описана в разделе конфигурационного файла logrotate. Вы можете запустить только что созданную конфигурацию с привилегией sudo, как показано ниже.
1 | sudo logrotate -d /etc/logrotate.d/nginx |
Здесь выполняются файлы журналов, как показано на скриншоте ниже.
Logrotate с помощью cron
При установке пакета logrotate для процесса также создается файл crontab внутри /etc/cron.daily с именем logrotate. Для более подробной информации смотрите скриншот, показанный ниже.
1 | cat /etc/cron.daily/logrotate |
Работа с хронозаданием Logrotate
Заключение
В этой статье вы узнали, как установить пакет logrotate и проверить файл конфигурации по умолчанию и конкретного приложения для logrotate с помощью crontab.