通过数据库获取opcounters

时间:2015-01-12 22:52:25

标签: mongodb pymongo

我有一个看起来像这样的监控脚本

client = pymongo.MongoClient()
for database in client.database_names():
    iterator = client[database].command({"serverStatus":1})["opcounters"].iteritems()
    for key, value in iterator:
        log(key, data=value, database=database)

这给了我所有操作员同样的结果。看看我的图表,我得到这样的数据:

opcounters.command_per_second on test_database: 53.32K
opcounters.command_per_second on log_database: 53.32K

显然,“serverStatus”表示整个服务器,而不仅仅是数据库。

是否可以为每个数据库获取opcounters?

1 个答案:

答案 0 :(得分:4)

没有每个数据库的操作数,至少对于v2.8.0或更早版本。 serverStats 中使用的操作计数器结构是全局的。记录每个新计数时没有涉及db或集合的上下文。

除此之外, collStats 命令根本没有op统计数据,因此无法通过聚合计算数据库的总操作数。

您可以在MongoDB问题跟踪器中观看/上传一个开放功能请求:SERVER-2178: Track stats per db/collection