Авто очистка логов сервера / Power MTA

Почтовые сервера с небольшим объемом жесткого диска быстро забиваются логами.

Задача: Настроить авто очистку логов с сохранением последних записей.
Решение: настроить авто управление лог файлами
Программы: logrotate
Конфигурация сервера: Vesta cp / Exim / Power MTA

logrotate — это программа автоматической обработки логов с гибкими и простыми настройками

Статья о том как почистить лог файлы в ручную

Установка logrotate



Основные настройки:

находятся в файле /etc/logrotate.conf, настройки правил правильнее размещать в  /etc/logroate.d/.
Однако не запрещается прописывать и в основном конфигурационном файле.
Для удобства примера мы пропишем все настройки в основной файл /etc/logrotate.conf

logrotate.conf по умолчанию

# смотрите «man logrotate» для деталей
# ротация файлов журнала еженедельно
weekly

# хранить за 4 недели
rotate 4

# создавать новые (пустые) файлы журнала после ротации старых
create

# использовать дату в качестве суффикса повернутого файла
dateext

# раскомментируйте это, если вы хотите сжать файлы журнала
#compress

# RPM-пакеты сбрасывают информацию о ротации журнала в этот каталог
include /etc/logrotate.d

# нет пакетов с собственными wtmp и btmp — мы будем вращать их здесь
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

# Системные журналы также могут быть настроены здесь.

[свернуть]
Директивы опций ротации

hourly — каждый час;
daily — каждый день;
weekly — каждую неделю;
monthly — каждый месяц;
yearly — каждый год.

Основные директивы управления и обработки логов:

rotate — указывает сколько старых логов нужно хранить, в параметрах передается количество;
create — указывает, что необходимо создать пустой лог файл после перемещения старого;
dateext — добавляет дату ротации перед заголовком старого лога;
compress — указывает, что лог необходимо сжимать в архив;
delaycompress — не сжимать последний и предпоследний журнал;
extension — сохранять оригинальный лог файл после ротации, если у него указанное расширение;
mail — отправлять Email после завершения ротации;
maxage — выполнять ротацию журналов, если они старше, чем указано;
missingok — не выдавать ошибки, если лог файла не существует;
olddir — перемещать старые логи в отдельную папку;
postrotate/endscript — выполнить произвольные команды после ротации;
start — номер, с которого будет начата нумерация старых логов;
size — размер лога, когда он будет перемещен;

[свернуть]

Пользовотельские настройки

/var/log/*.log — можно использовать подстановочный знак * для ротации всех файлов с расширением .log или другие

Основные log папки почтового сервера:
/var/log
/var/log/audit
/var/log/exim
/var/log/ConsoleKit
/var/log/httpd
/var/log/nginx
/var/log/ntpstats
/var/log/qemu—ga
/var/log/roundcubemail
/var/log/sa
Лог фaйлы Power MTA
/var/log/pmta
Лог фaйлы Vesta CP
/usr/local/vesta/log/

Мы будем удалять все файлы выше 10 мб во всех лог файлах.
Мы считаем что для анализа работы / поломок почтового сервера достаточно несколько последних строк в текущих сутках. Мы опираемся на то что почтовый сервер имеет критически маленький обьем диска. (все по 99 рублей)

Эти настройки означают:
/var/log/* — обрабатывать все файлы в папке /var/log
daily — обрабатывать файлы ежедневно
rotate 1 — хранить один последний файл, более старые копии будут автоматически удаляться
size 10M — Минимальный размер для обработки — 10 мегабайт, файл обрабатываться не будет, если лог не занимает более 10 мегабайт.

logrotate.conf ГОТОВЫЙ

# смотрите «man logrotate» для деталей
# ротация файлов журнала еженедельно
daily

# хранить за 4 недели
rotate 1

# создавать новые (пустые) файлы журнала после ротации старых
create

# использовать дату в качестве суффикса повернутого файла
dateext

# раскомментируйте это, если вы хотите сжать файлы журнала
#compress

# RPM-пакеты сбрасывают информацию о ротации журнала в этот каталог
include /etc/logrotate.d

# нет пакетов с собственными wtmp и btmp — мы будем вращать их здесь
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}

/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

/var/log/* {
daily
rotate 1
size 10M
}

/var/log/exim/* {
daily
rotate 1
size 10M
}

/var/log/audit/* {
daily
rotate 1
size 10M
}

/var/log/httpd/* {
daily
rotate 1
size 10M
}

/var/log/nginx/* {
daily
rotate 1
size 10M
}

/var/log/nginx/* {
daily
rotate 1
size 10M
}

/usr/local/vesta/log/* {
daily
rotate 1
size 10M
}

# Системные журналы также могут быть настроены здесь.

[свернуть]

Тестирование работы настроек конфигурации.

Для этого запустим утилиту logrotate с опцией -d.

Если Вы разбили свою конфигурацию по именованным файлам ротации — запустите его по имени и пути

Вывод покажет что планируется сделать, но не будет изменять файлы на диске.

Вы можете убедиться, что logrotate будет запускаться как положено проверив расписание cron:

Запуск cron задания авторотации 

Для автоматической обработки log файлов создайте задание cron в панель управлением сервера которое будет вызывать задание

Вызвать задание в ручном режиме

Вызывать задание в автоматическом режиме. 

 

Лог фaйлы Power MTA 

PMTA ежедневно копит массовые отчеты о отправки писем в /var/log/pmta

PMTA имеет собственные возможности ротации log файлов. Настраивается в /etc/pmta/config

Настройки конфигурации ротации логов в PMTA /var/log/pmta/log

log-file /var/log/pmta/log # путь к файлу логов PMTA
log-rotate 1 # указывает сколько файлов хранить по умолчанию 8

# move-interval 5m — Эта директива определяет, с каким интервалом PowerMTA должен перемещать файл учёта и заводить новый.
# max-size — размер файла для начала обработки
# delete-after — период хранения log файла перед удалением — по умолчанию 8
# records — указывает какие значения записывать — подробнее смотрите в описании настроек


Ошибки и решения при установки

Ошибка: database disk image is malformed

Решение:

Производится очищение всех header’ов и пакетов старой конфигурации yum.

Авторизация
*
*
Войти с помощью: 
Регистрация
*
*
*
Войти с помощью: 
Генерация пароля
51276208