Мой Linux Logrotate и мои огромные файлы журнала

474
Stephane

Я вижу несколько огромных файлов журнала на моем сервере:

stephane@data:~$ ls -lS /var/log total 55G -rw-r----- 1 root 15G août 9 23:32 syslog.1 -rw-r----- 1 root 15G août 9 23:32 mail.log.1 -rw-r----- 1 root 15G août 9 23:32 mail.info.1 -rw-r----- 1 root 12G août 9 23:32 mail.warn.1 -rw-r----- 1 root 286M août 9 22:21 mail.err.1 -rw-r----- 1 root 82M août 9 10:32 daemon.log.1 -rw-r----- 1 root 2,0M août 9 23:32 messages.1 -rw-r----- 1 root 1,8M août 9 23:31 auth.log.1 -rw-r----- 1 root 1,7M nov. 14 2016 daemon.log.4.gz -rw-r----- 1 root 1,7M nov. 28 2016 daemon.log.2.gz -rw-r----- 1 root 1,5M août 8 04:38 user.log.1 -rw-rw-r-- 1 root 1,4M août 9 23:31 lastlog -rw-r----- 1 root 1,3M nov. 20 2016 daemon.log.3.gz -rw-r----- 1 root 659K août 9 09:57 kern.log.1 -rw-r----- 1 root 466K août 9 23:42 syslog 

Я вижу, что logrotateутилита установлена ​​на сервере:

stephane@data:~$ cat /etc/cron.daily/logrotate #!/bin/sh  test -x /usr/sbin/logrotate || exit 0 /usr/sbin/logrotate /etc/logrotate.conf 

И у него есть несколько файлов конфигурации:

stephane@data:~$ ll /etc/logrotate.d total 52K -rw-r--r-- 1 root 433 nov. 28 2015 apache2 -rw-r--r-- 1 root 173 oct. 17 2014 apt -rw-r--r-- 1 root 79 nov. 7 2012 aptitude -rw-r--r-- 1 root 113 mai 24 2013 cron-apt -rw-r--r-- 1 root 232 juin 5 2014 dpkg -rw-r--r-- 1 root 313 mars 19 2014 fail2ban -rw-r--r-- 1 root 847 janv. 27 2016 mysql-server -rw-r--r-- 1 root 330 févr. 10 2016 nginx -rw-r--r-- 1 root 152 mars 14 2016 php5-fpm -rw-r--r-- 1 root 126 juin 8 2012 redis-server -rw-r--r-- 1 root 162 mai 26 2012 rkhunter -rw-r--r-- 1 root 553 août 9 23:38 rsyslog -rw-r--r-- 1 root 235 juin 15 2015 unattended-upgrades 

Я вижу, что один из этих файлов конфигурации должен выполнять очистку:

stephane@data:~$ cat /etc/logrotate.d/rsyslog /var/log/syslog { rotate 4 daily size 1024k missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript }  /var/log/mail.info /var/log/mail.warn /var/log/mail.err /var/log/mail.log /var/log/daemon.log /var/log/kern.log /var/log/auth.log /var/log/user.log /var/log/lpr.log /var/log/cron.log /var/log/debug /var/log/messages { rotate 4 weekly size 1024k missingok notifempty compress delaycompress sharedscripts postrotate invoke-rc.d rsyslog rotate > /dev/null endscript } 

Запуск logrotateутилиты выглядит нормально:

stephane@data:~$ sudo /usr/sbin/logrotate /etc/logrotate.conf 

Как я могу увидеть, если logrotateсегодня пробежал?

Как я могу logrotateпозаботиться об этих 3 огромных файлах?

Спасибо за любые указания.

1

2 ответа на вопрос

0
user3761842

Я вижу, у вас нет включенных журналов cron, или по крайней мере стандартный файл отсутствует. Скорее всего, это означает, что запись в cron включена /etc/syslog.confили /etc/rsyslog.confпрокомментирована. Теперь я буду использовать этот rsyslog.confпример, но ваша система может использовать старый демон syslog со старым syslog.confфайлом.

Пожалуйста, отредактируйте этот файл и найдите запись, начинающуюся с cron, и раскомментируйте ее, если она закомментирована. У меня была стабильная система Debian, вот так:

cron.* /var/log/cron.log 

После того как вы измените и сохраните файл, выйдите и перезапустите службу syslog / rsyslog следующим образом:

