로그 파일 회전
개요
--logpath
옵션이나 systemLog.path
설정과 함께 사용할 때 mongod
와 mongos
인스턴스는 모든 활동과 작업을 실시간으로 로그 파일에 기록합니다. 활동 데이터를 로그 파일에 기록할 때, 기본적으로 MongoDB는 logRotate
명령에 응답하거나 mongod
또는 mongos
프로세스가 운영 체제로부터 SIGUSR1
신호를 받을 때만 로그를 회전합니다. 서버 로그와 감사 로그는 logRotate
명령을 통해 함께 또는 독립적으로 회전시킬 수 있습니다.
MongoDB의 표준 로그 순환 방식은 현재 로그 파일을 보관하고 새 로그 파일을 시작합니다. 이를 위해 mongod
또는 mongos
인스턴스는 파일 이름에 UTC 타임스탬프를 추가하여 현재 로그 파일의 이름을 ISODate 형식으로 변경합니다. 그런 다음 새 로그 파일을 열고 이전 로그 파일을 닫은 후 모든 새 로그 파일에 새로운 로그 항목을 전송합니다.
systemLog.logRotate
또는 --logRotate
를 reopen
로 설정하여 MongoDB가 Linux/Unix logrotate
유틸리티를 지원하도록 구성할 수도 있습니다. reopen
mongod
또는 .mongos
를 사용하여 로그 파일을 닫은 다음 동일한 이름을 가진 로그 파일을 다시 실행하면 순환 전 다른 프로세스로 해당 파일의 이름을 변경했다고 예상할 수 있습니다.
마지막으로 --syslog
옵션을 사용하여 syslog
에 로그 데이터를 전송하도록 mongod
을 구성할 수 있습니다. 이 경우 대체 로그 순환 도구를 활용할 수 있습니다.
기본 로그 순환 동작
MongoDB는 기본적으로 --logRotate rename
동작을 사용합니다. rename
을 사용하여 mongod
이나 mongos
가 파일 이름에 UTC 타임스탬프를 추가하여 현재 로그 파일의 이름을 변경하고, 새 로그 파일을 실행하며, 이전 로그 파일을 닫고, 모든 새 로그 항목을 새 로그 파일로 전송합니다.
인스턴스 mongod
시작합니다.
mongod -v --logpath /var/log/mongodb/server1.log
--logRotate rename
을 명시적으로 지정할 수도 있습니다.
로그 파일을 순환합니다.
mongosh
의 admin
데이터베이스에서 logRotate
명령을 실행하여 로그 파일을 회전합니다.
db.adminCommand( { logRotate : server } )
감사가 활성화되었다면 server
대신 logRotate
를 1
로 지정하여 원하는 경우 서버와 감사 로그를 동시에 순환할 수 있습니다. 감사 로그는 --logRotate
설정에 따라 서버 로그와 동일한 방식으로 순환됩니다.
참고
인증된 복제본 세트에 대한 중재자에서는 이 명령을 실행할 수 없습니다.
새 로그 파일 보기
새로 생성된 로그를 확인하려면 새 로그 파일을 나열합니다.
ls /var/log/mongodb/server1.log*
두 개의 로그 파일이 나열됩니다. 그 중 하나는 다시 실행했을 때 mongod
또는 mongos
를 만든 server1.log
이며, 나머지는 이름이 변경된 원본 로그 파일인 server1.log.<timestamp>
입니다.
로그 파일을 순환해도 과거에 순환된 로그 파일은 수정되지 않습니다. 로그를 순환할 때 타임스탬프를 포함하도록 server1.log
파일의 이름을 변경하면 비어 있는 새 server1.log
파일이 모든 새 로그 입력을 수신합니다.
로그 순환 --logRotate reopen
--logRotate reopen
이 적용된 로그 순환은 일반적인 Linux/Unix 로그 순환 동작에 따라 로그 파일을 닫고 엽니다.
동작을 --logRotate
지정하여 인스턴스 를 mongod
시작합니다.reopen
mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend
--logappend
옵션을 --logRotate reopen
과 함께 사용해야 합니다.
시스템 로그의 로그 순환
시스템 로그의 로그 순환을 사용하면 mongod
이 로그 데이터를 파일에 쓰지 않고 시스템 로그로 전송합니다.
MongoDB는 syslog
로 보내는 로그 메시지에 구성 요소를 포함합니다.
옵션으로 --syslog
인스턴스 mongod
를 시작합니다.
mongod --syslog
--logpath
를 포함하지 않습니다. --syslog
가 시스템 로그에 로그 데이터를 전송하도록 mongod
에 지시하기 때문에, --logpath
를 지정하면 오류가 발생합니다.
메시지를 시스템 로그에 기록할 때 사용되는 시설 수준을 지정하려면 --syslogFacility
옵션 또는 systemLog.syslogFacility
구성 설정을 사용합니다.
로그 순환 강제 적용: SIGUSR1
Linux 및 Unix 기반 시스템의 경우 SIGUSR1
신호를 사용하여 단일 프로세스의 로그를 순환할 수 있습니다.
예를 들어 실행 중인 mongod
인스턴스의 프로세스 ID(PID)가 2200
인 경우 다음 명령은 Linux에서 해당 인스턴스에 대한 로그 파일을 순환시킵니다.
kill -SIGUSR1 2200