2012-01-04 2 views
5

(모니터링 목적으로) 내 파이썬 코드에서 db.stats() mongo 쉘 명령의 결과를 얻으려고합니다.MongoDB : API에서 db.stats()를 얻는 방법

예를 들어 serverStatus와 달리 db.command('stats')을 할 수 없습니다. mongodb 문서에서 API를 찾을 수 없었습니다. db.$cmd으로 유사 콘텐츠를 시도했지만 그 중 아무 것도 작동하지 않았습니다.

그래서,

작은 질문 : 어떻게 얻을 수 있습니다 내 파이썬 코드에서 db.stats() (연결/개체 수 등의 데이터의 크기 & 인덱스)의 결과?

큰 질문 : 다른 사람이 아닌 반면 일부 사람이 셸 명령의 일부를 쉽게 액세스 할 수있는 이유를 설명 할 수 있습니까? 매우 짜증나 : 일부 관리 관련 도구는 db.$cmd.sys을 통해 액세스 할 수 있으며, 일부는 db.command을 통해 액세스 할 수 있습니다. 이 상황에 대한 표준이나 설명이 있습니까?

PS : MongoDB를 2.0.2, pymongo 2.1.0, 파이썬 2.7

답변

10

는 자바 스크립트 쉘의 stats 명령 도우미는 실제로 당신이 Database.command method를 사용하여 PyMongo에서 실행할 수있는 dbstats라는 명령을 호출합니다. 가장 쉬운 방법은 실행 쉘 도우미 괄호없이 쉘 도우미를 호출하는 것입니다 계명을 알아내는 -이 그것을 실행하는 자바 스크립트 코드를 출력합니다 : 일부 명령은 헬퍼 이유에 관해서는

> db.stats 
function (scale) { 
    return this.runCommand({dbstats:1, scale:scale}); 
} 

다른 사람이 할 그렇지 않다면, 그것은 주로 운전자의 선호도, 시간 및 사용 빈도의 문제입니다. 모든 명령을 Database.command이라는 이름으로 실행할 수 있습니다. 이것은 db.$cmd.find_one 주위의 편리한 래퍼입니다. List of Database Commands에서 전체 명령 목록을 찾을 수 있습니다. submit a patch을 PyMongo와 비교하여 자주 호출해야하지만 아직 PyMongo에서 지원하지 않는 명령에 대한 도우미 메서드를 추가 할 수도 있습니다.

+5

dbstats가 실행되는 동안 데이터베이스가 차단되므로 프로덕션 환경에서는 적합하지 않습니다. https://jira.mongodb.org/browse/SERVER-5714 – whit537

+0

+1 놀라운 답변! –

+0

이것은 여전히 ​​'WiredTiger' 스토리지 엔진에서 블로킹 콜입니다 : http://stackoverflow.com/questions/36559408/is-db-stats-a-blocking-call-for-mongodb –

관련 문제