고유한 ID 하위 문자열이 포함된 커널 메시지를 별도의 로그 파일("rsyslog" 사용)로 리디렉션하려면 어떻게 해야 합니까?

고유한 ID 하위 문자열이 포함된 커널 메시지를 별도의 로그 파일("rsyslog" 사용)로 리디렉션하려면 어떻게 해야 합니까?

iptables내 네트워크 활동을 디버그하기 위해 로깅 기능을 사용하고 있습니다 . 출력되는 커널 로그에서 메시지를 --log-prefix고유하게 식별하기 위해 매개변수와 함께 특정 접두사를 사용합니다 .iptables::IPT::LOG::

rsyslog이런 방식으로 표시된 메시지를 별도의 로그 파일로 리디렉션하도록 구성하려면 어떻게 해야 합니까 ? 맨 페이지는 rsyslog나에게 너무 비밀스러워 보입니다.

답변1

선택기 기반 필터링 외에도 rsyslogd는 로그 메시지 속성에서 발견된 패턴을 필터링할 수 있습니다. 원하는 작업을 수행하려면 iptables 규칙에서 사용하는 문자열과 일치하는 속성 기반 필터를 생성할 수 있습니다. iptables 규칙에서 이를 사용 하려면 --log-prefix "unique_prefix: "rsyslog.conf에 다음을 추가해야 합니다.

:msg,startswith,"unique_prefix" /var/log/iptables

이 규칙은 접두사에 대한 로그 메시지를 테스트하고 /var/log/iptables(rsyslog가 메시지를 보내도록 구성된 다른 위치에 추가)로 보냅니다. 다른 곳이 아닌 /var/log/iptables에 메시지를 표시해야 하는 경우 새 규칙을 다른 규칙 위에 배치하고 그 뒤에 포함을 추가하세요 & ~.

:msg,startswith,"unique_prefix" /var/log/iptables
& ~
#
# The rest of my rules appear below
# ...
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Rsyslog 규칙에는 여러 작업이 있을 수 있습니다. 후속 작업은 앰퍼샌드( )로 시작하는 새 줄에 정의됩니다 &. 위의 예에서 첫 번째 규칙에는 출력을 /var/log/iptables로 보낸 다음 메시지를 삭제하는 두 가지 작업이 있습니다( ~). 바라보다작업에 대한 rsyslog 문서그리고필터이 답변의 규칙에 대한 추가 정보

성능상의 이유가 startswith아닌 사용을 위해 편집되었습니다 . containsiptables는 --log-prefix실제로 접두사이므로 메시지 시작 부분에 표시됩니다.

답변2

내 경험에 따르면 파일이 구문 분석되는 방식의 특성을 고려할 때 의 rsyslog.conf추가 구성 줄은 /etc/rsyslog.conf다른 모든 구성 줄보다 앞에 있어야 합니다. 파일 끝에 추가하면 ip-tables 로깅이 계속 파일에 추가되고 파일 /var/log/messages로 리디렉션됩니다 ./var/log/iptables.log

관련 정보