타사 로그를 Centos의 로그 서버로 리디렉션하는 방법

타사 로그를 Centos의 로그 서버로 리디렉션하는 방법

모든 클라이언트의 로그를 허용하도록 간단한 로그 서버를 설정하고 싶습니다. /var/log/mail, 메시지, 부팅 등과 같은 표준 시스템 로그에 대해 말하는 것이 아닙니다. 응용 프로그램 로그를 리디렉션하거나 보내려고 하는데 해당 메시지를 기록하기 위해 syslog 데몬을 전혀 사용하지 않을 수 있습니다.

예: /appdir/log/error.log.

저는 인터넷에서 많은 게시물을 접했습니다. 대부분 rsyslog 또는 syslog-ng를 사용하는 것이 좋습니다. 지금까지는 애플리케이션 로그가 아닌 표준 시스템 로그를 리디렉션할 수 있었습니다. Centos 5/6 환경을 사용하고 있습니다.

답변1

내가 본 여기에는 두 가지 주요 접근 방식이 있습니다.

첫째, 많은 애플리케이션에는 기본적으로 syslog 호스트에 쓸 수 있는 기능이 있습니다. 이것이 가장 좋은 경로입니다. 다른 경우에는 아래 표시된 것과 같은 기본 스크립트를 사용합니다.

sudo tail /my/app/log | nc -w0 -u 192.168.1.1 514

편집 - 로그를 생성하는 시스템에서 실행하는 경우 syslog-ng 내에서 이를 처리할 수 있는 방법이 실제로 있습니다. 원하는 대로 명명 규칙과 대상을 대체합니다. rsyslog에서도 비슷한 것을 사용할 수 있지만 더 투박합니다(imho).

source s_trbdk3 {
   file("/var/log/trbdk3.log" flags(no-parse) program_override("trbdk3")  );
};
log{
    source(s_trbdk3);
    destination( d_mesg );
 };

답변2

rsyslog의 imfile입력 모듈은 다음을 수행할 수 있습니다.

표준 텍스트 파일을 syslog 메시지로 변환하는 기능을 제공합니다. 표준 텍스트 파일은 LF로 구분된 행과 함께 인쇄 가능한 문자로 구성된 파일입니다.

당신은 읽을 수있다공식 문서이상.

나는 그것을 시도한 적이 없으며 매우 효율적이지는 않지만 일을 할 수 있는 것처럼 들립니다.

syslog-ng는 그것과 비슷한 일을 할 수 있는 것 같습니다.file()소스 드라이버.이 예다음과 같은 소스 선언을 제안합니다.

source s_all {  
    file("/path/to/your/file" follow_freq(1) flags(no-parse)); 
};  

관련 정보