Я работаю над анализатором логов apache, он требует, чтобы файлы логов apache были импортированы в каталог для обработки. Я не могу просто указать на каталог журналов apache, так как он импортирует каждый файл перед его удалением. Он также не имеет понятия дубликатов записей, поэтому я не могу настроить cron для копирования /var/log/apache2/*
в папку.
Я предполагаю, что logrotate - лучшее место для этого, но я не знаю, с чего начать его настройку. Итак, мой вопрос:
Как я могу настроить logrotate на SSH-файлы журнала Apache с поворотом на удаленном хосте автоматически?
Альтернативой является локальное копирование и запуск scp
& rm
через cron, но одношаговый процесс SSH был бы хорош.
Посмотрите prerotate
и postrotate
параметры конфигурации (примеры в man logrotate
). У Вас могло, например, быть предварительно поворачивание этого scps файл (удостоверьтесь, что Вы настраиваете ключи SSH правильно; Ваш пользователь root должен смочь к ssh к целевой системе, не нуждаясь в пароле). Это скопировало бы файл access.log прежде вращение (переименование, сжатие, и т.д.) это.
Примечание, что в этом случае Вы потеряли бы любые доступы, которые происходят между копированием файла и шагом вращения, таким образом, Вы могли также вставить это постповорачивать раздел, но скопировать доступ log.1 вместо этого.
в/etc/logrotate/apache2 (это может отличаться, у меня только есть доступ к системе Debian), можно добавить предварительно поворачивать раздел, таким образом, содержание файла похоже на это:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
prerotate
scp /var/log/apache2/access.log you@elsewhere.com
endscript
}