직접적인 해결책은 아니지만 일부이면에서 무슨 일이 일어나고 있는지 디버깅 할 수 있습니다.
아이디어 # 1-로거 디버깅
우선 logger
명령 을 실행할 때 STDERR에 메시지를 에코 하여 명령 을 실행할 수 있습니다.
$ logger -s "hi"
saml: hi
아이디어 # 2-구성 파일 확인
rsyslog 구성 파일의 유효성을 검증 할 수도 있습니다.
$ sudo rsyslogd -N6 | head -10
rsyslogd: version 7.2.6, config validation run (level 6), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
6921.173842409:7f8b11df2780: rsyslogd 7.2.6 startup, module path '', cwd:/root
6921.175241008:7f8b11df2780: caller requested object 'net', not found (iRet -3003)
6921.175261977:7f8b11df2780: Requested to load module 'lmnet'
6921.175272711:7f8b11df2780: loading module '/lib64/rsyslog/lmnet.so'
6921.175505384:7f8b11df2780: module lmnet of type 2 being loaded (keepType=0).
6921.175520208:7f8b11df2780: entry point 'isCompatibleWithFeature' not present in module
6921.175528413:7f8b11df2780: entry point 'setModCnf' not present in module
6921.175535294:7f8b11df2780: entry point 'getModCnfName' not present in module
6921.175541502:7f8b11df2780: entry point 'beginCnfLoad' not present in module
아이디어 # 3-rsyslogd 디버깅 설정
또한 rsyslogd
추가 통찰력을 얻기 위해 데몬의 디버깅을 활성화하려고 합니다.
$ sudo -i
$ export RSYSLOG_DEBUGLOG="/tmp/debuglog"
$ export RSYSLOG_DEBUG="Debug"
$ service rsyslog stop
$ rsyslogd -d | head -10
7160.005597645:7fae096a3780: rsyslogd 7.2.6 startup, module path '', cwd:/root
7160.005872662:7fae096a3780: caller requested object 'net', not found (iRet -3003)
7160.005895004:7fae096a3780: Requested to load module 'lmnet'
7160.005906331:7fae096a3780: loading module '/lib64/rsyslog/lmnet.so'
7160.006023505:7fae096a3780: module lmnet of type 2 being loaded (keepType=0).
7160.006030872:7fae096a3780: entry point 'isCompatibleWithFeature' not present in module
7160.006033780:7fae096a3780: entry point 'setModCnf' not present in module
7160.006036209:7fae096a3780: entry point 'getModCnfName' not present in module
7160.006038359:7fae096a3780: entry point 'beginCnfLoad' not present in module
...
...
7160.006063913:7fae096a3780: rsyslog runtime initialized, version 7.2.6, current users 1
7160.006102179:7fae096a3780: source file syslogd.c requested reference for module 'lmnet', reference count now 2
7160.006113657:7fae096a3780: GenerateLocalHostName uses 'greeneggs'
버전 정보 확인
$ rsyslogd -version
rsyslogd 7.2.6, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
uuid support: Yes
See http://www.rsyslog.com for more information.
확인 된 버그 및 해결 방법
OP는 이것을 버그로 Red Hat에 제출했습니다.
버그의 특징은 다음과 같습니다.
호스트 자체 시간을 설정했을 때 VM과 호스트의 시간이 잘못되었습니다. 그때 / var / log / messages가 더 이상 업데이트되지 않는 것을 알게되었습니다.
그 시점에서 rsyslog 서비스 자체를 파일로 다시 시작하는 것 외에는 아무것도 없습니다. 그렇게하면 기록됩니다.
---
Apr 15 16:39:39 rhel7time-dev rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'
Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="574" x-info="http://www.rsyslog.com"] exiting on signal 15.
Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2117" x-info="http://www.rsyslog.com"] start
---
그렇지 않으면 로거를 포함하여 파일에 아무것도 기록되지 않습니다.
rsyslog.conf에서 $ OmitLocalLogging을 주석 처리하면 파일 로깅이 다시 시작됩니다 (그 시점까지는 rsyslog.conf를 변경하지 않았다는 점에 유의하십시오).
저널을 통한 로깅은이 모든 것에 영향을받지 않습니다. journalctl -b는 로거가 보낸 것을 포함하여 로깅을 보여줍니다.
개발자 중 한 명이 응답 한 내용 :
이 문제가 발생 /var/lib/rsyslog/imjournal.state
하면 해결 방법으로 데몬을 삭제 하고 다시 시작할 수 있습니다 .
rsyslog는 날짜를 직접 처리하지 않고 시스템 API를 통해서만 처리합니다. 나는 얼마 전에 임시로 코드를 확인했으며 이는 systemd의 문제처럼 보입니다.
자세한 내용은 https://github.com/rsyslog/rsyslog/issues/43을 참조하십시오.
/etc/rsyslog.conf
와/etc/rsyslog.d
디렉토리를 확인했습니다 . 특정 로그 파일로 라우팅되도록 구성된 것이없는 것 같습니다. syslog 메시지를EMERG
우선 순위로 지정하여 통과하는지 확인할 수도 있습니다 . 예 :logger -p EMERG not really an emergency