rsyslog를 사용하여 다음을 통해 원격 호스트의 로그를 서버에 저장하고 있습니다.
섬기는 사람:
# Logfile for each host
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
*.* -?DynaFile
고객:
*.* @servername
이렇게 하면 서버의 각 클라이언트 호스트에 대한 로그 파일이 생성되고 /var/log/rsyslog/
모든 메시지도 서버에 기록됩니다 /var/log/syslog
. 그래서 많이 부풀어 오르게 됩니다. /var/log/syslog
서버 자체의 메시지 만 포함하는 것을 방지하는 방법은 무엇입니까 ?
답변1
새 규칙이 평가되었는지 확인해야 합니다.앞으로/var/log/syslog에 기록되는 로그입니다.
예를 들어 Ubuntu Trusty(rsyslog 7.4.4)에서 /etc/rsyslog.conf에는 /var/log/syslog에 대한 규칙을 포함하여
$IncludeConfig /etc/rsyslog.d/*.conf
에서 로드된 기본 규칙이 포함되어 있습니다./etc/rsyslog.d/50-default.conf
이 경우 이 파일 앞에 로드할 새 파일을 추가할 수 있습니다 00-remote.conf
. 예를 들어, 제가 관리하고 있는 시스템의 모습은 다음과 같습니다.
$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source,isequal,"NAS",-?RemoteStore
& ~
답변2
이것은 나에게 효과적입니다.
## For accepting syslog info from remote hosts
$template TempAuth, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
$template TempMsg, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log"
if ($fromhost-ip != "127.0.0.1" ) then ?TempAuth
& ~
if ($fromhost-ip != "127.0.0.1" ) then ?TempMsg
& ~
답변3
나는 이 문제에 대해 많은 노력을 해왔고 해결책을 찾은 것 같습니다. 나는 다른 사람들이 이것을 시도하고 잠재적인 불리한 결과를 찾아볼 것을 권장합니다. 먼저 실험실/테스트 및 중요하지 않은 컴퓨터에 이를 구현하는 것이 좋습니다.
$template PerHostLog,"/var/log/net-hosts/%fromhost-ip%/%fromhost-ip%.log"
$template RemoteHostFileFormat,"%TIMESTAMP% %fromhost-ip% %syslogfacility-text% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::space-cc,drop-last-lf%\n”
:inputname, isequal, "imudp" ?PerHostLog;RemoteHostFileFormat
:fromhost-ip , !isequal , "127.0.0.1" stop
위의 4줄은 내 /etc/rsyslog.conf 파일 상단에 있습니다.
현재 2개의 로그 파일을 보고 있습니다:
/var/log/net-hosts/10.1.1.1
및 /var/log/syslog
두 파일을 모두 보면 로그가 원격 호스트 파일에 채워지지만 시스템 로그에는 채워지지 않는 것을 볼 수 있습니다. . Apache를 다시 시작하고 syslog에서 이 작업에 대한 로그 항목을 확인했습니다.
답변4
최신 버전의 경우 다음 코드로 문제가 해결됩니다.
input(type="imudp" port="514" ruleset="remote")
ruleset(name="remote"){
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
if ($fromhost-ip != "127.0.0.1") then -?DynaFile
}