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

1

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

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 огромных файлах?

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

Stephane
источник

Ответы:

0

Я вижу, у вас не включены журналы 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 имена файлов могут отличаться.

user3761842
источник
Да, #cron.* /var/log/cron.logзапись была закомментирована в /etc/rsyslog.confфайле. Я удалил его без комментариев. Затем я перезапустил sudo /etc/init.d/rsyslog restartслужбу, и она отобразилась, [....] Restarting rsyslog (via systemctl): rsyslog.serviceно зависла там и не вернула мне подсказку. Проверка состояния показал мне , что это был перезапущен , хотя: sudo /etc/init.d/rsyslog status Active: active (running) since jeu. 2017-08-10 14:38:06 CEST; 1min 4s ago.
Стефан
Затем я создал sudo touch /var/log/cronфайл, и он пока пуст. Я в Linux data 3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u5 x86_64 GNU/Linuxсистеме.
Стефан
У вас есть другая строка с cron в rsyslog? Тот, который добавляет все в / var / log / messages? Опять же, ваш дистрибутив может отправить его куда-нибудь еще. Я бы также проверил это, чтобы увидеть, может ли cron уже помещать туда сообщения, и тогда мы не будем беспокоиться о файле /var/log/cron.log. Пожалуйста, также проверьте разрешения других файлов в / var / log и, если они отличаются , настройте права доступа к файлу cron.log. Проверьте также / var / log / messages на наличие ошибок, почему rsyslog не перезапускается ...
user3761842
Да , я думаю , что другая запись хрон вы упомянуть: *.=info;*.=notice;*.=warn;\ auth,authpriv.none;\ cron,daemon.none;\ mail,news.none -/var/log/messages. Я также только что проверил rsyslogстатус снова, и я вижу это предупреждение:Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Стефан
Сейчас я просто попытался перезагрузить, sudo /etc/init.d/rsyslog restartно зависает, и статус не обновляется sudo /etc/init.d/rsyslog statusдает Active: active (running) since jeu. 2017-08-10 14:44:01 CEST; 2 weeks 4 days agoи наблюдение за лог-файлом tail -200f /var/log/messagesабсолютно ничего не выводит в файл. Конечно, я болею за все эти оболочки.
Стефан
0

При быстром поиске в интернете этой ошибки я обнаружил, что это ошибка 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

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

user3761842
источник