使用zabbix监控MongoDB

zabbix监控MongoDB的基本思路是先编写自定义脚本收集MongoDB的状态信息,通过db.serverStatus()函数的输出来获取,然后添加相应的模板。

本文使用的MongoDB版本是2.4.6

主要监控以下项目:

内存使用情况

连接数

刷新写操作到磁盘

每秒执行的查询,插入,删除,更新等操作次数

每秒访问的索引次数,每秒命中索引的次数

MongoDB产生的总的页面错误数量

MongoDB的网络流量状况

  1. 编写监控脚本mongodb_status.sh

这里默认使用28018端口,可以根据情况自行修改端口

这个脚本根据传递参数的数量进行判断获取值的层级

#This script is used to get mongodb server status
 
#echo "db.serverStatus().uptime"|mongo 192.168.5.23:30002/admin
#echo "db.serverStatus().mem.mapped"|mongo 192.168.5.23:30002/admin
#echo "db.serverStatus().globalLock.activeClients.total"|mongo 192.168.5.23:30002/admin
 
 
case $# in
  1)
    output=$(/bin/echo "db.serverStatus().$1" |/data/app_platform/mongodb/bin/mongo admin --port 28018|sed -n '3p')
    ;;
  2)
    output=$(/bin/echo "db.serverStatus().$1.$2" |/data/app_platform/mongodb/bin/mongo admin --port 28018|sed -n '3p')
    ;;
  3)
    output=$(/bin/echo "db.serverStatus().$1.$2.$3" |/data/app_platform/mongodb/bin/mongo admin --port 28018|sed -n '3p')
    ;;
esac
 
#check if the output contains "NumberLong"
if [[ "$output" =~ "NumberLong"   ]];then
  echo $output|sed -n 's/NumberLong(//p'|sed -n 's/)//p'
else 
  echo $output
fi

2.添加zabbix配置文件mongodb_status.conf

将mongodb_status.conf放到/usr/local/zabbix/etc/zabbix_agentd.conf.d/目录下

在zabbix的主配置文件中需要注意设置

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

UnsafeUserParameters=1

#echo "db.serverStatus().mem.mapped"|mongo admin --host xxxx --port xxx  -uroot -pxxxx
#echo "db.serverStatus().mem.mapped"|mongo 10.4.9.112:28018/admin  -uroot -pxxxx
#UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1.$2" |/data/app_platform/mongodb/bin/mongo admin --port 28018|sed -n '3p'
UserParameter=MongoDB.Status[*],/usr/local/zabbix/bin/mongodb_status.sh $1 $2 $3

3.添加MongoDB监控模板

附件为参考模板

1478850838-7524-iom1RKDQezp1gYAAN2Xfh7T98173

1478850835-1449-ioL1RKEPPzhxOUAAdHjH37zsg993

1478850837-6223-iom1RKEKShc8VrAAWvY6ZGS1Q539

1478850834-6951-iom1RKEKSxcZ33AAZI4k9LNJM374

 

本文出自 “Linux SA John” 博客,请务必保留此出处http://john88wang.blog.51cto.com/2165294/1565968

照着以上的配置,zabbix_get能获取到数据,页面无法获取,将模板中所有的agent(active)改为agent后正常。

我的环境:mongo 3.0.6

mongo引擎 mmapv1

附件:

zabbix_mongo

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This blog is kept spam free by WP-SpamFree.