千家信息网

zabbix使用Python实现监控MongoDB副本集状态

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,公司有 Windows 和 Linux 服务器,都搭建了 MongoDB 副本集,并且都要在 zabbix 平台中实现监控。Linux 系统直接使用 shell 脚本即可实现,但是 Windows 系
千家信息网最后更新 2026年10月31日zabbix使用Python实现监控MongoDB副本集状态


公司有 Windows 和 Linux 服务器,都搭建了 MongoDB 副本集,并且都要在 zabbix 平台中实现监控。Linux 系统直接使用 shell 脚本即可实现,但是 Windows 系统的不太好实现,我这里使用 Python 来实现。下面脚本同样适用于Linux系统(在 Windows server 2012 和 Centos7.3 系统都验证成功)


思路:

1、安装Python2.7

2、采用 Python 的 pymongo 模块来连接 mongodb 数据库,并认证授权

3、数据库中执行 rs.status() 命令查看副本集状态,可以用 db._adminCommand("replSetGetStatus")) 命令代替

4、过滤 rs.status() 命令执行后的值中是否含有PRIMARY、SECONDARY、ARBITER,并计数

5、返回计数值到zabbix中


步骤:

1、安装Python2.7,步骤省略

2、查看 rs.status() 命令执行后的结果


3、在 C:\Program Files\zabbix_agents_3.0.0.win 目录下新建脚本 mongodb-monitor.py

#!/usr/bin/python#coding:utf-8import pymongofrom pymongo import MongoClientclass check_mongo_repl():    def __init__(self):        self.conn = pymongo.MongoClient('mongodb://admin:Admin123@192.168.18.195:27018/')        self.db = self.conn.admin        self.rs = self.db.command('replSetGetStatus')    def get_rs_num(self):        list = "Value : %s" %  self.rs.values()        get_list = list.split(',')        a = 0        if " u'stateStr': u'PRIMARY'" in get_list:            a = 1        if " u'stateStr': u'SECONDARY'" in get_list:            a += 1        if " u'stateStr': u'ARBITER'" in get_list:            a += 1        return aif __name__ == "__main__":    mongo = check_mongo_repl()    print mongo.get_rs_num()


说明:若 mongodb 副本集三个节点分别含有 PRIMARY、SECONDARY、ARBITER 说明副本集正常,返回值为3


如若提示没有 pymongo 模块,下载安装即可,Windows版:

https://pypi.python.org/packages/2.7/p/pymongo/pymongo-2.6.3.win-amd64-py2.7.exe


注意:若mongodb的密码包含字符@,则会报错:

File "C:\Python27\lib\site-packages\pymongo\uri_parser.py", line 78, in parse_userinfo

raise InvalidURI("':' or '@' characters in a username or password "

pymongo.errors.InvalidURI: ':' or '@' characters in a username or password must be escaped according to RFC 2396.


解决:需要用 %40 代替@(比如密码为:Admin@123,则改成:Admin%40123)

参考:https://stackoverflow.com/questions/7486623/mongodb-password-with-in-it


4、在 zabbix_agentd.win.conf 配置文件中加入

UserParameter=mongodb.repl.set,python "C:\Program Files\zabbix_agents_3.0.0.win\mongodb-monitor.py"


5、在zabbix 后台添加监控项和触发器


6、最新数据中可查看到监控数据





pymongo 连接 MongoDB参考

1、http://api.mongodb.com/python/current/tutorial.html

2、http://stackoverflow.com/questions/13322100/pymongo-how-to-get-status-as-a-python-dictionary-for-rep-sets

3、http://grokbase.com/t/gg/mongodb-user/132bhfa0jq/getting-mongod-replica-status-via-pymongo



副本 命令 数据 系统 监控 脚本 密码 数据库 模块 步骤 参考 状态 成功 三个 公司 后台 字符 平台 思路 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 保险科技 互联网保险 新华互联网科技 关于新基建和互联网科技 齐家互联网科技 多迪互联网科技有限公司 深圳市运趣互联网科技有限公司 互联网汽车科技小镇 农村开互联网科技讲堂 银川新华互联网科技职业技术培训学校图片 顶级互联网科技成果有哪些 全球顶尖互联网科技公司 和信科技工业互联网 苏州铭阳互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 银川新华互联网科技学校联系电话 伍佰万互联网科技怎么赚钱 互联网科技接地气 云南互联网科技学费 宁波允成互联网科技有限公司 美国互联网黑科技 互联网女皇 腾讯科技 亿账通互联网科技 赫美联合互联网科技 深圳期待互联网科技 哈尔滨新华互联网科技 中国的互联网科技企业的崛起 栖莱科技互联网股份有限公司 互联网科技革命什么开始 江苏互联网智能科技产品出厂价
0