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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

    公司有 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() 命令执行后的结果

wKiom1kehg3QuPGjAADArTyyO2c822.png


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/python
#coding:utf-8
 
import  pymongo
from  pymongo  import  MongoClient
 
class  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( ',' )
         =  0
         if  " u'stateStr': u'PRIMARY'"  in  get_list:
             =  1
         if  " u'stateStr': u'SECONDARY'"  in  get_list:
             + =  1
         if  " u'stateStr': u'ARBITER'"  in  get_list:
             + =  1
         return  a
 
 
if  __name__  = =  "__main__" :
     mongo  =  check_mongo_repl()
     print  mongo.get_rs_num()


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

wKiom1kehiiSPARbAAAFAcedy0o498.png


如若提示没有 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 后台添加监控项和触发器

wKioL1kehjvAOIFmAABmxM9jTNc636.png

wKiom1kehk6gM9n3AACHAi9wxCA294.png


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

wKioL1kehmCiYJIBAAA9HWyOeys770.png





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







      本文转自M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1927508,如需转载请自行联系原作者




相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
18天前
|
监控 算法 安全
基于 Python 广度优先搜索算法的监控局域网电脑研究
随着局域网规模扩大,企业对高效监控计算机的需求增加。广度优先搜索(BFS)算法凭借其层次化遍历特性,在Python中可用于实现局域网内的计算机设备信息收集、网络连接状态监测及安全漏洞扫描,确保网络安全与稳定运行。通过合理选择数据结构与算法,BFS显著提升了监控效能,助力企业实现智能化的网络管理。
27 7
|
1月前
|
存储 缓存 监控
|
2月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
68 23
|
2月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
65 22
|
2月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
80 25
|
3月前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
93 20
|
3月前
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
74 9
|
3月前
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
155 7
|
4月前
|
监控 Java Shell
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
70 5