Файлы журналов наиболее важны для безопасности системы Linux.
Инструмент logrotate специально разработан для упрощения администрирования файлов журналов в системе Linux, что позволяет автоматически ротировать, сжимать, удалять и отправлять файлы журналов.
Вы можете легко настроить logrotate для обработки файла журнала ежедневно, еженедельно, ежемесячно.
Программа logrotate , используемая для ротации файлов журнала, удаляя самые старые из вашей системы и создавая новые файлы журналов.
В этом уроке я объясню, как использовать logrotate для управления журналами на сервере Ubuntu 18.04.
Требования
- Сервер, на котором запущен сервер Ubuntu 18.04.
- Пользователь с привилегиями sudo.
Установка Logrotate
По умолчанию logrotate доступен на сервере Ubuntu 18.04 LTS.
Если нет, вы можете установить его, выполнив следующую команду:
sudo apt-get install logrotate -y
После установки logrotate вы можете проверить версию logrotate, используя следующую команду:
sudo logrotate
Вывод:
logrotate 3.11.0 - Copyright (C) 1995-2001 Red Hat, Inc. This may be freely redistributed under the terms of the GNU Public License Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [-v|--verbose] [-l|--log=STRING] [--version] [-?|--help] [--usage] [OPTION...]
Настройка Logrotate
По умолчанию основной файл конфигурации logrotate logrotate.conf находится по адресу /etc/logrotate.conf.
Другие файлы конфигурации доступны в /etc/logrotate.d.
Вы можете перечислить их с помощью следующей команды:
ls /etc/logrotate.d
Вывод:
alternatives apport dpkg mysql-server rsyslog unattended-upgrades apache2 apt lxd openproject ufw
Ниже перечислены основные параметры logrotate:
missingok: Не поднимает ошибку, если лог отсутствует
weekly: ротирует файлы журнала один раз в неделю
create: старый файл сохраняется под новым именем и создается новый файл
compress:logrotate сжать файлы журнала с помощью gzip для экономии места
rotate 4: logrotate удаляет этот журнал четыре раза, поэтому он хранит четыре недели журналы
notifyempty: ротирует файл журнала, когда он пуст.
По умолчанию logrotate запускается ежедневно, выполняя скрипт оболочки /etc/cron.daily/logrotate.
Давайте проверим ротацию логов apache, выполнив следующую команду:
sudo logrotate -d /etc/logrotate.d/apache2
Вывод:
sudo logrotate -d /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2 Reading state from file: /var/lib/logrotate/status Allocating hash table for state file, size 64 entries Handling 1 logs rotating pattern: /var/log/apache2/*.log after 1 days (14 rotations) empty log files are not rotated, old logs are removed considering log /var/log/apache2/access.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) considering log /var/log/apache2/error.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) considering log /var/log/apache2/other_vhosts_access.log Creating new state Now: 2018-10-11 16:04 Last rotated at 2018-10-11 16:00 log does not need rotating (log has been already rotated) not running prerotate script, since no logs will be rotated not running postrotate script, since no logs were rotated
По умолчанию logrotate запускается как ежедневное задание cron.
Вы можете проверить /etc/cron.daily/logrotate для получения дополнительной информации о работе cron.
Вы также можете настроить задание cron для logrotate для работы почасово, еженедельно и ежегодно.