Авто очистка логов сервера / Power MTA
Почтовые сервера с небольшим объемом жесткого диска быстро забиваются логами.
Задача: Настроить авто очистку логов с сохранением последних записей.
Решение: настроить авто управление лог файлами
Программы: logrotate
Конфигурация сервера: Vesta cp / Exim / Power MTA
logrotate — это программа автоматической обработки логов с гибкими и простыми настройками
Статья о том как почистить лог файлы в ручную
Установка logrotate
Основные настройки:
находятся в файле /etc/logrotate.conf, настройки правил правильнее размещать в /etc/logroate.d/.
Однако не запрещается прописывать и в основном конфигурационном файле.
Для удобства примера мы пропишем все настройки в основной файл /etc/logrotate.conf
# ротация файлов журнала еженедельно
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/* { daily rotate 1 size 10M }
Эти настройки означают:
/var/log/* — обрабатывать все файлы в папке /var/log
daily — обрабатывать файлы ежедневно
rotate 1 — хранить один последний файл, более старые копии будут автоматически удаляться
size 10M — Минимальный размер для обработки — 10 мегабайт, файл обрабатываться не будет, если лог не занимает более 10 мегабайт.
# смотрите «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 -d /etc/logrotate.conf
Если Вы разбили свою конфигурацию по именованным файлам ротации — запустите его по имени и пути
logrotate -d /etc/logrotate.d/YOU_NAME_FILE_ROTATE.conf
Вывод покажет что планируется сделать, но не будет изменять файлы на диске.
Вы можете убедиться, что logrotate будет запускаться как положено проверив расписание cron:
ls /etc/cron.daily/
Запуск cron задания авторотации
Для автоматической обработки log файлов создайте задание cron в панель управлением сервера которое будет вызывать задание
Вызвать задание в ручном режиме
logrotate -f /etc/logrotate.conf
Вызывать задание в автоматическом режиме.
0 0 * * */usr/sbin/logrotate -f /etc/logrotate.conf
Лог фaйлы Power MTA
PMTA ежедневно копит массовые отчеты о отправки писем в /var/log/pmta
Настройки конфигурации ротации логов в 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 — указывает какие значения записывать — подробнее смотрите в описании настроек
############################################################################### # Section 6: LOG AND SPOOL SETTINGS ############################################################################################ log-file /var/log/pmta/log # logrotate is used for rotation log-rotate 1 # Общий лог файл move-interval 5m max-size 10M delete-after 1d # Hard Bounce (жесткие ошибки) лог файл records r records rb record-fields r * record-fields rb * move-interval 5m max-size 10M # MB delete-after 1d # SoftBounce logs (мягкие ошибки) лог файл records t record-fields t * move-interval 5m max-size 10M # MB delete-after 1d # Лог файл доставки records d record-fields d * move-interval 5m max-size 10M # MB delete-after 1d
Ошибки и решения при установки
Ошибка: database disk image is malformed
Решение:
yum clean all
Производится очищение всех header’ов и пакетов старой конфигурации yum.