Поиск по сайту:

Как управлять файлами журналов с помощью Logrotate в Linux

Настройка и управление ротацией журналов с помощью Logrotate в Linux

Мы уже опубликовали руководство, в котором описано, как настроить централизованный сервер Rsyslog в системе CentOS. Сегодня в этом руководстве мы обсудим что такое Logrotate, как установить Logrotate и как управлять файлами журналов с помощью Logrotate в Linux. .

Что такое Логротат?

Как следует из названия, Logrotate полностью удаляет журналы из вашей системы через определенные промежутки времени. он также обеспечивает автоматическую ротацию, сжатие, удаление и отправку файлов журналов по почте.

Утилита logrotate обрабатывает каждый файл журнала ежечасно, ежедневно, еженедельно, ежемесячно, а также когда он становится слишком большим или файл журнала достигает определенного размера.

Эта утилита logrotate упрощает администрирование файлов журналов и особенно полезна для систем, которые ежедневно создают большой объем файлов журналов.

Установите Logrotate в Linux

Logrotate доступен в репозиториях по умолчанию большинства дистрибутивов Linux.

Чтобы установить logrotate в Alpine Linux, запустите:

sudo apk add logrotate

Чтобы установить logrotate в Arch Linux и его вариантах, таких как EndeavourOS и Manjaro Linux, выполните следующую команду:

sudo pacman -S logrotate

Чтобы установить logrotate в системах на базе RPM, таких как Fedora, RHEL, CentOS, CentOS Stream, AlmaLinux и Rocky Linux, запустите:

sudo dnf install logrotate

В более старых системах RHEL и CentOS используйте yum вместо dnf для установки logrotate.

sudo yum install logrotate

Чтобы установить logrotate в Debian, Ubuntu и производных Ubuntu, таких как Elementary OS, Linux Mint и Pop!_OS, выполните следующую команду:

sudo apt install logrotate

Logrotate можно установить в системах SUSE и openSUSE с помощью следующей команды:

sudo zypper install logrotate

Скомпилируйте и установите Logrotate из исходного кода.

Убедитесь, что вы установили инструменты разработки в своей системе Linux. Перейдите по следующей ссылке, чтобы узнать, как установить инструменты разработки в различных дистрибутивах Linux.

Как установить инструменты разработки в Linux

Загрузите последнюю версию архива logrotate со страницы релизов. На момент написания этого руководства последней версией была 3.21.0. Давайте загрузим его с помощью программы wget в текущий каталог:

wget https://github.com/logrotate/logrotate/releases/download/3.21.0/logrotate-3.21.0.tar.gz

Давайте распакуем загруженный архив:

tar xvzf logrotate-3.21.0.tar.gz

Содержимое архива будет извлечено в каталог с именем logrotate-3.21.0. Перейдите в этот каталог:

cd logrotate-3.21.0

Далее выполните следующую команду:

./configure

Если вы столкнулись со следующей ошибкой:

configure: error: libpopt required but not found

Установите libpopt-dev в системах на базе Debian:

sudo apt install libpopt-dev

В системах на базе RPM установите пакет popt-devel.

sudo dnf install popt-devel

Затем повторно запустите команду ./configure.

./configure

Наконец, установите logrotate с помощью команд:

make
sudo make install

Управление файлами журналов с помощью Logrotate

Основной файл конфигурации LogRotate — /etc/logrotate.conf.

Вот содержимое этого файла по умолчанию в моей системе Fedora Linux.

see "man logrotate" for details

global options do not affect preceding include directives

rotate log files weekly
weekly

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.

В других дистрибутивах Linux вывод может выглядеть немного иначе. Например, файл logrotate.conf моего старого Arch Linux имеет другое содержимое.

$ cat /etc/logrotate.conf
see "man logrotate" for details
rotate log files weekly
weekly

keep 4 weeks worth of backlogs
rotate 4

restrict maximum size of log files
#size 20M

create new (empty) log files after rotating old ones
create

uncomment this if you want your log files compressed
#compress

Logs are moved into directory for rotation
olddir /var/log/archive

Ignore pacman saved files
tabooext + .pacorig .pacnew .pacsave

Arch packages drop log rotation information into this directory
include /etc/logrotate.d

/var/log/wtmp {
 monthly
 create 0664 root utmp
 minsize 1M
 rotate 1
}

/var/log/btmp {
 missingok
 monthly
 create 0600 root utmp
 rotate 1
}

Давайте посмотрим, что делает каждый параметр в приведенном выше файле конфигурации.

  • еженедельно — журналы меняются каждую неделю.
  • rotate 4 – по умолчанию LogRotate сохраняет файлы журналов за четыре недели (очевидно, за один месяц). Поскольку он чередует все файлы журналов через определенный период времени, вам может потребоваться сохранить резервную копию важных файлов журналов, если вы не хотите их потерять.
  • размер 20 МБ — ротирует файлы журналов, если они достигли размера 20 МБ. По умолчанию эта опция отключена. Чтобы включить его, просто раскомментируйте его.
  • create — создает новые файлы журналов один раз после ротации старых файлов журналов. Эта опция включена по умолчанию.
  • сжать — сжимает файлы журналов. Кроме того, по умолчанию он не сжимает журналы. Если вы хотите сжать журналы, раскомментируйте эту строку.
  • /etc/logrotate.d/ – этот каталог содержит файлы правил журнала для конкретного приложения.
  • missing ok — если файл журнала отсутствует, Logrotate перейдет к следующему файлу без выдачи сообщения об ошибке.

