如何使用Zabbix的自动发现来监控mongo数据库-阿里云开发者社区

开发者社区> 玄学酱> 正文

如何使用Zabbix的自动发现来监控mongo数据库

简介:
+关注继续查看

监控mongo写个模板其实挺快的,如果公司每个mongo使用的端口都一致的话,就可直接建立一套模板,然后这个模板链接到各个服务器上即可。但如果公司使用mongo的端口如果不一致的话,那建议使用zabbix的自动发现的功能,自动发现mongo监听的端口,并对它进行相关数据的收集。

先看一下效果图

此监控图是zabbix的筛选功能可能把相关的图整合到一个页面里面去。

具体的自动发现实现如下:

探索规则配置如上,机器上的zabbix agent配置如下:

UserParameter=mongo.discover,python /usr/local/zabbix/discover_mongo.py

其中/usr/local/zabbix/discover_mongo.py为自动发现的脚本,脚本内容如下:


  1. #coding:utf-8 
  2. import simplejson as json 
  3. import commands 
  4.  
  5. (status, output) = commands.getstatusoutput('''sudo netstat -tlnp|grep 'mongod'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u|grep -v "^28"'''
  6. outputs = output.split('\n'
  7. ports = [] 
  8. for port in  outputs: 
  9.     ports += [{'{#MONGOPORT}': port}] 
  10.  
  11. print json.dumps({'data':ports},sort_keys=True,indent=4) 

使用系统命令netstat把监听的端口筛选出来,然后以json的格式进行输出。定义到此就可以自动发现zabbix监听的端口。

注意:netstat一般zabbix用户没有权限,需要visudo进行对应的设置,此脚本可能得针对自己的环境进行相对的调整。

探索完端口后,zabbix server就需要以端口为其中一个参数向zabbix agent取数据,其中项目原型配置如下:

如果返回的{#MONGOPORT}有多个的话,那监控项目就乘以几。

其中mongo.status的定义如下(此定义还是zabbix agent下):

UserParameter=mongo.status[*],sh /usr/local/zabbix/check_mongo.sh -p $1 -k $2 -K $3

使用一个脚本传入参数来获取mongo的一些数据收集,后续可直接扩展此脚本(-p代表端口),mongo的serverStatus有多个参数,采集的就用到opcounters等,-k和-K能具体获取其数值。其中脚本如下:


  1. #!/bin/sh 
  2. while getopts "p:k:K:" opt 
  3. do 
  4.         case $opt in 
  5.                 p ) mongo_port=$OPTARG;; 
  6.                 k ) key1=$OPTARG;; 
  7.                 K ) key2=$OPTARG;; 
  8.                 ? ) 
  9.                 echo 'parameter is wrong!' 
  10.                 exit 1;; 
  11.         esac 
  12. done 
  13.  
  14. if [ ! "${mongo_port}" ] || [ ! "${key1}" ] || [ ! "${key2}" ];then 
  15.         echo "parameter is null"         
  16.         exit 1 
  17. fi 
  18.  
  19. echo "db.serverStatus().${key1}"|mongo --port=${mongo_port}|sed 's/,/\r\n/g'|grep "${key2}" |awk -F':|,|}' '{print $2}' 

部署完一个模板,把模板关联到mongo的机器,就能收集相关的操作信息。在模板上再添加一个图形原型,如下:

模板应用完如果没问题就可以在zabbix的筛选中把mongo集群的数据汇在一个网页上进行查看。





作者:鸿弟
来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot Admin,贼好使!(8)
Spring Boot Admin,贼好使!(8)
22 0
MyBatis 批量插入数据的 3 种方法!(8)
MyBatis 批量插入数据的 3 种方法!(8)
5 0
MyBatis 批量插入数据的 3 种方法!(7)
MyBatis 批量插入数据的 3 种方法!(7)
6 0
Spring Boot Admin,贼好使!(5)
Spring Boot Admin,贼好使!(5)
32 0
MyBatis 批量插入数据的 3 种方法!(2)
MyBatis 批量插入数据的 3 种方法!(2)
9 0
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(3)
保姆级教程,终于搞懂脏读、幻读和不可重复读了!(3)
25 0
MyBatis 批量插入数据的 3 种方法!(1)
MyBatis 批量插入数据的 3 种方法!(1)
6 0
Spring Boot Admin,贼好使!(3)
Spring Boot Admin,贼好使!(3)
26 0
Spring Boot Admin,贼好使!(4)
Spring Boot Admin,贼好使!(4)
27 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20710
文章
438
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载