我有一个看起来像这样的监控脚本
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?
答案 0 :(得分:4)
没有每个数据库的操作数,至少对于v2.8.0或更早版本。 serverStats 中使用的操作计数器结构是全局的。记录每个新计数时没有涉及db或集合的上下文。
除此之外, collStats 命令根本没有op统计数据,因此无法通过聚合计算数据库的总操作数。
您可以在MongoDB问题跟踪器中观看/上传一个开放功能请求:SERVER-2178: Track stats per db/collection。