MongoDB 有 db.serverStatus() 命令, 可以查看 MongoDB 的运行状态, 那么 zabbix 就可以调用这个命令实现 MongoDB 的监控.
一, db.serverStatus() 命令的使用
注: 只有超级管理员账号才有权限使用此命令
1, 查看 MongoDB 服务状态
echo "db.serverStatus()" | mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin'
2, 查看 MongoDB 使用内存情况
echo "db.serverStatus().mem" | mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin'
3, 查看 MongoDB 连接数
echo "db.serverStatus().connections" | mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin'
二, 创建监控配置文件
1, 编写 MongoDB 监控配置文件
- VIM /etc/zabbix/zabbix_agentd.d/MongoDB.conf
- UserParameter=MongoDB.status[*],/bin/echo "db.serverStatus().$1" |/data/MongoDB/bin/mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin' | grep "$2" | awk -F ':' '{print $$2}' | awk -F ',' '{print $$1}'
- UserParameter=MongoDB.ok,/bin/echo "db.serverStatus().ok" | /data/MongoDB/bin/mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin' | sed -n '5p'
- UserParameter=MongoDB.connections[*],/bin/echo "db.serverStatus().connections.$1" | /data/MongoDB/bin/mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin' | sed -n '5p'
注: 使用超级管理员账号
2, 重启 zabbix-agent
systemctl restart zabbix-agent
3, 在 zabbix server 端测试
- /data/zabbix/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k "MongoDB.status[mem,virtual]"
- /data/zabbix/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k "MongoDB.connections[available]"
- /data/zabbix/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k "MongoDB.ok"
三, 创建监控模板
1, 添加监控模板
2, 创建应用集
注: 根据自己要监控的项创建应用集
3, 创建监控项
注: 请根据自己要监控的子项创建, 将要监控的子项一一创建好
4, 创建触发器
5, 创建监控图形
四, 主机添加监控模板
五, 监控效果图
来源: http://www.bubuko.com/infodetail-3324559.html