2013-02-16 36 views
1

從遠程機器;我如何使用pymongo的mongostat從pymongo獲取mongostats? 我是usinng代表集。從pymongo獲取mongostats

c = Connection("50.xxx.xxx.xxx:27017",replicaSet='test') 
rep_status = c.admin.command("replSetGetStatus") 
mongostat = c.admin.command("mongostat") 

pymongo.errors.OperationFailure: command SON([('mongostat', 1)]) failed: no such cmd: mongostat 

回答

1

看在STDLIB的subprocess module

from subprocess import call 
call(["ls", "-l"]) 

你需要調用mongostat --host HOST --port PORT。 要連接到副本集,您可以指定副本集種子的名稱,並集成員的種子名單中,格式如下:

<replica_set_name>/<hostname1><:port>,<hostname2:<port>,...

+1

只是爲了擴大一點什麼尼克寫道:mongostat是不是一個mongodb內部的命令,它是一個程序,在mongodb之外執行。這意味着你不能從MongoDB中調用它,而是必須從操作系統調用它。 Nick提到的python調用函數是用來進行系統調用的方法,就像您可能從shell執行系統調用一樣(因此「ls -l」示例) – ACE 2013-03-04 19:07:38

+0

,我可以將結果賦給變量。像'result = call([「ls」,「-l」])? – 2017-05-26 09:43:25

1

使用serverStatus命令:

http://docs.mongodb.org/manual/reference/server-status/

你可以把它從pymongo像c.admin.command("serverStatus")

所有這一切在mongostat相同的信息存在於SER的結果verStatus(實際上,所有mongostat都在後臺執行serverStatus命令,並格式化/打印輸出)。