syslog-ng에서 특정 라인을 제외하는 방법은 무엇입니까?

syslog-ng에서 특정 라인을 제외하는 방법은 무엇입니까?

메시지 파일에서 특정 줄을 제외해야 합니다.

Oct 25 04:09:23 SERVERNAME PFILTER-DROP: IN=ifeth4 OUT= MAC=ff:ff:ff:ff:ff:ff:AA:AA:AA:AA:AA:AA:AA:AA SRC=192.168.202.4 DST=192.168.202.255 LEN=238 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=32776 DPT=705 LEN=218 
Oct 25 04:09:23 SERVERNAME PFILTER-DROP: IN=ifeth4 OUT= MAC=ff:ff:ff:ff:ff:ff:AA:AA:AA:AA:AA:AA:AA:AA SRC=192.168.202.6 DST=192.168.202.255 LEN=183 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=32770 DPT=700 LEN=163 
Oct 25 04:09:23 SERVERNAME PFILTER-DROP: IN=ifeth4 OUT= MAC=ff:ff:ff:ff:ff:ff:AA:AA:AA:AA:AA:AA:AA:AA SRC=192.168.202.8 DST=192.168.202.255 LEN=176 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=32768 DPT=714 LEN=156 
Oct 25 04:09:23 SERVERNAME PFILTER-DROP: IN=ifeth4 OUT= MAC=ff:ff:ff:ff:ff:ff:AA:AA:AA:AA:AA:AA:AA:AA SRC=192.168.202.10 DST=192.168.202.255 LEN=175 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=33628 DPT=715 LEN=155 
Oct 25 04:09:23 SERVERNAME PFILTER-DROP: IN=ifeth4 OUT= MAC=ff:ff:ff:ff:ff:ff:AA:AA:AA:AA:AA:AA:AA:AA SRC=192.168.202.30 DST=192.168.202.255 LEN=185 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=32770 DPT=713 LEN=165 
Oct 25 04:09:23 SERVERNAME PFILTER-DROP: IN=ifeth4 OUT= MAC=ff:ff:ff:ff:ff:ff:AA:AA:AA:AA:AA:AA:AA:AA SRC=192.168.202.34 DST=192.168.202.255 LEN=237 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=32781 DPT=704 LEN=217 

내가 아는 한 그것은 하트비트 UDP 메시지이지만 로그에는 필요하지 않습니다.

# rpm -qa | grep -i syslog-ng
Security.syslog-ng-1.6.8.0-1
# uname -a
Linux SERVERNAME 2.6.5-7.325-bigsmp #1 SMP Tue Jan 18 23:36:49 UTC 2011 i686 i686 i386 GNU/Linux
# cat /etc/SuSE-release 
SUSE LINUX Enterprise Server 9 (i586)
VERSION = 9
PATCHLEVEL = 4

묻다:/var/log/messages에서 이러한 메시지를 제외하는 방법은 무엇입니까?

답변1

앞으로:

SERVER:/etc/syslog-ng # tail -3 syslog-ng.conf
#
#
log { source(src); destination(/var/log/messages); };
SERVER:/etc/syslog-ng # 

syslog-ng.conf 파일을 편집합니다.

vi /etc/syslog-ng/syslog-ng.conf

뒤쪽에:

SERVER:/etc/syslog-ng # tail -3 syslog-ng.conf
#log { source(src); destination(/var/log/messages); };
filter heartbeat_filter { not match("PFILTER-DROP") and not match("DST=192.168.202.255") and not match("PROTO=UDP"); }; 
log { source(src); filter(heartbeat_filter); destination(/var/log/messages); };
SERVER:/etc/syslog-ng # 

syslog-NG 다시 시작

/etc/init.d/syslog restart # or whatever you use to restart syslog-ng
# now check

필요한 경우 회전

logrotate /etc/logrotate.conf

답변2

다음과 같이 필터를 사용하여 메시지를 보낸 프로그램(이 경우 PFILTER-DROP)을 일치시킬 수 있습니다.

filter f_pfilterdrop {
   program("PFILTER-DROP");
};

그런 다음 이 필터는 이 로그에 기록된 로그 문에 포함됩니다.

답변3

"DST=192.168.202.255"를 포함하는 행만 필터링하고 "udp" 및 "PFILTER-DROP"을 사용하도록 이 제외 규칙을 확장하려면 어떻게 해야 합니까?

다음과 같은 것을 사용하십시오:

filter demo_filter { program("PFILTER-DROP") and match("DST=192.168.202.255") and match("PROTO=UDP"); };

관련 정보