답변:
Google이이 질문에 큰 도움이되지 않았기 때문에 내 자신의 질문을하고 대답합니다.
일반적으로을 사용 rsyslogd
하면 imuxsock
모듈은 /dev/log
자체적으로 소켓을 작성 하여 이전 항목을 작성하기 전에 연결을 해제합니다. 경우 rsyslogd
(인해 잘못된 구성 실패 때문일 재시작) 정지, 제거합니다를 rsyslogd /dev/log
.
그러나, 함께 제공된 위해 rsyslog RHEL7
예상된다와 함께 사용하도록 systemd
하고, imuxsock
모듈 것 실제로 오픈 및 제거 /run/systemd/journal/syslog
소켓. 한편, /dev/log
장치는 시스템 서비스 파일에 의해 생성 systemd-journald.socket
되어을 트리거합니다 journald
.
분명히 $imjournal
모듈 사용 여부 는 다음과 같습니다.
요약하면, /dev/log
사라지면 :
systemd-journald.socket을 다시 시작하십시오.
systemctl restart systemd-journald.socket
그런 다음 rsyslogd를 다시 시작하십시오.
systemctl start rsyslogd
업데이트 : restart rsyslogd
소켓 rsyslogd
이 이미 실행 중이 면 소켓을 다시 삭제할 수 있다고 생각 합니다.
이 systemctl restart systemd-journald.socket && systemctl restart rsyslog
솔루션은 Ubuntu 16.04에서 작동하지 않았습니다.
대신, 나는 다음에 /dev/log
대한 심볼릭 링크로 다시 만들어야 했습니다 /run/systemd/journal/dev-log
.
ln -s /run/systemd/journal/dev-log /dev/log
systemd-journald.socket
에서 서비스로 존재합니까? Q2 : restart rsyslogd
문제가 되었습니까? 어쩌면 간단해야 start rsyslogd
합니까?
restart
명령은 더 이상 거기에 service
와 /etc/init.d/rsyslog
.
restart rsyslogd
내가 생각 그것은 의미가 명확 I이었다 systemctl restart rsyslogd
. 우분투는 여전히 rsyslog에 init 스크립트를 사용합니까?
/etc/init.d/rsyslog stop
다음에 /etc/init.d/rsyslog start
도움이되지 않았습니다. 어느 쪽도 않은 systemctl stop syslog.socket rsyslog.service && systemctl start syslog.socket rsyslog.service
내 시스템에서 모두 없다 /lib/systemd/system/rsyslog.service
하고 /etc/init.d/rsyslog
. 어쨌든, 나는이 문제에 더 많은 시간을 소비하지 않을 것입니다.
나에게 이것은 rsyslog에 사용 된 imuxsock 모듈이 systemd와 어떻게 작동하는지에 문제가되었습니다.
에서 imuxsock 문서 그들은 모듈이 systemd에 대한 작업을 가정하는 방법을 통해 도보. 1 단계에서 문제가 발생했습니다.
1 단계 : 시스템 소켓 이름 선택
사용자가 SysSock.Use = "off"를 명시 적으로 설정하지 않은 경우 기본 리스너 소켓 ( "시스템 로그 소켓"또는 간단히 "시스템 소켓") 이름이 / dev / log로 설정됩니다. 그렇지 않으면 사용자가 SysSock.Use = "off"를 명시 적으로 설정 한 경우 rsyslog는 / dev / log 또는 SysSock.Name 매개 변수로 정의 된 소켓을 청취하지 않으며이 섹션의 나머지 부분은 적용되지 않습니다.
사용자가 sysSock.Name = "/ path / to / custom / socket"을 지정하고 (SysSock.Use = "off"를 명시 적으로 설정하지 않은 경우) 기본 리스너 소켓 이름을 / path / to / custom / socket으로 겹쳐 씁니다. .
그렇지 않으면 rsyslog가 systemd에서 실행 중이고 / run / systemd / journal / syslog가 존재하고 사용자가 SysSock.Use = "off"를 명시 적으로 설정하지 않은 경우 기본 리스너 소켓 이름이 / run / systemd / journal로 겹쳐 써집니다. / syslog.
시스템은 3 단계로 들어가 기본 경로를 "/ run / systemd / journal / syslog"로 변경해야하지만 대신 "/ var / log"로 남아 있습니다. 즉, imuxsock 모듈은 / dev / log에 소켓을 만들려고 시도하고 때로는 성공합니다. 대신 systemd-journald-dev-log.socket에서 만든 심볼릭 링크가 있어야합니다. 실제 소켓을 작성하지 못하면 기호 링크가 여전히 제거됩니다.
이 문서는 rsyslog github에보고 된 이 문제 의 결과입니다 . 토론을 건너 뛰고 변경 사항으로 바로 이동하려면 각각 PR # 1 및 PR # 2를 참조하십시오 .
내 솔루션은 내 /etc/rsyslog.conf에서 systemd 경로를 사용하도록 imuxsock 모듈을 구성하는 것입니다.
module(load="imuxsock"
SysSock.Name="/run/systemd/journal/syslog")
이것은 내 문제를 해결 한 것으로 보이며 여기서 수동으로 링크를 만든 후 기호 링크가 다시 사라지는 이유를 설명하기 때문에 여기에서 좋은 해결책처럼 들립니다.
시스템을보고 "/ run / systemd / journal / syslog"가 없으면 "syslog.socket"을보고 소켓이 작성되는 것이 원인이므로 시스템이 성공적으로 시작되는지 확인하십시오.
systemctl status syslog.socket
rsyslog.service 버전에서 syslog.service가 syslog.socket이 해당 서비스를 활성화하려고 할 때 필요한 별명으로 정의하지 않았을 수 있습니다. 여러 로깅 서비스가 syslog.service의 별칭을 지정하려고 시도 할 수 있으며이 경우 마지막으로 활성화됩니다.