此问题的情境:
使用的mongodb的版本为3.0.x, 因为为生产环境,不可轻易做版本降级操作
pymongo 2.7是无法连接的,有文章有提到直接修改API的使用即可。(主要内容是:Connection继承自MongoClient)
本人没有测试直接修改lepus+pymongo 2.7版本的API是否可用,有兴趣的可以自行测试。
需要安装pymongo 3.2 这里不要再使用lepus安装文档中提到的pymongo 2.7
监控账号的授权:
因为需要获取serverStatus, 需要给连接账号授予clusterAdmin的角色。
MongoDB的文档中可以查看各内置角色对应的权限。
修改lepus文件check_mongodb.py
进入到lepus的安装目录/usr/local/lepus
修改文件 check_mongodb.py
因为Connection在新版本中已经去掉了,所以改用MongoClient
connect = pymongo.MongoClient(host,int(port))
获取serverStatus的代码,若直接使用BSON的方式获取,始终报认证问题,当时修改太快了,不知道是不是权限问题,现在也不太想退回去再测试了。有兴趣的可以测试下,欢迎分享。
serverStatus=db.command(‘serverStatus’)
serverStatus_2=db.command(‘serverStatus’)
注意调整connect = 1的位置,因为此处获取serverStatus的时候,没有获取replicate的信息,因此仍需要保证连接可用。
indexCounter在3.0版本中已经去掉了,MongoDB官方文档有说明。因此相关的参数均无法获取了,直接赋值数字0.
indexCounters_accesses = 0
indexCounters_hits = 0
indexCounters_misses = 0
indexCounters_resets = 0
indexCounters_missRatio = 0获取replStatus的状态:
在第二段try代码中添加:
replStatus=db.command(‘replSetGetStatus’)
repl=replStatus
到此,差不多修改完了。