加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 服务器 > 系统 > 正文

运用zabbix监控MongoDB

发布时间:2023-10-18 15:32:34 所属栏目:系统 来源:
导读:现在公司几个游戏项目主要使用MongoDB来存储游戏数据,所以对MongoDB的监控非常重要。关于MongoDB的其他监控方法详见以下几篇文章:

MongoDB监控一

MongoDB监控二 mongotop

MongoDB监控三 MongoDB自带监控
现在公司几个游戏项目主要使用MongoDB来存储游戏数据,所以对MongoDB的监控非常重要。关于MongoDB的其他监控方法详见以下几篇文章:
 
MongoDB监控一
 
MongoDB监控二 mongotop
 
MongoDB监控三 MongoDB自带监控方法
 
MongoDB监控四 dbStats和collStats和replSetGetStatus
 
http://mayulin.blog.51cto.com/1628315/575541
 
zabbix监控MongoDB的基本思路是先编写自定义脚本收集MongoDB的状态信息,通过db.serverStatus()函数的输出来获取,然后添加相应的模板。
 
本文使用的MongoDB版本是2.4.6
 
主要监控以下项目:
 
内存使用情况
 
连接数
 

 
刷新写操作到磁盘
 
每秒执行的查询,插入,删除,更新等操作次数
 
每秒访问的索引次数,每秒命中索引的次数
 
MongoDB产生的总的页面错误数量
 
MongoDB的网络流量状况
 
编写监控脚本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
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章