MongoDB 관리

티쓰리엔터테인먼트
모바일 1팀
공통 기술 개발팀
최흥배 과장
로깅
default로 로그는 MondoDB 콘솔에 출력.
--logpath 옵션을 사용하여 파일로 로그를 출력할 수 있다.
$ mongod --logpath=/var/log/mongodb.log

파일 출력 시에 다음에 MongoDB 실행 시에 다른 로그 파일을
생성하기 위해서는 --logappend 옵션을 사용한다.
$ mongod --logpath=/var/log/mongodb.log --logappend
로그 레벨
$ mongod --verbose ← 로그 출력을 많이 한다
$ mongod -vvvvv ← 로그 출력을 최대화 한다
$ mongod --quiet ← 로그 출력을 최소화 한다
실 시간 감시 명령어
컬렉션 처리 시간 순으로 표기
MongoDB의 전체 상태 표시
MongoDB 서버 전체의 다양한 통계 정보를 정기적으로 표시한
다.
1초마다 1행씩 표시
MongoDB 전체 통계 정보
> db.serverStatus()
{
"host" : "mongodb.localdomain",
"version" : "2.4.1",
"process" : "mongod",
"pid" : 1537,
"mem" : {
"bits" : 64,
"resident" : 725,
←물리 메모리 사용량
"virtual" : 2568,
←가상 메모리 사용량
"supported" : true,
"mapped" : 1136,
"mappedWithJournal" : 2272
}
데이터 베이스, 컬렉션 통계 정보
> db.stats()
{
"db" : "sample-db",
"collections" : 3,
←컬렉션 수
"dataSize" : 1447258292, ←데이터 사이즈
"indexSize" : 408800,
(略)
}
> db.(컬렉션 이름).stats()
{
"ns" : "sample-db.collection01",
"count" : 8031,
"size" : 1447258112,
"totalIndexSize" : 408800,
(略)
}
실행 중 커리 정보 얻기
> db.currentOp();
{
"inprog" : [
{
"opid" : 22991,
"op" : "insert",
"ns" : "sample-db.test",
"lockStats" : {
"timeLockedMicros" : {
"r" : NumberLong(0),
"w" : NumberLong(138) ←쓰기 락이 138ms
},
(略)
감시해야 할 목록
 데이터 용량
db,status()

 메모리 사용량

mongostat의 res 부분, serverStatus()의 mem.resident 부분

 트래픽
mongotop나 serverStatus()

 락 시간
serverStatus()의 globalLog, mongostat의 locked

 늦은 query 량
관리 툴
A Roundup of MongoDB Management Tools
http://blog.michaelckennedy.net/2013/04/22/a-roundup-ofmongodb-management-tools-nosql-database/

Robomongo, price: $0 / open-source, platforms: Windows, OS X, Linux
http://robomongo.org/
관리 툴

Mongovue, price: $0 / $35 / $up, platforms: Windows
관리 툴

MongoDB 실행 시 --rest 를 사용하면 더 자세한 정보가 나온다

REST view, price: $0 / open-source, platforms: Windows, OS X, Linux
http://localhost:28017/
관리 툴

MongoDB Monitoring Service, price: $0 / open-source, platforms: Windows,
OS X, Linux

Mongodb 관리

  • 1.
  • 2.
    로깅 default로 로그는 MondoDB콘솔에 출력. --logpath 옵션을 사용하여 파일로 로그를 출력할 수 있다. $ mongod --logpath=/var/log/mongodb.log 파일 출력 시에 다음에 MongoDB 실행 시에 다른 로그 파일을 생성하기 위해서는 --logappend 옵션을 사용한다. $ mongod --logpath=/var/log/mongodb.log --logappend 로그 레벨 $ mongod --verbose ← 로그 출력을 많이 한다 $ mongod -vvvvv ← 로그 출력을 최대화 한다 $ mongod --quiet ← 로그 출력을 최소화 한다
  • 3.
    실 시간 감시명령어 컬렉션 처리 시간 순으로 표기
  • 4.
    MongoDB의 전체 상태표시 MongoDB 서버 전체의 다양한 통계 정보를 정기적으로 표시한 다. 1초마다 1행씩 표시
  • 5.
    MongoDB 전체 통계정보 > db.serverStatus() { "host" : "mongodb.localdomain", "version" : "2.4.1", "process" : "mongod", "pid" : 1537, "mem" : { "bits" : 64, "resident" : 725, ←물리 메모리 사용량 "virtual" : 2568, ←가상 메모리 사용량 "supported" : true, "mapped" : 1136, "mappedWithJournal" : 2272 }
  • 6.
    데이터 베이스, 컬렉션통계 정보 > db.stats() { "db" : "sample-db", "collections" : 3, ←컬렉션 수 "dataSize" : 1447258292, ←데이터 사이즈 "indexSize" : 408800, (略) } > db.(컬렉션 이름).stats() { "ns" : "sample-db.collection01", "count" : 8031, "size" : 1447258112, "totalIndexSize" : 408800, (略) }
  • 7.
    실행 중 커리정보 얻기 > db.currentOp(); { "inprog" : [ { "opid" : 22991, "op" : "insert", "ns" : "sample-db.test", "lockStats" : { "timeLockedMicros" : { "r" : NumberLong(0), "w" : NumberLong(138) ←쓰기 락이 138ms }, (略)
  • 8.
    감시해야 할 목록 데이터 용량 db,status()  메모리 사용량 mongostat의 res 부분, serverStatus()의 mem.resident 부분  트래픽 mongotop나 serverStatus()  락 시간 serverStatus()의 globalLog, mongostat의 locked  늦은 query 량
  • 9.
    관리 툴 A Roundupof MongoDB Management Tools http://blog.michaelckennedy.net/2013/04/22/a-roundup-ofmongodb-management-tools-nosql-database/ Robomongo, price: $0 / open-source, platforms: Windows, OS X, Linux http://robomongo.org/
  • 10.
    관리 툴 Mongovue, price:$0 / $35 / $up, platforms: Windows
  • 11.
    관리 툴 MongoDB 실행시 --rest 를 사용하면 더 자세한 정보가 나온다 REST view, price: $0 / open-source, platforms: Windows, OS X, Linux http://localhost:28017/
  • 12.
    관리 툴 MongoDB MonitoringService, price: $0 / open-source, platforms: Windows, OS X, Linux