Logrotate сегментирует файлы журналов и сжимает их в соответствии с правилами, указанными в каталоге /etc/logrotate.d/.

Давайте посмотрим на содержимое этого каталога.

ls /etc/logrotate.d/

Пример вывода:

bootlog  chrony  firewalld  httpd        libvirtd       numad  psacct  sssd            wtmp
btmp     dnf     glusterfs  iscsiuiolog  libvirtd.qemu  ppp    samba   wpa_supplicant

Как вы видите в приведенном выше выводе, он содержит различные файлы правил для всех журналов, управляемых Logrotate.

Чтобы просмотреть правило журнала конкретного приложения, например samba, выполните:

cat /etc/logrotate.d/samba

Пример вывода:

/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log {
 notifempty
 missingok
 sharedscripts
 copytruncate
 postrotate
 /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true
 endscript
}

Здесь,

  • notifempty — указывает, что файлы журналов не будут ротироваться, если они пусты.
  • copytruncate — усекает исходный файл журнала на месте после создания копии.
  • sharedscript — сценарии выполняются только один раз, независимо от того, сколько журналов соответствует шаблону с подстановочными знаками.
  • postrotate/endscript – строки между postrotate и endscript выполняются после ротации файла журнала.

Вы также можете создать свои собственные файлы правил журнала в каталоге /etc/logrotate.d/ и определить свои собственные правила.

Конфигурация Крон

Cron ежедневно запускает утилиту logroate в поисках файлов журналов для ротации. Вы можете указать правила автоматической ротации журналов в файле /etc/cron.daily/logrotate, чтобы избежать вмешательства пользователя вручную.

$ cat /etc/cron.daily/logrotate 
#!/bin/sh

skip in favour of systemd timer
if [ -d /run/systemd/system ]; then
    exit 0
fi

this cronjob persists removals (but not purges)
if [ ! -x /usr/sbin/logrotate ]; then
    exit 0
fi

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE

Он будет выполнять ротацию журналов каждый день в определенное время.

Проверьте статус Logrotate

Чтобы проверить, меняются ли файлы журналов, проверьте файл logrotate.status:

sudo cat /var/lib/logrotate/logrotate.status 

Пример вывода:

logrotate state -- version 2
"/var/log/glusterfs/snaps/*/*.log" 2022-11-29-14:0:0
"/var/log/firewalld" 2022-11-29-14:0:0
"/var/log/boot.log" 2023-4-7-16:10:29
"/var/log/hawkey.log" 2023-4-7-16:10:29
"/var/log/glusterfs/*.log" 2022-11-29-14:0:0
"/var/log/httpd/*log" 2022-11-29-14:0:0
"/var/log/chrony/*.log" 2022-11-29-14:0:0
"/var/log/wtmp" 2022-11-29-14:0:0
"/var/log/btmp" 2023-4-7-16:10:29
"/var/log/glusterfs/samples/*.samp" 2022-11-29-14:0:0
"/var/log/iscsiuio.log" 2022-11-29-14:0:0
"/var/log/libvirt/libvirtd.log" 2022-11-29-14:0:0
"/var/log/libvirt/qemu/*.log" 2022-11-29-14:0:0
"/var/log/sssd/sssd_kcm.log" 2023-4-7-16:10:29
"/var/log/wpa_supplicant.log" 2022-11-29-14:0:0
"/var/log/glusterfs/bricks/*.log" 2022-11-29-14:0:0
"/var/log/numad.log" 2022-11-29-14:0:0
"/var/log/ppp/connect-errors" 2022-11-29-14:0:0
"/var/log/samba/log.*" 2022-11-29-14:0:0
"/var/account/pacct" 2022-11-29-14:0:0

В некоторых старых дистрибутивах Linux расположение этого файла может быть другим.

cat /var/lib/logrotate.status

Пример вывода:

logrotate state -- version 2
"/var/log/samba/log.smbd" 2022-5-12-11:0:0
"/var/log/lircd" 2022-6-15-10:0:0
"/var/log/httpd/*log" 2022-5-12-11:0:0
"/var/log/wtmp" 2022-5-6-10:0:0
"/var/log/samba/*.log" 2022-5-12-11:0:0
"/var/log/btmp" 2023-4-1-11:36:53
"/var/log/samba/log.nmbd" 2023-4-1-11:0:0

Получать помощь

Для получения более подробной информации запустите logrotate, введя следующую команду:

logrotate --help

Также обратитесь к справочным страницам:

man logrotate

Заключение

Logrotate — простой, но полезный инструмент ротации журналов, упрощающий управление журналами. Вам не нужно усложнять себе сложные этапы настройки и установки. Все говорит само за себя. Если вы управляете системой, которая создает большое количество файлов журналов, вы можете периодически менять журналы с помощью Logrotate на своем сервере Linux.

Ресурс:

  • Войти в репозиторий GitHub

Статьи по данной тематике