설정 및 구성된 시스템 서비스 단위가 포함된 구성이 있습니다./etc/systemd/[email protected]
ForwardToSyslog=yes
LogNamespace=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.conf
UDP 전달 설정 도 있습니다
*.* @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 로그라는 두 위치에 나타났습니다.
이 답변은 네임스페이스를 설명하려고 시도하지 않습니다. 하지만 내가 원하는 것은 모든 로그 메시지를 전달하는 것입니다.