Я знаю, что есть много подобных тем, но у меня есть особая потребность: мне нужно отправить все журналы с серверов 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 и отправки содержимого на удаленный сервер.