ForwardToSyslog 옵션을 사용한 로그 소켓 버퍼링

ForwardToSyslog 옵션을 사용한 로그 소켓 버퍼링

내 구성에서 Journald는 ForwardToSyslog=yes.Referenced from 으로 설정됩니다.문서:

syslog로 전달이 활성화되어 있지만 소켓에서 메시지를 읽는 것이 없으면 syslog로 전달해도 효과가 없습니다.

나는 다음 테스트를 통해 다양한 관찰을 경험했습니다.

systemctl disable rsyslog
systemctl stop rsyslog
logger "rsyslog is dropped, journald won't forward this message"
systemctl enable rsyslog
systemctl start rsyslog

# This shouldn't find anything
grep "rsyslog is dropped" /var/log/syslog
    Mar 15 16:26:23 hostname user: rsyslog is dropped, journald won't forward this message

결과적으로 rsyslog가 메시지를 성공적으로 처리했습니다.

rsyslog가 설정되었지만 설정되지 않았습니다.저널 데이터베이스를 읽는 능력.

내 가설은 소켓 버퍼링 기능으로 인해 rsyslog가 실행되기 전에 수신된다는 것입니다.

이 경우 rsyslogs 기록이 시작되도록 bash에서 소켓을 강제로 플러시하는 버퍼링을 어떻게든 제거할 수 있습니까?

답변1

한 가지 옵션은 rsyslog가 소켓에서 데이터 수신에 의존하지 않고 소켓을 직접 사용하도록 하는 것입니다 systemd.

# /etc/rsyslog.conf should contain
module(load="imuxsock"
       SysSock.Use="on"
       SysSock.Name="/run/systemd/journal/syslog")


# cat /lib/systemd/system/rsyslog.service
[Unit]
Description=System Logging Service
Documentation=man:rsyslogd(8)
Documentation=http://www.rsyslog.com/doc/

[Service]
Type=notify
ExecStart=/usr/sbin/rsyslogd -n
StandardOutput=null
Restart=on-failure

[Install]
WantedBy=multi-user.target

여기에는 여러 가지 의미가 있습니다.

  • 소켓에 이벤트가 있을 때 rsyslog가 자동으로 시작되지 않습니다(이것이 제가 달성하고 싶은 것입니다. 명확하게 하자면).
  • 이것이 시스템 소켓 활성화와 관련된 rsyslog 코드와 충돌하는지 확실하지 않습니다.
  • 것 같다공식적으로 낙담

관련 정보