문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

로그 파일 회전

이 페이지의 내용

  • 개요
  • 기본 로그 순환 동작
  • 로그 순환 --logRotate reopen
  • 시스템 로그의 로그 순환
  • 로그 순환 강제 적용: SIGUSR1

--logpath 옵션이나 systemLog.path 설정과 함께 사용할 경우 mongodmongos 인스턴스는 모든 활동 및 작업의 실시간 계정을 로그 파일에 보고합니다. 활동 데이터를 로그 파일에 보고할 때, MongoDB는 기본적으로 logRotate 명령에 대한 응답으로 또는 mongod이나 mongos 프로세스가 운영 체제에서 SIGUSR1 신호를 수신할 경우에만 로그를 순환합니다. 서버 로그와 감사 로그는 logRotate 명령을 이용해 함께 또는 독립적으로 순환할 수 있습니다.

MongoDB의 표준 로그 순환 방식은 현재 로그 파일을 보관하고 새 로그 파일을 시작합니다. 이를 위해 mongod 또는 mongos 인스턴스는 파일 이름에 UTC 타임스탬프를 추가하여 현재 로그 파일의 이름을 ISODate 형식으로 변경합니다. 그런 다음 새 로그 파일을 열고 이전 로그 파일을 닫은 후 모든 새 로그 파일에 새로운 로그 항목을 전송합니다.

systemLog.logRotate 또는 --logRotatereopen로 설정하여 MongoDB가 Linux/Unix logrotate 유틸리티를 지원하도록 구성할 수도 있습니다. reopenmongod 또는 .mongos를 사용하여 로그 파일을 닫은 다음 동일한 이름을 가진 로그 파일을 다시 실행하면 순환 전 다른 프로세스로 해당 파일의 이름을 변경했다고 예상할 수 있습니다.

마지막으로 --syslog 옵션을 사용하여 syslog에 로그 데이터를 전송하도록 mongod을 구성할 수 있습니다. 이 경우 대체 로그 순환 도구를 활용할 수 있습니다.

참고

logRotate 는 복제된 명령이 아닙니다. 복제본 세트의 각 인스턴스에 연결하고 logRotate 를 실행하여 복제본 세트 멤버에 대한 로그를 로테이션해야 합니다.

로그 파일을 회전하려면 다음 단계 중 하나를 수행해야 합니다:

  • mongod 또는 mongos 프로세스에 SIGUSR1신호를 전송합니다.

  • MongoDB logRotate 명령을 실행합니다.

  • Linux/Unix logrotate 유틸리티를 실행합니다.

이 페이지 뒷부분의 예시를 참조하세요.

다음도 참조하세요.

로그 기록에 대한 자세한 내용은 프로세스 로그 기록 섹션에서 확인 가능합니다.

MongoDB는 기본적으로 --logRotate rename 동작을 사용합니다. rename을 사용하여 mongod이나 mongos가 파일 이름에 UTC 타임스탬프를 추가하여 현재 로그 파일의 이름을 변경하고, 새 로그 파일을 실행하며, 이전 로그 파일을 닫고, 모든 새 로그 항목을 새 로그 파일로 전송합니다.

1
mongod -v --logpath /var/log/mongodb/server1.log

--logRotate rename을 명시적으로 지정할 수도 있습니다.

2

별도의 터미널에서 일치하는 파일을 나열합니다.

ls /var/log/mongodb/server1.log*

결과에는 server1.log 로그 파일이 하나 포함되어야 합니다.

3

logRotateadmin 데이터베이스에서 명령을 실행하여 로그 파일을 mongosh 순환합니다.

db.adminCommand( { logRotate : "server" } )

감사가 활성화되었다면 server 대신 logRotate1로 지정하여 원하는 경우 서버와 감사 로그를 동시에 순환할 수 있습니다. 감사 로그는 --logRotate 설정에 따라 서버 로그와 동일한 방식으로 순환됩니다.

참고

인증된 복제본 세트에 대한 중재자에서는 이 명령을 실행할 수 없습니다.

4

새로 생성된 로그를 확인하려면 새 로그 파일을 나열합니다.

ls /var/log/mongodb/server1.log*

두 개의 로그 파일이 나열됩니다. 그 중 하나는 다시 실행했을 때 mongod 또는 mongos를 만든 server1.log이며, 나머지는 이름이 변경된 원본 로그 파일인 server1.log.<timestamp>입니다.

로그 파일을 순환해도 과거에 순환된 로그 파일은 수정되지 않습니다. 로그를 순환할 때 타임스탬프를 포함하도록 server1.log 파일의 이름을 변경하면 비어 있는 새 server1.log 파일이 모든 새 로그 입력을 수신합니다.

--logRotate reopen이 적용된 로그 순환은 일반적인 Linux/Unix 로그 순환 동작에 따라 로그 파일을 닫고 엽니다.

1
mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend

--logappend 옵션을 --logRotate reopen과 함께 사용해야 합니다.

2

별도의 터미널에서 일치하는 파일을 나열합니다.

ls /var/log/mongodb/server1.log*

결과에는 server1.log 로그 파일이 하나 포함되어야 합니다.

3

logRotateadmin 데이터베이스에서 명령을 실행하여 로그 mongosh 파일을 순환합니다.

db.adminCommand( { logRotate : "server" } )

일반적인 Linux/Unix 로그 순환 동작에 따라 외부 프로세스를 사용하여 로그 파일의 이름을 변경해야 합니다.

시스템 로그의 로그 순환을 사용하면 mongod이 로그 데이터를 파일에 쓰지 않고 시스템 로그로 전송합니다.

MongoDB는 syslog 에 대한 로그 메시지에 구성 요소 를 포함합니다.

1
mongod --syslog

--logpath를 포함하지 않습니다. --syslog가 시스템 로그에 로그 데이터를 전송하도록 mongod에 지시하기 때문에, --logpath를 지정하면 오류가 발생합니다.

메시지를 시스템 로그에 기록할 때 사용되는 시설 수준을 지정하려면 --syslogFacility 옵션 또는 systemLog.syslogFacility 구성 설정을 사용합니다.

2

시스템 기본 로그 순환 메커니즘을 사용하여 로그 출력을 저장하고 순환합니다.

Linux 및 Unix 기반 시스템의 경우 SIGUSR1 신호를 사용하여 단일 프로세스의 로그를 순환할 수 있습니다.

예를 들어 실행 중인 mongod 인스턴스의 프로세스 ID(PID)가 2200인 경우 다음 명령은 Linux에서 해당 인스턴스에 대한 로그 파일을 순환시킵니다.

kill -SIGUSR1 2200
← 실행 중인 작업 종료