rsyslog를 사용하여 / var / log 외부의 특정 로그 파일을 원격 서버로 전달하는 방법은 무엇입니까?


24

어떻게 같은 특정 로그 파일에서 메시지를 전달할 수 /www/myapp/log/test.logrsyslog원격으로 클라이언트 rsyslog서버? 이 로그 파일은 디렉토리 외부에 /var/log있습니다.

답변:


42

/etc/rsyslog.conf에서 imfile 규칙을 설정하기 만하면됩니다.

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>

파일을 감시하고 syslog의 local3 기능에 저장합니다. 그런 다음 local3 기능의 모든 데이터를 원격 서버로 보낼 수 있습니다. local3 기능을 / var / log / syslog에 저장하지 않으려면 rsyslog conf (보통 Ubuntu의 /etc/rsyslog.d/50-default.conf)에 다음을 추가 할 수도 있습니다.

#/etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none,local1.none,local2.none,local3.none,local4.none,local5.none,local6.none          -/var/log/syslog

또한 고급 필터링을 위해 다음 rsyslog 문서를 읽어보십시오.

  1. 속성 교체
  2. 필터 조건

이것은 매우 도움이됩니다. Bryan에게 감사합니다. 내 유일한 과제는 클라이언트 측 / var / log / syslog에서 여분의 로그를 유지하지 않는 것이 Ubuntu 12.04에서 작동하지 않는다는 것입니다. 아마도 PEBKAC이지만 이것이 알려진 도전인지 궁금합니다.
제임스 T 스넬

알아 냈습니다. 내 문제는 /etc/rsyslog.d/50-default.conf에 이미로 시작하는 문장이 있다는 것입니다 . ; auth; authpriv.none .. 그 라인이 우선합니다. 마지막 줄을 추가해도 아무런 효과가 없습니다. 대신 기존의 유사한 것을 수정해야합니다. 매우 도움이됩니다. 감사!
제임스 T 스넬

1

우분투에서는 rsyslog가 실제로 / var / logs 외부의 로그 파일을 읽도록하기 위해 drop 권한 행을 주석 처리해야했습니다.

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>

# Set the default permissions for all log files.
#
#$FileOwner syslog
#$FileGroup adm
#$FileCreateMode 0640
#$DirCreateMode 0755
#$Umask 0022
#$PrivDropToUser syslog
#$PrivDropToGroup syslog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.