/var/log를 rsyslog로 채우면 시스템이 충돌하게 됩니다.

/var/log를 rsyslog로 채우면 시스템이 충돌하게 됩니다.

때로는 프로세스가 잘못되어 로그가 /var/log너무 많이 늘어나 결국 전체 파티션을 채우는 경우도 있습니다.

접미사 구성 오류로 인해 서버에서 한 번, USB 프린터로 인해 데스크탑에서 한 번 발생했습니다(정확히 무엇이 잘못되었는지는 모르겠지만 로그에 이러한 문제가 가득하다는 것만 알고 있습니다 (hp) did not claim interface 1 before use).

근본 원인은 로거가 아니라 애플리케이션이라는 것을 알고 있습니다. 하지만 이 약점이 아쉽다는 생각을 지울 수가 없습니다. 특히 데스크탑에서 프린터는 전체 시스템 파티션을 채워서 사용자가 다음 실행 시 GUI를 로드하는 것을 방지합니다(공간이 없음 /tmp). 이는 기술자가 아닌 사람들에게는 완전히 꺼진 일입니다.

  • logrotate매일 또는 심지어 매주 작동하기 때문에 답이 아닙니다.

  • rsyslog그것을 가지고최대 크기, 최대 크기에 대한 작업구성 옵션이 있지만 간단하지 않은 것 같고 문서 자체에 따르면 향후 버전에서는 문제가 발생할 수 있습니다.

  • 그러나 /var/log전용 파티션을 배치하면 이러한 일이 발생하는 것을 방지할 수 있습니다.

내가 아는 한, 별도의 파티션을 사용하는 것이 /var/log이 문제를 해결하는 유일한 방법입니다. 가끔 이것이 제안되는 것을 보지만 데비안 설치 프로그램의 기본값은 아닙니다. 그래야 할까요?

이것을 피하는 다른 간단한 방법이 있습니까? 디렉토리에 최대 크기를 지정하는 방법은 무엇 /var/log입니까 rsyslog?

이 문제가 기본적으로 활성화된 보호 메커니즘을 정당화할 만큼 자주 발생합니까? (특히 가정용/데스크톱 설치를 고려하고 있으므로 사용자가 직접 처리할 수 없어야 합니다.)

편집: Syslog 속도 제한

감사해요줄리 펠레티에의 답변,찾았어요속도 제한 메커니즘rsyslog에서는 이러한 요구 사항을 정확하게 충족하며 기본적으로 활성화되어야 합니다.

로깅 프로세스가 과도하게 실행되는 문제를 방지하기 위해 5.7.1부터 입력 속도 제한을 사용할 수 있습니다. 동일한 프로세스가 SysSock.RateLimit.Interval * SysSock.RateLimit.Burst보다 더 많은 로그 메시지를 내보내는 경우 SysSock.RateLimit.Severity 이하인 로그 메시지는 삭제됩니다.

그러나 PID가 변경되면 SystemLogRateLimit은 아무런 영향을 미치지 않습니다. 이것문서 페이지속도 제한 기능을 테스트하는 방법을 설명하고 다음과 같이 말합니다.

속도 제한은 동일한 PID가 주어졌을 때만 작동합니다.

그렇기 때문에 여기에는 적용되지 않는 것 같아요.

내 데스크탑에서:

Jul 25 21:34:36 bouzin kernel: [46038.140491] usb 1-5: usbfs: process 12126 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140546] usb 1-5: usbfs: process 12127 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140606] usb 1-5: usbfs: process 12128 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140675] usb 1-5: usbfs: process 12129 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140740] usb 1-5: usbfs: process 12130 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140809] usb 1-5: usbfs: process 12131 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140868] usb 1-5: usbfs: process 12132 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140928] usb 1-5: usbfs: process 12133 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.140988] usb 1-5: usbfs: process 12134 (hp) did not claim interface 1 before use
Jul 25 21:34:36 bouzin kernel: [46038.141046] usb 1-5: usbfs: process 12135 (hp) did not claim interface 1 before use

내 서버에서:

Jul  5 13:37:45 server postfix/smtpd[426]: NOQUEUE: reject_warning: RCPT from unknown[177.11.51.178]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.SERVER.TEST>
Jul  5 13:37:45 server postfix/smtpd[437]: NOQUEUE: reject_warning: RCPT from unknown[177.11.51.178]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.SERVER.TEST>
Jul  5 13:37:45 server postfix/smtpd[426]: NOQUEUE: reject_warning: RCPT from unknown[177.11.51.178]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.SERVER.TEST>
Jul  5 13:37:45 server postfix/smtpd[437]: NOQUEUE: reject_warning: RCPT from unknown[177.11.51.178]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.SERVER.TEST>

따라서 IIUC rsyslog의 속도 제한 기능은 각 로그 줄이 다른 프로세스에 의해 작성되므로 여기서는 관련이 없습니다.

편집 2: 디렉터리 크기 제한

/var/log나는 다음 을 사용하여 가상 파일 시스템의 크기를 제한했습니다.여기).

다음에 Linux를 설치할 때 별도의 파티션을 설정할 것 같습니다.

이 질문은 답변이 아니라 해결 방법이라고 생각하기 때문에 지금은 열어 두겠습니다.

답변1

rsyslog기본적으로 이 모듈에는 속도 제한 옵션이 포함되어 있습니다 imuxsock.

기본값은 5초마다 200개의 메시지이지만, 모듈을 로드한 후 다음을 설정하여 쉽게 변경할 수 있습니다.

$SystemLogRateLimitInterval 5
$SystemLogRateLimitBurst 200

$SystemLogRateLimitInterval초 단위의 간격(간격을 늘려야 함)이고 는 $SystemLogRateLimitBurst해당 간격 내에서 애플리케이션이 허용하는 최대 메시지 수(간격을 줄여야 함)입니다.

업데이트: 업데이트에 따라 오류로 인해 syslog가 다른 프로세스 ID로 넘쳐나고 있으며 데몬은 이를 효율적으로 처리할 수 있는 실제 방법이 없습니다.

따라서 최대 파일 크기에 대한 로그 회전 규칙을 변경하는 것이 유일한 해결 방법입니다. 일반적인 로그 순환 프로세스에 따라 압축되면 이러한 대용량 파일의 내용이 중복되므로 크기가 작아집니다.

관련 정보