방금 rsyslog의 imjournal 모듈에 문제가 발생했습니다.여기에 설명된 문제, 시스템 로그로 인한 합병증
로그는 긴밀한 루프에서 동일한 데이터를 계속 반환합니다. 이로 인해 rsyslog 내에서 많은 수의 메시지 중복이 발생하여 시스템 리소스가 고갈되면 서비스 거부가 발생할 수 있습니다.
그럼에도 불구하고 프로세서가 몇 달 전의 메시지를 반복하는 것을 방지합니다. rsyslog와 Journald가 기본적으로 너무 밀접하게 결합되어 있다는 것을 몰랐기 때문에 입력에 보다 전통적이고 효율적인 라이브 소켓을 사용하도록 전자를 재구성했습니다.이 지침:
$ModLoad imuxsock
$OmitLocalLogging off
이것은 소켓 생성 및 사용에 관한 한 작동하는 것 같습니다. 그런데 테스트를 해보니 이상한 점을 발견했습니다.
> logger "hello world"
결과 /var/log/syslog
는 에 나와 있습니다.한번만존재하다 rsyslog.conf
:
Apr 17 10:35:45 pidora logger: hello world
Apr 17 10:35:45 pidora logger: hello world
메시지는 다른 모든 메시지와 마찬가지로 반복됩니다. 그 중 일부는 정확히 동일하지만 일부는 한 가지 측면에서만 다릅니다.
Apr 17 10:42:26 pidora systemd[1]: Stopping System Time Synchronized.
Apr 17 10:42:26 pidora systemd: Stopping System Time Synchronized.
이것은 [1]
pid입니다. 나는 무슨 일이 일어나고 있는지 rsyslog가 응용 프로그램에서 메시지를 한 번 가져온 다음 로그에서 다시 가져오는 것이라고 믿습니다.
이것은 약간 어리석은 일입니다. 어떻게 막을 수 있나요?
답변1
나는 무슨 일이 일어나고 있는지 rsyslog가 응용 프로그램에서 메시지를 한 번 가져온 다음 로그에서 다시 가져오는 것이라고 믿습니다.
예. 해결책은 다음 항목에 포함시키는 것입니다 /etc/systemd/journald.conf
.
ForwardToSyslog=no
사용할 때 이 문제가 발생하지 않는 이유는 imjournal
확실하지 않지만 여기에 팁이 있습니다 man journald.conf
.
시스템 로그로 전달=
[...] 로깅 데몬은 레거시 syslog 데몬으로 전달해야 합니다. [...] syslog로의 전달이 활성화되었지만 실행 중인 syslog 데몬이 없는 경우 해당 옵션은 효과가 없습니다.
"syslog 데몬이 실행 중"이라는 것이 실제로 의미하는 바는 문자 그대로 전통적인 syslog 소켓이 존재한다는 것입니다.
답변2
나는 또한 이 제안을 시도해 보았으나 그것이 내 시스템에 아무런 영향을 미치지 않는다는 것을 알았습니다. 대신 이 의견이 도움이 되었다고 생각합니다. 시스템 로그는 모든 것을 복사합니다.
이 줄에 주석을 달아주세요. .=info;.=notice;.=경고가 나옵니다. #을 의미합니다..=정보;.=알림;.=경고; rsyslog를 다시 시작하십시오.
/etc/rsyslog.conf
규칙이 이러한 현상의 원인이기 때문 입니다.
실제로 프롬프트를 통해 이를 증명할 수 있습니다."안녕하세요 세계"로그 메시지
내 시스템에서 다음 구성을 찾았습니다./etc/rsyslog.conf
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# Log services messages
daemon.=error /var/log/kern.log
daemon.*;daemon.!=error /var/log/messages
daemon
자동화된 프로세스에 활동을 등록하기 위해 시설 규칙을 추가했습니다 .
이제 다음 테스트 메시지를 시도했습니다.
$ logger hello my server01 world
그리고 이 로그 메시지를 발견했습니다/var/log/messages
Mar 22 13:35:41 server01 user01: hello my server01 world
하지만 내가 시도할 때
$ logger -p daemon.info hello my server01 02
다음 로그 메시지를 찾았습니다.
Mar 22 13:38:15 server01 usre01: hello my server01 02
Mar 22 13:38:15 server01 user01: hello my server01 02
이로 인해 제외 규칙을 /etc/rsyslog.conf
추가하기 위해 규칙을 변경했습니다 .daemon.none
*.info;mail.none;authpriv.none;cron.none;daemon.none /var/log/messages
rsyslog
서비스를 다시 시작하세요 . 실제로 이런 현상을 방지해줍니다.
답변3
제 경우에는 rsyslog.conf 파일에 다음 줄이 있었습니다.
$OmitLocalLogging off
나는 그것을
$OmitLocalLogging on
rsyslog 서비스를 다시 시작하십시오. 복제가 중지되었습니다. 제안한대로 logger 명령도 확인했습니다. 매우 감사합니다