Я собираю клиентские журналы на централизованном сервере в Ubuntu, используя rsyslog deamon. При консолидации журналов, , как я могу увидеть объем сетевого трафика или размер файла, передаваемого от клиента к серверу?
Есть ли способ фильтрации с клиента машина перед передачей журналов на сервер?
Пересылка только выбранных сообщений - это просто. Поместите файл с расширением *.conf
в /etc/rsyslog.d
. Назовите это, например. /etc/rsyslog.d/40-forwarder.conf
чтобы он прочитал до значения по умолчанию (в 50-default.conf
) или /etc/rsyslog.d/60-forwarder.conf
, чтобы он прочитал после значения по умолчанию:
if ( ($programname == "my-binary") or ($syslogfacility-text == "local1") ) then {
action(type="omfwd" target="my.syslog.server" port="514")
}
Это перенаправит все сообщения с заданными свойствами на хост my.syslog.server
, порт UDP 514
. Если вы поставите stop
после action
, то дальнейшая обработка этого сообщения не производится.
Это означает: если вы назовете файл 40-....conf
и добавите stop
:
if ( ($programname == "my-binary") or ($syslogfacility-text == "local1") ) then {
action(type="omfwd" target="my.syslog.server" port="514")
stop
}
, то действия по умолчанию для этих сообщений (например, запись их в /var/log/messages
) не будут не имеют место.
Что касается вас, другой вопрос о сетевом трафике: на самом деле это другой вопрос, который должен быть опубликован отдельно.
Условие
if ( ($programname == "my-binary") or
($syslogfacility-text == "local1") ) then {…}
является просто примером для фильтра. Вероятно, у вас есть некоторые другие критерии для выбора сообщений, которые следует пересылать на хост централизованного ведения журналов.
В этом случае будут пересылаться только те сообщения журнала, которые были записаны в logfacility local1
или были выпущены какой-либо программой под названием my-binary
. Все остальные не могли. Вы можете проверить фильтр с помощью logger
(переключатель -t
имитирует название программы):
logger -t my-binary -plocal4.info "This is forwarded ($RANDOM)"
logger -t other-binary -plocal1.info "This is forwarded ($RANDOM)"
logger -t other-binary -plocal4.info "This is NOT forwarded ($RANDOM)"
На удаленном хосте должны появиться первые два сообщения, но не последнее.
Вы не сказали, какой тип фильтра должен применяться, поэтому я выбрал произвольный критерий.
См. Условия фильтрации и RainerScript для получения дополнительной информации о том, что возможно с rsyslog
.