systemd 로그 네임스페이스에 대한 시스템 로그 전달을 설정하는 방법

systemd 로그 네임스페이스에 대한 시스템 로그 전달을 설정하는 방법

설정 및 구성된 시스템 서비스 단위가 포함된 구성이 있습니다./etc/systemd/[email protected]ForwardToSyslog=yesLogNamespace=my-namespace

문서에 따르면 my-namespace의 로그를 syslog로 전달하는 방법이 명확하지 않습니다.

내가 아는 한 UNIX 도메인 소켓이나 .journal 파일을 통해 syslog에 로그를 전달하는 방법에는 두 가지가 있습니다. 이 시나리오에서는 /run/systemd/journal.my-namespace/syslog로그를 쓰기 위한 저널드용 소켓과 syslog를 수신하고 전달하기 위한 rsyslogd용 소켓을 설정 한다고 가정해 보겠습니다 . 설명서를 읽었지만 여전히 구성 방법을 이해하지 못합니다.

답변1

읽은 후 최소한의 해결책을 찾았습니다.rsyslog 문서/etc/rsyslog.d/my-namespace.conf이는 다음 내용으로 rsyslog 구성 파일을 생성하는 것입니다 .

input(type="imuxsock" Socket="/run/systemd/journal.my-namespace/syslog")

답변2

rsyslog.conf

다음과 같은이 가이드, 로컬 syslog 클라이언트에 파일을 추가했습니다./etc/rsyslog.conf

module(load="imjournal")

rsyslog 모듈imjournal로그 메시지를 기록하는 데 특히 유용합니다. /etc/rsyslog.confUDP 전달 설정 도 있습니다

*.* @some-remote-syslog-server.local:514

그런 다음 다시 시작하세요rsyslog

systemctl restart rsyslog.service

시험

원격 syslog 서버에서 tail이 호스트에 대해 수집된 syslog(이 경로는 원격 syslog 서버 구성에 따라 다름)

$ tail -F /var/log/rsyslog/my-host/*

로컬 syslog 서버에서 로그를 추적합니다.

$ journalctl -xf

그런 다음 이전 logger프로그램과 새 프로그램을 사용하여 systemd-cat로그 메시지를 만듭니다.

$ echo MESSAGE FROM $(hostname) USING logger | logger -t user
$ echo MESSAGE FROM $(hostname) USING systemd-cat | systemd-cat -t user

(로그 메시지 라벨은 user임의적입니다)

내 경우에는 via logger와 via 두 메시지가 모두 systemd-cat원격 syslog 서버와 로컬 syslog 로그라는 두 위치에 나타났습니다.

이 답변은 네임스페이스를 설명하려고 시도하지 않습니다. 하지만 내가 원하는 것은 모든 로그 메시지를 전달하는 것입니다.

관련 정보