내 시스템 서비스의 로그를 어떻게 관리해야 합니까?

내 시스템 서비스의 로그를 어떻게 관리해야 합니까?

우분투 머신에 여러 데몬을 배포하고 이를 시스템 서비스로 래핑했습니다. 표준 출력은 기본적으로 로그로 리디렉션되는데 이것이 바로 제가 원하는 것입니다.

이제 우분투(그리고 데비안에서도 마찬가지일 것 같습니다)의 기본 구성은 모든 이벤트를 /run/systemd/journal/syslog에 로그를 전달하는 것입니다(/etc/systemd/journald.conf: #ForwardToSyslog 참조). =yes) imuxsock 모듈을 사용하여 rsyslog가 거기에서 데이터를 추출하도록 합니다(/etc/rsyslog.conf 참조). 기본적으로 /etc/rsyslog.d/50-default.conf에 다음 줄이 있기 때문에 이 내용도 볼 수 있습니다.

.;auth,authpriv.none -/var/log/syslog

즉, 인증되지 않은 모든 데이터는 /var/log/syslog에 저장됩니다.

저는 Journald에서 서비스의 출력을 추적하고 싶었기 때문에 /var/log/journal(/etc/systemd/journald.conf에서 Storage의 기본값은 auto입니다)을 생성하여 Journald 로그 파일을 영구화했습니다.

결과적으로 이제 모든 로그 데이터가 복제됩니다. 이는 한 번은 저널에 저장되고 한 번은 rsyslog의 /var/log/syslog에 저장됩니다.

그래서 여러 가지 이유로 서비스 데이터를 로그에 보관하고 싶지만 해당 데이터를 복제하고 싶지는 않습니다(로그가 너무 많습니다!).

몇 가지 옵션이 표시됩니다.

  1. rsyslog를 완전히 비활성화합니다. 이렇게 하면 다른 서비스의 많은 데이터를 놓칠까 걱정됩니다. 내 인프라의 다른 코드가 /var/log/*를 읽는지 아는 사람이 있습니까?
  2. 내 서비스에 대해 선택된 기본 로깅 기능/수준인 것 같아서 daemon.info만 비활성화해 보았습니다. 다음 사항으로 인해 동일한 시설/레벨이 있는 다른 유용한 메시지를 무시하게 될까봐 걱정됩니다./

.;auth, authpriv.none; =info-/var/log/syslog

  1. imjournal 입력 모듈을 사용하고 imuxsock을 무시하고(fedora에서와 마찬가지로) rsyslog/journald 통합을 변경하고 각 서비스에 대해 보다 구체적인 rsyslog 규칙을 작성합니다.

이제 질문은 다음과 같습니다. 권장되는 진행 방법은 무엇입니까?

답변1

오래된 질문인 것은 알지만 거의 다 왔습니다. 모든 서비스의 로그 항목이 시스템 로그에 기록되는 것을 중지하려면 daemon.none다음과 같이 추가하세요.

*.*;auth,authpriv.none,daemon.none              -/var/log/syslog

데몬의 로그 출력은 기본적으로 SyslogFacility=daemon파일을 얻은 이유를 나타냅니다 daemon.log.

서비스 중 하나에만 사용하려는 경우 해당 서비스 파일에서 식별자(0-9 사용 가능)를 사용한 다음 위의 관련 지시어(예: )를 포함하면 됩니다. SyslogFacility=local0로그 local0.none항목을 외부에서 필터링하세요. 의 syslog...

https://www.freedesktop.org/software/systemd/man/systemd.exec.html

관련 정보