отправка по почте logrotate несжатых журналов

Страница справочника logrotate имеет этот демонстрационный конфигурационный файл:

   # sample logrotate configuration file
   compress

   /var/log/messages {
       rotate 5
       weekly
       postrotate
           /usr/bin/killall -HUP syslogd
       endscript
   }

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

   /var/log/news/news.crit {
       monthly
       rotate 2
       olddir /var/log/news/old
       missingok
       postrotate
           kill -HUP ‘cat /var/run/inn.pid‘
       endscript
       nocompress
   }

и объясняет второй набор директив следующим образом:

Следующий раздел определяет параметры и для /var/log/httpd/access.log и для /var/log/httpd/error.log. Они повернуты каждый раз, когда это растет по 100k в размере, и старые файлы журналов отправляются по почте (несжатые) на www@my.org после прохождения через 5 вращений вместо того, чтобы быть удаленным. sharedscripts означает, что постповорачивать скрипт будет только запущен однажды (после того, как старые журналы были сжаты), не однажды для каждого журнала, который повернут. Обратите внимание, что двойные кавычки вокруг первого имени файла в начале этого раздела позволяют logrotate поворачивать журналы с пробелами на имя. Нормальные правила заключения в кавычки оболочки применяются, с', ", и \поддерживаемые символы.

Я смотрю на тот файл конфигурации и вижу, что существует a compress директива наверху. Я поэтому предполагаю, что старый вход в систему, что раздел будет уже сжат с gzip (ошибка log.5.gzip, доступ log.5.gzip). Они распаковывают до того, чтобы быть отправленным по электронной почте? Существует ли способ просто отправить их по почте без распаковки?

0
задан 5 May 2014 в 13:52
1 ответ

Журналы сжимаются в локальной файловой системе, да, и распаковываются при отправке по электронной почте, хотя, похоже, это делается с помощью труб вместо файлов (как в gunzip /var/log/httpd/error.log.5.gz | mail "/var/log/httpd/access.log /var/log/httpd/error.log" "www@my.org"). Он не может отправить их по электронной почте до сжатия, как предлагает Janne Pikkarainen, потому что он отправляет по электронной почте наименее свежий лог - которому в данном случае 5 дней. Это также не приведет к безумно большим письмам (благодаря тому, что они будут инициироваться размером 100k вместо, скажем, ежедневно), при условии, что вы будете запускать логротат регулярно - скажем, ежечасно.

Если вы действительно хотите, чтобы вам прислали по электронной почте сжатую версию ваших логов, Дэн Приттс прав - вам нужно создать скрипт, который вы можете вызвать, используя postrotate (или prerotate) вместо использования mail функции самого logrotate. Вы захотите отправлять сжатые лог-журналы в виде вложений, и есть несколько способов подойти к этому, с разным уровнем сложности и функциональности - подробнее см. в этом вопросе об отправке вложений через командную строку на Stack Overflow.

.
2
ответ дан 4 December 2019 в 14:00

Теги

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