아직 syslog를 지원하지 않는 애플리케이션에 대한 로그를 syslog로 리디렉션하려면 어떻게 해야 합니까?

아직 syslog를 지원하지 않는 애플리케이션에 대한 로그를 syslog로 리디렉션하려면 어떻게 해야 합니까?

Nginx 추가시스템 로그에 기록버전 1.7.1의 기능입니다.

ppa:nginx/stable에서 버전 1.6.2를 얻 거나 기본 Ubuntu 패키지 소스에서 버전 1.4.6 만 얻을 수 있습니다 .

수십 개의 서버에서 데이터를 수집하는 범용 로깅(rsyslog) 서버가 있습니다. rsyslog는 기본 로그 머신에 로그를 전파하거나 기본 로그 머신이 종료된 경우 장애 조치를 수행하도록 각 머신에 구성됩니다.

Nginx 로그를 로컬 syslog로 가져온 다음 rsyslog를 통해 원격 서버로 보내는 옵션은 무엇입니까?


참고: Nginx 로깅과 직접 관련된 답변을 환영하지만 다음에 적용되는 일반적인 답변도 찾고 있습니다.어느응용 프로그램 (따라서 부족이 질문에 대한 레이블). 그 이유는 아직 모든 앱을 마이그레이션하지 않았 syslog으며 다른 앱에서도 비슷한 문제가 발생할 것으로 예상하기 때문입니다.


허용된 답변과 관련된 중요 참고 사항:

  1. inotify시간이있을 때2012년 4월 12일 rsyslog 5.9.6 베타 버전 이후, 그렇지 않은 경우에만 지원2014년 1월 24일 기준 rsyslog 8.1.5.

    ppa:adiscon/v8-stable이 기사를 쓰는 시점의 최신 Ubuntu 배포판(14.04 LTS)은 rsyslog 7.4.4를 사용하므로 Ubuntu에서 사용해야 합니다 .

  2. inotify모드는 module()다음 대신 에 지정됩니다 input().

    module(load="imfile" mode="inotify")
    

    의 경우 inotify지정할 PollingInterval필요가 없습니다.

  3. 잘못 구성하면 에 rsyslog아무 것도 기록되지 않습니다 /var/log/syslog. 문제가 무엇인지 확인하려면 이 명령이 rsyslogd -N1매우 도움이 될 것 같습니다. 분명히 이는 실행 중인지 ps -A | grep rsyslog확인하는 데에도 도움이 됩니다 .rsyslog

    rsyslog현재 버전은 를 실행하여 얻을 수 있습니다 rsyslogd -version.

  4. ReadMode존재하다input() 0으로 설정해야 합니다.

  5. module()구성input()"rsyslog.conf 파일의 맨 위에 배치되어야 합니다.".

  6. 나는 Nginx를 싫어하는 것 같습니다 rsyslog. /var/log/nginx/또는 에 설정된 소유자, 그룹 또는 권한에 관계없이 /var/log/nginx/access.log파일 변경 사항은 오류 없이 무시됩니다. 디렉토리에 생성된 다른 파일에서도 마찬가지입니다 /var/log/nginx/.

    /home/demo/다른 디렉터리(예: 또는 )에 파일을 생성하면 변경 사항이 /var/log/예상대로 반영됩니다.syslog

답변1

로컬 시스템에서 rsyslog를 실행하고 있으며 로그를 원격 로그 서버로 전달한다고 가정합니다.

rsyslog 문서에 따르면 원하는 작업을 정확하게 수행하도록 입력 모듈을 정의할 수 있는 것처럼 보입니다. 자세한 내용은 여기에서 확인했습니다.

http://www.rsyslog.com/doc/master/configuration/modules/imfile.html

심지어 몇 가지 멋진 예를 제공합니다.

관련 정보