rsyslog - IP 주소마다 다른 로그가 있습니까?

rsyslog - IP 주소마다 다른 로그가 있습니까?

우리 네트워크에는 장치가 곳곳에 흩어져 있습니다. 나는 다음과 같은 것을하고 싶습니다 :

풀1 { 192.168.1.1-192.168.1.20, 192.168.1.50 } 풀2 { 192.168.1.21-192.168.1.40, 192.168.1.66 }

pool1에서 이렇게 하면

pool2에서 그렇게 하면

그렇게 하면 Mac 로그를 Mac 로그처럼 보이게 하고, Linux 로그를 Linux 로그처럼 보이게 하고, Cisco 로그를 Cisco 로그처럼 보이게 만들 수 있습니다. 인터넷 검색으로는 충분히 구체적인 내용을 찾을 수 없었습니다.

답변1

상당히 최신 버전이 있는 경우rsyslog(최신 버전의 패키지는 해당 웹사이트에서 찾을 수 있습니다.) 그러면 설명된 대로 비교를 위해 배열을 사용할 수 있어야 합니다.여기. 다음과 같은 것 :

if $fromhost-ip == [ "192.168.1.1", "192.168.1.2"... ] then {
  action(...do this...)
}

비록제어 구조 문서화그것은 다음과 같아야 할 것 같습니다:

if $variable in [array]

범위가 크다면 그런 foreach 구조로 지역 변수를 채울 수 있어야 합니다. 문서에서 "RainerScript"를 검색하면 스크립팅에 대한 자세한 정보를 찾을 수 있습니다.

답변2

이것은 나에게 효과적입니다.

# accept logging for remote hosts on a per-ip-address basis
$template DirectoryPerHost,"/var/log/REMOTEHOSTS/%fromhost-ip%/%syslogfacility-text%.log"
if ( ( $fromhost-ip != "127.0.0.1" ) and (  $fromhost-ip != "::1" ) ) then  {
    ?DirectoryPerHost
} else {
    whatever you want to do with local log files here
}

fromhost-ip 대신 사용할 수 있는 다른 변수가 있습니다. 자세한 내용은 Radu가 링크하는 문서를 참조하세요.

이를 수행하려면 최신 rsyslog가 필요하다는 Radu의 말이 맞습니다.

RHEL6 또는 해당 재구축 중 하나에서 멈춘 경우 기본(이전) rsyslog 대신 사용할 수 있는 OS의 rsyslog7 패키지가 있습니다. 기본 버전은 이 구문을 지원하지 않지만 v7은 지원합니다.

관련 정보