В настоящее время я работаю над тем, чтобы все наши серверы отправляли свои сообщения системного журнала на центральный сервер. Я хотел бы иметь следующую структуру каталогов на центральном сервере, на который отправляются журналы.
<root_dir>/<server_name>/<year>/<month>/<day>/{messages, mail, auth, etc}.log
Могу ли я сделать это только с помощью шаблонов rsyslog или мне нужно использовать другую утилиту, чтобы переместить файлы в нужное место?
Я не знаю, как создавать каталоги, но остальное следует обрабатывать с помощью фильтров и динамических имен файлов.
Обычно в таком случае я бы записал в журнал шаблон файла вроде.
/var/log/<server_name>{messages,mail,auth,etc}.YYYYMMDD
Разделение журналов по серверам может затруднить отслеживание условий на серверах. Сообщения журнала обычно включают исходный сервер, поэтому легко получить сообщения для конкретного сервера с помощью awk
, grep
или любой другой инструмент сопоставления с образцом. Масштабирование такого количества файлов журналов также может быть затруднено, и вы можете выйти за пределы ресурсов.
Обычно ротация журналов выполняется такой программой, как logrotate
. Это позволяет вам контролировать частоту ротации журналов для определенных файлов, а также количество сохраняемых версий. Это postrotate
Действие можно использовать для разделения даты из только что повернутых файлов в желаемую форму. Это может лучше масштабироваться.