Как управлять файлами журнала с помощью Logrotate в Linux
Обсудим что такое Logrotate, как установить Logrotate и как управлять файлами журнала с помощью Logrotate в Linux.
Что такое Logrotate?
Как следует из названия, 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 znf install logrotate
Управление файлами журнала с помощью 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.
Давайте посмотрим, что делает каждая опция в приведенном выше конфигурационном файле.
- weekly – Дополняет и удаляет старые данные в журналыах каждую неделю.
- rotate 4 – По умолчанию LogRotate хранит журналы за четыре недели. Так как он ротирует все файлы журнала через определенный период времени, вам может понадобиться сохранить резервные копии важных файлов журнала, если вы не хотите их потерять.
- size 20M – Ротирует файлы журнала, если их размер достиг 20 Мб. По умолчанию эта опция отключена. Чтобы включить ее, просто откомментируйте ее.
- create – Создает новые файлы журналов после ротации старых. Эта опция включена по умолчанию.
- compress – Сжимает файлы журнала. По умолчанию журналы не сжимаются. Если вы хотите сжать журналы, откомментируйте эту строку.
- /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
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 на вашем Linux сервере.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен ostechnix.com
Комментарии (0)