Я хочу пересылать сообщения, соответствующие шаблону (HELLO
в данном случае) из обычай лог-файл (/home/ubuntu/test.log
) на удаленный сервер rsyslog.
Вот конфигурация:
# cat /etc/rsyslog.d/05-forwarding.conf
*.* @@rsyslogserver.mycompany.com:10514
# cat /etc/rsyslog.d/10-custom.conf
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /home/ubuntu/test.log
$InputFileTag testlogs:
$InputFileStateFile testlogs
$InputRunFileMonitor
:msg, contains, "HELLO" /var/log/testlog_error.log
& stop
:msg, !contains, "HELLO" stop
Проблема:
/var/log/syslog
остановился. << НЕ ХОРОШОHELLO
слово в /home/ubuntu/test.log
собираются /var/log/testlog_error.log
а также перенаправляются на удаленный сервер rsyslog, << ХОРОШОHELLO
слово в /home/ubuntu/test.log
не собираемся /var/log/testlog_error.log
который ХОРОШО но эти сообщения пересылаются на удаленный сервер rsyslog. << ПЛОХОЙМоя идеальная ситуация должна быть:
/var/log/syslog
HELLO
слово в /home/ubuntu/test.log
следует полностью выбросить. Не записывать в локальный файл, а также не пересылать такие сообщения на удаленный сервер.Мне нужна помощь в решении пунктов 1 и 3 выше.
Как есть, ваш файл /etc/rsyslog.d/05-forwarding.conf пересылает все сообщения, передающие мысли, а не только сообщения из вашего пользовательского файла /home/ubuntu/test.log. Так что вы можете Удалить это, как вы сказали, вы хотите пересылать сообщения только из вашего пользовательского файла.
Ваш файл /etc/rsyslog.d/10-custom.conf должно выглядеть так:
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /home/ubuntu/test.log
$InputFileTag testlogs:
$InputFileStateFile testlogs
$InputFileFacility local0
$InputRunFileMonitor
:syslogtag, isequal, "testlogs:" {
:msg, contains, "HELLO" {
local0.* /var/log/testlog_error.log
local0.* @@rsyslogserver.mycompany.com:10514
}
stop
}
Как видите, я добавил следующее:
$ InputFileFacility local0
Теперь ваш пользовательский файл будет отслеживаться, и его сообщения будут записываться в средство local0. Сообщения от local0 будут иметь связанный с ним тег.
: syslogtag, isequal, "тестовые журналы:"
Это правило будет соответствовать только сообщению, которое содержит тег testlogs :, то есть именно те сообщения, которые вам нужны. Таким образом, все остальные сообщения будут пропускать его и будут регистрироваться в / var / log / syslog и всем остальном из 50-default.conf.
: msg, содержит "HELLO"
Теперь все сообщения из вашего файла, который содержит HELLO, будут регистрироваться в /var/log/testlog_error.log и перенаправляться на @@ rsyslogserver.mycompany.com: 10514.
А затем «стоп» отбросит все сообщения из вашего файла, которые записываются в local0.