systemctl restart rsyslog 

или в более старых версиях с системой init, например:

/etc/init.d/rsyslog restart 

и создайте файл журнала следующим образом:

> /var/log/cron 

и новые записи для вашего демона cron тоже должны быть там.

Пожалуйста, проверьте ваш rsyslog.confфайл, чтобы увидеть, есть ли другие записи, которые перенаправляют сообщения cron в другом месте. У меня было это в моем:

*.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages 

и это означает, что несколько типов сообщений, в том числе поступающих из cron, все отправляются в файл /var/log/messages, и вы, возможно, уже получили свой ответ.

В зависимости от вашего дистрибутива Linux имена файлов могут отличаться.

Да, запись `# cron. * / Var / log / cron.log` была закомментирована в файле` / etc / rsyslog.conf`. Я удалил его без комментариев. Затем я перезапустил сервис `sudo /etc/init.d/rsyslog restart`, и он отобразил` [....] Перезапуск rsyslog (через systemctl): rsyslog.service`, но он завис и там никогда не возвращал подсказку , Проверка состояния показала, что он был перезапущен, хотя: `sudo /etc/init.d/rsyslog status`` Активен: активен (работает), начиная с jeu. 2017-08-10 14:38:06 CEST; 1мин 4с назад`. Stephane 6 лет назад 0
Затем я создал файл `sudo touch / var / log / cron`, и он пока пуст. Я нахожусь в `Linux data 3.2.0-4-amd64 # 1 SMP Debian 3.2.68-1 + deb7u5 x86_64 GNU / Linux`. Stephane 6 лет назад 0
У вас есть другая строка с cron в rsyslog? Тот, который добавляет все в / var / log / messages? Опять же, ваш дистрибутив может отправить его куда-нибудь еще. Я бы тоже это проверил, чтобы посмотреть, может ли cron уже помещать туда сообщения, и тогда мы не будем беспокоиться о файле /var/log/cron.log. Пожалуйста, также проверьте разрешения других файлов в / var / log и, если они разные , настройте права доступа к файлу cron.log. Проверьте также / var / log / messages на наличие ошибок, почему rsyslog не перезапускается ... user3761842 6 лет назад 0
Да, я думаю, что другая запись cron, которую вы упоминаете: `*. = Информация; *. = Уведомление; *. = Предупреждение; \ auth, authpriv.none; \ cron, daemon.none; \ mail, news.none - / var / журнал / messages`. Я также только что снова проверил состояние `rsyslog` и вижу следующее предупреждение:` Предупреждение: журнал был повернут с момента запуска устройства. Вывод журнала является неполным или недоступным. Stephane 6 лет назад 0
Теперь я только что попытался перезапустить `sudo /etc/init.d/rsyslog restart`, но он зависает, и статус не обновляется.` Sudo /etc/init.d/rsyslog status` дает `Active: active (running), так как Же. 2017-08-10 14:44:01 CEST; 2 недели 4 дня назад` и просмотр файла журнала `tail -200f / var / log / messages` абсолютно ничего не дал файлу. Конечно, я болею за все эти оболочки. Stephane 6 лет назад 0
Я попытался снова перезапустить его, и на этот раз он перезапустился, хотя он завис и никогда не возвращал мне подсказку, статус показывает, что он только что перезапустился. В журнале сообщений было следующее: `29 августа 11:27:21 data rsyslogd: [origin software =" rsyslogd "swVersion =" 8.4.2 "x-pid =" 15845 "x-info =" http: // www .rsyslog.com "] начало 29 августа 11:28:39 data rsyslogd-2007: действие 'действие 18' приостановлено, следующая повторная попытка - вторник, 29 августа 11:29:09 2017 [try http://www.rsyslog.com/ E / 2007 ` Stephane 6 лет назад 0
0
user3761842

При быстром поиске в интернете этой ошибки я обнаружил, что это ошибка Debian Jessie, которая странным образом похожа на вашу ситуацию и включает чтение из / dev / xconsole.

У вас есть что-то подобное в вашем файле conf?

daemon.*;mail.*;\ news.err;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole 

Я не уверен, что могу добавить ссылки, но проверьте: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745492 и https://bugs.debian.org/cgi-bin/bugreport. CGI? ошибка = 742113

Надеюсь, поможет.

Похожие вопросы