как настроить rsyslog для отправки файла из определенной программы в определенное место на удаленном сервере

Я хочу настроить rsyslog на централизованном сервере, чтобы все журналы клиентов хранились в одном месте, и теперь у меня возникает проблема: я не знаю, как реализовать rsyslog, чтобы он создавал журналы на основе программ на клиентских компьютерах то есть как 'httpd' и т. д., и сохраните их в разных файлах, например, /var/log/httpd.log, и пока он отправляет журнал на удаленный сервер, файлы должны быть сохранены как '/ var / log / ip-address of host / httpd.log 'У меня есть эти две проблемы

  1. Журналы должны создаваться на программной основе
  2. , в то время как журналы передаются на удаленный сервер, они должны храниться на программной основе в разных каталогах. для разных хостов.

Надеюсь, я прояснил свой вопрос. Пожалуйста, помогите.

Для создания журнала на основе программы, я думаю, мне придется использовать что-то вроде на стороне клиента.

 if $programname == 'httpd' and $syslogseverity <= '6' then /var/log/httpd.log

 if $programname == 'httpd' and $syslogseverity <= '6' then ~

Я также нашел этот вопрос, но он не полностью решает мою проблему

Как настроить rsyslog

6
задан 13 April 2017 в 15:24

1 ответ

Сначала необходимо настроить сервер rsyslog для получения сообщений от клиентов.

Измените файл конфигурации rsyslog вашего сервера и создайте или убедитесь, что существуют следующие строки:

$ModLoad imuxsock 
$ModLoad imklog
# provides UDP syslog reception. For TCP, load imtcp. For TCP use InputServerRun 514
$ModLoad imudp
# This will save the log file is a separate directory for each client's IP
$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
#Create a rule for each application you need to filter, ie: httpd messages
$template HTTPD,"/var/log/%fromhost-ip%/httpd.log"

#Create a separate log rule for the specific application
if $programname == 'httpd' then ?HTTPD
&~

#Dump all remaining messages that do not match the filters created into one file
*.* ?FILENAME
[ 114] После этого вам нужно перейти к каждому клиенту и добавить следующие строки в файл rsyslog.conf:

$ModLoad imuxsock
$ModLoad imklog
# Provides UDP forwarding. For TCP use @@server_ip
*.* @server_ip:514

И вы должны быть готовы. Все, что клиенты отправляют на сервер, будет отфильтровано по созданным вами правилам, а сообщения будут сохранены в файлы в папке IP-адресов каждого клиента в соответствии с шаблонами, которые вы создали на стороне сервера.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: