앞서 Ubuntu 18.04에 MongoDB를 설치하는 방법을 소개한 적이 있습니다. 데이터베이스 배포를 성공적으로 마쳤다면, 운영 중인 시스템의 성능을 지속적으로 모니터링해야 합니다. 이는 데이터베이스 관리 업무에서 가장 중요한 작업 중 하나입니다.
다행히 MongoDB는 자체 성능과 활동 상태를 확인할 수 있는 다양한 방법을 제공합니다. 이 글에서는 실행 중인 MongoDB 인스턴스의 상태 통계를 확인할 수 있는 모니터링 유틸리티와 데이터베이스 명령어를 살펴보겠습니다.
1. Mongostat
Mongostat은 Linux, FreeBSD, Solaris, MacOS 등 주요 Unix 계열 운영체제에서 사용할 수 있는 vmstat 모니터링 도구와 유사한 기능을 제공합니다. 데이터베이스 상태를 한눈에 빠르게 파악할 수 있으며, 실행 중인 mongod 또는 mongos 인스턴스의 실시간 동적 뷰를 보여줍니다. 삽입(insert), 조회(query), 갱신(update), 삭제(delete) 등 유형별 데이터베이스 작업 횟수를 확인할 수 있습니다.
아래와 같이 mongostat을 실행할 수 있습니다. 참고로 인증 기능이 활성화되어 있다면, 특수 문자가 포함된 경우 오류가 발생하지 않도록 사용자 비밀번호를 반드시 작은따옴표(')로 감싸야 합니다.
$ mongostat -u "root" -p '=@!#@%$admin1' --authenticationDatabase "admin"
더 많은 mongostat 사용 옵션이 궁금하다면 아래 명령어를 입력하세요.
$ mongostat --help
2. Mongotop
Mongotop 역시 실행 중인 MongoDB 인스턴스의 실시간 동적 뷰를 제공합니다. MongoDB 인스턴스가 데이터를 읽고 쓰는 데 소요되는 시간을 추적하며, 기본적으로 매 초마다 결과값을 반환합니다.
$ mongotop -u "root" -p '=@!#@%$admin1' --authenticationDatabase "admin"
더 많은 mongotop 사용 옵션이 궁금하다면 아래 명령어를 입력하세요.
$ mongotop --help
3. serverStatus 명령어
먼저 아래 명령어를 실행해 mongo 셸에 로그인합니다.
$ mongo -u "root" -p '=@!#@%$admin1' --authenticationDatabase "admin"
그다음 serverStatus 명령어를 실행하면, 인스턴스에 대한 통계를 수집해 데이터베이스 상태의 전체적인 개요를 확인할 수 있습니다.
>db.runCommand( { serverStatus: 1 } )
또는
>db.serverStatus()
4. dbStats 명령어
dbStats 명령어는 특정 데이터베이스의 저장소 통계를 반환합니다. 사용 중인 저장 공간 크기, 데이터베이스에 담긴 데이터 양, 그리고 객체·컬렉션·인덱스 개수 등을 확인할 수 있습니다.
>db.runCommand({ dbStats: 1 } )
또는
>db.stats()
5. collStats
collStats 명령어는 dbStats에서 제공하는 것과 유사한 통계를 컬렉션 단위로 수집합니다. 출력 결과에는 컬렉션 내 객체 수, 컬렉션 크기, 디스크 사용량, 그리고 해당 컬렉션의 인덱스 관련 정보가 포함됩니다.
>db.runCommand( { collStats : "aurthors", scale: 1024 } )
6. replSetGetStatus 명령어
replSetGetStatus 명령어는 해당 명령을 처리한 서버 관점에서 복제 세트(replica set)의 상태를 출력합니다. 이 명령어는 반드시 admin 데이터베이스에 대해 아래 형식으로 실행해야 합니다.
>db.adminCommand( { replSetGetStatus : 1 } )
위에서 소개한 유틸리티와 데이터베이스 명령어 외에도, 지원되는 서드파티 모니터링 도구를 직접 사용하거나 자체 플러그인을 통해 활용할 수 있습니다. 대표적인 예로 mtop, munin, nagios가 있습니다.
자세한 내용은 MongoDB 공식 문서의 Monitoring for MongoDB 항목을 참고하시기 바랍니다.
지금까지 실행 중인 MongoDB 인스턴스의 상태 통계를 확인할 수 있는 유용한 모니터링 유틸리티와 데이터베이스 명령어를 살펴보았습니다. 궁금한 점이나 의견이 있다면 아래 피드백 폼을 통해 알려주세요.