rsyslogd가 rsyslog.d의 다음 줄을 따르지 않는 이유는 무엇입니까?

rsyslogd가 rsyslog.d의 다음 줄을 따르지 않는 이유는 무엇입니까?

이것은 내 이전 질문과 다소 관련이 있습니다.여기.

/etc/rsyslog.d다음을 포함하는 세 개의 파일이 있습니다 /etc/rsyslog.conf.

  • 00-iptables.conf
  • 50-default.conf
  • postfix.conf

첫 번째는 제가 만든 것입니다. 내 가정은 이름 지정으로 인해 이전에 포함될 것이라고 가정했지만 50-default.conf필터 줄을 50-default.conf내 사용자 정의 파일에 직접 넣고 제거해 보았습니다( 00-iptables.conf).

:msg, startswith, "ipt:" /var/log/iptables.log
& stop

매뉴얼 페이지에 명시된 대로 running with ~로 대체되고 문제 해결 단계에서 경고를 제공합니다. 즉 , 사용 가능한(공식!) 문서가 오래되었거나 뒤쳐진 것으로 나타납니다 .stoprsyslogd-N1~stop

이제 여기에서 아이디어는 접두사가 붙은 모든 메시지는 ipt:지정된 로그 파일로 이동하고 다른 로그 파일은 이 줄을 수신하지 않는다는 것입니다(저도 를 contains사용하지 않고 시도했습니다 startswith). syslog더 이상 이 메시지를 받지 말아야 하는지에 구체적으로 언급되어 있습니다 kern.log.50-default.conf

auth,authpriv.*            /var/log/auth.log
*.*;auth,authpriv.none     -/var/log/syslog
kern.*                     -/var/log/kern.log

rsyslog 문서를 읽었지만 문서는속성 기반 필터(반품여기) 가장 계몽적이지 않습니다. 문서에 제공된 예(다른 곳에서도 찾을 수 있음) 및그들의 위키는 비슷한 예를 제공합니다:

# From documentation
*.* /var/log/allmsgs-including-informational.log
:msg, contains, "informational"  ~
*.* /var/log/allmsgs-but-informational.log
# From Wiki
:syslogtag, startswith, "MSWinEventLog#011" /var/log/messages;fixsnareFormat
& @192.168.1.8;fixsnareForwardFormat
& ~

문서의 예는 제가 작성한 두 줄의 코드와 아주 가깝지는 않지만 여전히 ~의미를 더 잘 설명합니다.

내가 뭘 잘못했나요?

선택기와 속성을 결합하는 방법이 있다면 누구나 답변할 수 있다면 보너스 포인트가 됩니다. 예를 들어:

:msg, startswith, "ipt:" kern.* /var/log/iptables.log

참고: 저는 버전 7.4.4를 사용하고 있습니다 rsyslog. 네, service rsyslog restart변경한 후 실행하고 적용되기를 기다렸습니다.


편집하다

추가 정보. 디버그 모드( )에서 데몬을 실행할 때 RSYSLOG_DEBUG=LogFuncFlow RSYSLOG_DEBUGLOG=~/rsl.log $(which rsyslogd) -f /etc/rsyslog.conf -d최적화된 규칙 세트가 다음과 같은 모습을 볼 수 있습니다. 이는 정확히 내가 원하는 방식임을 나타내는 것 같습니다(간결함을 위해 선행 접두사가 제거됨).

ruleset 'RSYSLOG_DefaultRuleset' after optimization:
ruleset 0x214a640: rsyslog ruleset RSYSLOG_DefaultRuleset:
PROPFILT
   Property.: 'rawmsg'
   Operation: 'contains'
   Value....: 'ipt:'
THEN
  ACTION 0x215c070 [builtin:omfile:/var/log/iptables.log]
  STOP
END PROPFILT
PRIFILT 'auth,authpriv.*'
pmask:  X  X  X  X FF  X  X  X  X  X FF  X  X  X  X  X  X  X  X  X  X  X  X  X  X
  ACTION 0x215e840 [builtin:omfile:/var/log/auth.log]
END PRIFILT
PRIFILT '*.*;auth,authpriv.none'
pmask: FF FF FF FF  X FF FF FF FF FF  X FF FF FF FF FF FF FF FF FF FF FF FF FF FF
  ACTION 0x215f030 [builtin:omfile:-/var/log/syslog]
END PRIFILT

/var/log/iptables.log또한 내가 본 동작을 통해 필터가 예상대로 파일에 명확하게 쓰기 때문에 효과가 있다고 추론할 수 있다는 점을 추가해야 합니다. 그러나 메시지가 해당 특정 파일에 기록된 후에는 메시지가 예상대로 삭제되지 않습니다.

kern.log다음 은 후자뿐만 syslog아니라 모두로 끝나는 예제 줄입니다 . iptables.log개인정보 보호를 위해 세부정보는 수정되었습니다.

Jun  1 02:23:01 hostname kernel: [70025.211497] ipt:drop IN=eth0 OUT=virbr0 MAC=dd:cc:bb:aa:99:88:77:66:55:44:33:22:11:00 SRC=9.8.7.6 DST=1.2.3.4 LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=59201 DF PROTO=TCP SPT=47626 DPT=23 WINDOW=4380 RES=0x00 SYN URGP=0

답변1

RainerScript를 사용하지 않는 이유는 무엇입니까? 시설 선택기 대신 $syslogfacility-text. 효과적으로 이는 선택기와 속성을 결합합니다.

if ($msg startswith 'ipt:' and $syslogfacility-text == 'kern') then {
    action(type="omfile" file="/var/log/iptables.log")
    stop
}

또한 Rsyslog 문서에는 버전 7 트리가 더 이상 사용되지 않으며아니요사용(http://www.rsyslog.com/doc/v7-stable/).

답변2

문제가 해결되었는지 확실하지 않습니다. 모든 세부 사항을 다루지는 않았지만 rsyslog는 특정 구성에 따라 다양한 방식으로 메시지를 보낼 수 있습니다. 예를 들어 동시에 모든 조건에 보낼 수도 있고 첫 번째 조건에 보낸 다음 두 번째 조건에 보내는 식으로 보낼 수도 있습니다. 모든 사람에게 동시에 전송하도록 설정했다면 중지해도 문제가 되지 않습니다. rsyslog 비동기/동기/병렬, 특히 직접/연결 목록 유형 대기열을 찾으면 rsyslog 흐름 방식이 변경됩니다.

관련 정보