我试图在我的python代码中获取db.stats()mongo shell命令的结果(用于监视目的).
但与例如serverStatus不同,我无法做到db.command('stats').我无法在mongodb文档中找到任何API等价物.我也尝试了各种变化,db.$cmd但没有一个有效.
所以,
小问题:如何db.stats()在我的python代码中获得(连接/对象的数量,数据和索引的大小等)的结果?
更大的问题:任何人都可以解释为什么一些shell命令可以从API轻松访问,而其他人不是?这非常烦人:一些管理员相关的工具可以通过db.$cmd.sys,一些通过db.command,一些通过...?这种情况有一些标准或解释吗?
PS:mongodb 2.0.2,pymongo 2.1.0,python 2.7
我正在python上编写一个工具来监控fastcgi应用程序.fastcgi我唯一需要的是加载ping和状态页面(如果失败则返回某种错误).
有很多库(从python-fasctgi绑定到扭曲)似乎能够做到这一点,但是大多数库对于我的目的来说简直太过分了,而且其中许多都会让我产生额外的依赖性,导致一些包装问题.
那么,是否有任何简单的python fastcgi 客户端实现/库,易于安装/打包(转rpm)或小到足以随项目分发.
更新:
感谢agf,我已经能够连接到fastcgi app并发送一些请求.它只不过是标准的php-fpm.但我无法得到任何位置的响应:我正试图从'/ ping',它应该响应200 OK和'pong'在体内.对于我的任何要求,所有我得到的是200 OK响应,空身.
我正在以这种方式提出要求:
def _load_page(self, url):
""" load fastcgi page """
fcgi = fcgi_client.FCGIApp(host = self.fcgi_host, port = self.fcgi_port)
env = {
'SCRIPT_FILENAME': url,
'QUERY_STRING': url,
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': url,
'REQUEST_URI': url,
'GATEWAY_INTERFACE': 'CGI/1.1',
'SERVER_SOFTWARE': 'ztc',
'REDIRECT_STATUS': '200',
'CONTENT_TYPE': '',
'CONTENT_LENGTH': '0',
'DOCUMENT_URI': url,
'DOCUMENT_ROOT': '/',
#'SERVER_PROTOCOL' : ???
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '123',
'SERVER_ADDR': self.fcgi_host,
'SERVER_PORT': str(self.fcgi_port),
'SERVER_NAME': self.fcgi_host
}
ret = fcgi(env)
print ret
Run Code Online (Sandbox Code Playgroud)
我还必须在stdin处理中修改flup客户端:
# Transfer wsgi.input …Run Code Online (Sandbox Code Playgroud) 我是一名系统管理员/基础设施工程师,有时我会浪费时间检查基础设施发生变化后是否一切正常.我想写一些测试,例如:
大多数单元测试框架都侧重于单元测试和代码覆盖,但我需要的只是一个可配置的运行器,用于我的测试,报告很好,可能是用于编写HTTP测试的附加模块.使用此工具进行压力测试的可能性将是一个优势.
我发现了许多名字(testoob,functest,robotframework,py.test等),但我不知道该选择什么.
我正在为zabbix开发监控脚本和模板的集合.它被称为ZTC,所有脚本都在python上.
现在我想添加一些java监控的支持.我没有找到从CPython中做到这一点的方法 - 仅限于java或jython.由于所有项目都在python上,我决定在jython上编写一个简单的脚本,它将从我的cpython类中调用.
以下是我的代码的样子:
#!/usr/bin/env jython
#Java Dependencies
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import java.lang.management.ManagementFactory;
#Python Dependencies
import sys, cmd, socket
def usage():
print """Usage:
jmxclient.py -h
jmxclient.py <connect_url> <jmx_attribute_path> <jmx_property>"""
class JMXClient:
remote = None
def connect(self, connect_url):
if self.remote:
return True
#Establish Connection to JMX Server
url = javax.management.remote.JMXServiceURL(connect_url);
connector = javax.management.remote.JMXConnectorFactory.connect(url);
self.remote = connector.getMBeanServerConnection();
def getAttribute(self, mbean_path, attribute):
"""Query the mbean server for a specific attribute and return the
result"""
obn …Run Code Online (Sandbox Code Playgroud)