Назад | Перейти на главную страницу

Отправить все журналы Linux на удаленный rsyslog и сохранить в исходном имени файла

Я знаю, что есть много подобных тем, но у меня есть особая потребность: мне нужно отправить все журналы с серверов Linux на центральный сервер входа в систему.

Проблема 1: На центральном сервере мне нужно хранить журналы в следующем формате:

<root_dir>/<server_name>/<year>/<month>/<day>/{messages, mail, auth, httpd, etc}.log (the exact original file name of the log file)

Конфигурация сервера rsyslog:

$template RemoteHost,"/var/log/remotes/%HOSTNAME%/%$YEAR%/%$MONTH%/%$DAY%/%PROGRAMNAME%.log" which creates the folder structure ok but for some logs it doesn't work (httpd logs)

Проблема 2: мне нужно отправить ВСЕ журналы. На удаленных серверах (CentOS) я настроил классический

*.* @@<central-server-hostname>:5544

но я вижу, что журналы httpd не отправляются (я думаю, это потому, что фильтр . и журналы httpd называются как «httpd_acces» и не соответствуют фильтру.

Вы знаете, возможно ли это?

Apache обычно не входит в системный журнал. Вам придется пропустить журналы через logger, видеть это руководство. Не уверен, что это хорошая идея с точки зрения производительности.

*.* в конфигурации syslog не маска файла. Это маска для <facility>.<priority> ... так что-то вроде kern.error. Увидеть документы как это работает.

Apache не использует syslog по умолчанию он просто записывается в некоторые файлы, определенные в конфигурации Apache по умолчанию.

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