LINUX.ORG.RU
ФорумAdmin

Не срабатывает фильтрация if $programname == в Rsyslog

 


0

1

Добрый день, помогите понять принцип работы tag для rsyslog. Хочу переслать лог апача access «как есть» на центральный сервер логирования, сделал вот такой конфиг на сервере клиенте: /etc/rsyslog.d/apache.conf

module(load=«imfile») input (type=«imfile» File=«/var/log/apache2/access.log» Tag=«http_access_01» Severity=«*» Facility=«*») if $programname == ‘http_access_01’ then @@10.10.10.1:514

На сервере сделал вот такой конфиг: if$programname == ‘http_access_01’ then /var/log/clients/01/apache_access.log & stop

Проблема в том, что фильтрация по http_access_01 на сервере приемнике не работает, я смогу отловить лог только если пропишу: if $fromhost-ip ==

Вопрос тут у меня принципиальный, почему не срабатывает фильтрация именно по тэгу. Я попробовал посмотреть лог при «пересохранении» на сервере источнике в другой файл лога, если начальная строка имеет вид:

192.168.0.123 - - [21/Apr/2023:14:59:15 +0300] «GET /csrftoken HTTP/1.1»

То после того как файл был «переслан» в другой файл лога то уже имеет вид:

Apr 21 14:55:00 debian-work http_access 192.168.0.123 - - [21/Apr/2023:14:55:00 +0300] «GET /login HTTP/1.1»

А когда файл был переслан вообще на другой сервер то уже: Apr 21 14:55:00 debian-work Apr 21 14:55:00 debian-work http_access 192.168.0.123 - - [21/Apr/2023:14:55:00 +0300] «GET /login HTTP/1.1» 200

Помогите разобраться, почему не срабатывает фильтрация по указанному тегу, большое спасибо.


module(load="imfile") input (type="imfile" File="/var/log/apache2/access.log" Tag="http_access_01" Severity="*" Facility="*")
if $programname == ‘http_access_01’ then @@10.10.10.1:514

Тут не правильно Severity="*" Facility="*"
Или выставьте правильные значения, или удалите эти параметры.

DiMoN ★★★
()
Ответ на: комментарий от mky

Всем еще раз, я немного поправил конфиги на клиенте и сервере: клиентский: module(load=«imfile»)

template(name=«OnlyMsg» type=«string» string=«http_access: %msg:::drop-last-lf%\n») template(name=«OnlyMsg2» type=«string» string=«cloud_auth %msg:::drop-last-lf%\n»)

input (type=«imfile» File=«/var/log/apache2/access.log» Tag=«http_access:» Severity=«*» Facility=«*» )

input (type=«imfile» File=«/var/log/auth.log» Tag=«cloud_auth» Severity=«*» Facility=«*» )

if ( $syslogtag == ‘cloud_auth’) then { #write to file action(type=«omfwd» Target=«10.45.11.135» Port=«514» protocol=«udp» template=«OnlyMsg2») }

if ( $syslogtag == ‘http_access:’) then { #write to file action(type=«omfwd» Target=«10.45.11.135» Port=«514» protocol=«udp» template=«OnlyMsg») }

=================== вот что прилетает на интерфейс сервера коллектора: для http_access: Syslog 277 http_access: 184.105.139.67 - - [28/Apr/2023:09:41:46 +0300] «GET /.git/config HTTP/1.1» 400 16706 «-» "Mo…..

для cloud_auth: Syslog 174 cloud_auth 2023-04-28T09:48:28.617571+03:00 debian-work systemd-logind[509]: Session 104 logged out. Waiting for processes to exit.\n

Конфиг сервера коллектора:

template(name=«OnlyMessage» type=«string» string=«%msg:::drop-last-lf%\n») template(name=«OnlyMessage2» type=«string» string=«%msg:::drop-last-lf%\n»)

if $syslogtag == ‘http_access:’ then { action(type=«omfile» File=«/var/log/Clients/cloud/access.log» template=«OnlyMessage») }

if $syslogtag == ‘cloud_auth’ then { action(type=«omfile» File=«/var/log/Clients/cloud/auth.log» template=«OnlyMessage2») }

Срабатывает только для http_access: , не могу понять почему для второго правила не работает.

evo777
() автор топика
Ответ на: комментарий от evo777

Я только разбираюсь с пересылкой логов, я хочу передать файлы как есть, без какой-либо фильтрации поэтому Severity=«*» Facility=«*» так заданы. Нигде не видел примеров без их использования.

evo777
() автор топика