Имеется
logrotate
, имеется для него daily-задача в кроне.
Проблема в том, что задача-то есть, файлы настроек для ротации логов — есть, но логи не меняются и продолжают нагло жрать место.
В статусе logrotate — срабатывания за сегодня нет:
[simterm]
root@bttrm-stage-console:~# cat /var/lib/logrotate/status logrotate state -- version 2 "/var/log/rabbitmq/[email protected]" 2018-10-23-10:56:16 "/var/log/rabbitmq/[email protected]" 2018-10-24-12:0:49
[/simterm]
Проверяем содержимое файла крон-задачи:
[simterm]
root@bttrm-stage-console:~# cat /etc/cron.daily/logrotate #!/bin/sh test -x /usr/sbin/logrotate || exit 0 /usr/sbin/logrotate /etc/logrotate.conf
[/simterm]
Выполняем пошагово шаги в нём:
[simterm]
root@bttrm-stage-console:~# test -x /usr/sbin/logrotate root@bttrm-stage-console:~# echo $? 0
[/simterm]
Тут всё ОК, идём дальше — выполняем /usr/sbin/logrotate /etc/logrotate.conf
, но добавляем --verbose
:
[simterm]
root@bttrm-stage-console:~# /usr/sbin/logrotate -v /etc/logrotate.conf reading config file /etc/logrotate.conf error: /etc/logrotate.conf:5 unknown group 'syslog' removing last 0 log configs
[/simterm]
Ага — вот и проблема.
Проверяем содержимое файла настроек, ищем группу syslog
:
[simterm]
root@bttrm-stage-console:~# cat /etc/logrotate.conf | grep syslog su root syslog
[/simterm]
logrotate
у нас настраивается из Ansible — SimpliField/ansible-logrotate, проверяем доступные опции:
... logrotate_options: - weekly - su root syslog - rotate 4 - create ...
Обновляем плейбук — меняем группу на adm
(Debian):
... - role: SimpliField.logrotate logrotate_options: - su root adm logrotate_applications: - name: nginx definitions: - logs: - /var/log/nginx*.log options: - size 100M - rotate 5 - daily - missingok - notifempty - compress - create 0640 www-data adm - postrotate systemctl reload nginx.service - endscript ...
Запускаем Ansible, проверяем конфиг на сервере:
[simterm]
root@bttrm-stage-console:~# cat /etc/logrotate.conf | grep su su root adm
[/simterm]
И проверяем конфиг ещё раз:
[simterm]
root@bttrm-stage-console:~# /usr/sbin/logrotate -v /etc/logrotate.conf reading config file /etc/logrotate.conf including /etc/logrotate.d Ignoring nginx.dpkg-dist, because of *.dpkg-dist pattern match reading config file apache2 reading config file apt reading config file chrony reading config file dpkg reading config file exim4-base reading config file exim4-paniclog reading config file nginx reading config file php7.2-fpm reading config file rabbitmq-server reading config file redis-server reading config file rsyslog reading config file supervisor reading config file unattended-upgrades Reading state from file: /var/lib/logrotate/status Allocating hash table for state file, size 64 entries Creating new state Creating new state Handling 18 logs rotating pattern: /var/log/apache2/*.log after 1 days (14 rotations) empty log files are not rotated, old logs are removed switching euid to 0 and egid to 4 ...
[/simterm]
И статус:
[simterm]
root@bttrm-stage-console:~# cat /var/lib/logrotate/status logrotate state -- version 2 "/var/log/supervisor/project_1_itunes_purchases_00-stderr---supervisor-jSllQ9.log" 2018-10-25-11:0:0 "/var/log/supervisor/project_2-updates_04-stderr---supervisor-XoTsZT.log" 2018-10-25-11:0:0 "/var/log/supervisor/project_2-updates_01-stderr---supervisor-HoCWpF.log" 2018-10-25-11:0:0 ...
[/simterm]
Готово.