2013-02-16 40 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命令,并格式化/打印输出)。