태그별로 rsyslog 메시지를 필터링하는 방법


12

출력을 사용자 정의 파일로 리디렉션하려는 여러 응용 프로그램 및 스크립트가 있습니다.

나는 다음을 사용하여 해당 응용 프로그램을 시작합니다.

command | logger -t TAG

태그를 기준으로 이러한 메시지를 필터링하고 다른 파일로 리디렉션하고 싶습니다. 이러한 응용 프로그램은 주로 오래 실행되는 프로세스이며 적절한 로그 회전이 필요하기 때문에 bash 리디렉션을 사용하고 싶지 않습니다.

/etc/rsyslog.d/60-myfilter.conf에 사용자 정의 필터를 추가하려고했습니다.

if $syslogtag == 'giomanager' then /var/log/giomanager.log

내가 무엇을 잘못하고 있지 ? 태그를 기준으로 필터링하는 적절한 방법은 무엇입니까? 아니면 유사한 결과를 얻는 더 좋은 옵션이 있습니까?

답변:


21

그런 경우 (또는 syslogtag) 사용하지는 않았지만 :<blah>,<condition> ...(특히 : msg, contains, ...)를 사용했지만 시도해보십시오.

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

& stop(또는 & ~위해 rsyslog V6 이상 (예 RHEL6에서와 같은)에서)가 상기 다른 규칙으로 해석 될 별도로 로그인 후 폐기 될 수있는 유사한 메시지를 야기한다.


업데이트 : 테스트 및

syslogtag은을 포함 :하고 묶어야합니다 ""보다는''


답변 주셔서 감사합니다. 방금 당신이 제안한 것을 시도했습니다. 실제로 메시지는 버려지지만 결코 기록되지 않습니다./var/log/giomanager.log
mistyrouge

@ mistyrouge : 내 업데이트 참조
user9517

2
대단히 감사합니다. 이제 로그를 리디렉션 /var/log/giomanager.log 했지만 여전히 / var / log / syslog에 기록됩니다. 왜 이런 일이 일어나고 어떻게 방지 할 수 있는지 알고 있습니까?
mistyrouge 2016 년

1
폐기 조치 (~ 표시기)가 더 이상 사용되지 않음 : (더 나은) 대체 "중지"명령문으로 대체되었습니다. kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

그래서 마침내 내 문제에 대한 해결책을 찾았습니다.

내 길을 인도 해 주신 @lain에게 대단히 감사합니다.

앞에서 언급 한 해결책은 태그 이름에 ':'을 포함시키는 것입니다. 또한 이것은 매우 중요하므로 파일 이름은 50-default.conf사전 순으로 알파벳 순서 여야합니다 .

다시 시작하려면 다음을 입력하십시오 30-giomanager.conf.

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

파일 /var/log/giomanager.log은 'syslog'사용자가 쓸 수 있어야합니다.


감사합니다 @mistyrouge. 당신이 겪었던 것과 같은 문제가 있습니다. 올바른 파일에 로그인 한 후 내 로그는 / var / log / syslog로 리디렉션됩니다. 왜 이런 일이 일어나고 어떻게 방지 할 수 있는지 알고 있습니까?
Mayank Patel

bind9 로그를 필터링하는 데 사용할 수 없었습니다. 대신 ': programname, isequal, "named"/var/log/named/named.log'가 작동합니다. 태그가 "named [32193]"과 같기 때문일 수 있습니다.
Rennex

예를 들어 태그에 PID가 포함 된 경우 startswith대신 사용할 수 있습니다 isequal. 또는 regex복잡한 경기.
팀 실베스터
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.