18.4.5. MongoDB
获取最新模板以及脚本请访问 https://github.com/oscm/zabbix/tree/master/mongodb
创建监控用户
[root@netkiller www.netkiller.cn]# mongo -u admin -p D90YVqwmUATUeFSxfRo14 admin > use admin switched to db admin > db.createUser( { user: "monitor", pwd: "chen", roles: [ "clusterMonitor"] } ) Successfully added user: { "user" : "monitor", "roles" : [ "clusterMonitor" ] } > db.auth("monitor", "netkiller") 1 > exit bye
# echo "db.stats();" | mongo -u monitor -p chen admin MongoDB shell version: 2.6.12 connecting to: test { "db" : "test", "collections" : 0, "objects" : 0, "avgObjSize" : 0, "dataSize" : 0, "storageSize" : 0, "numExtents" : 0, "indexes" : 0, "indexSize" : 0, "fileSize" : 0, "dataFileVersion" : { }, "ok" : 1 } bye [root@iZ62sreab5qZ www.cf88.com]# echo "db.serverStatus()" | mongo -u monitor -p chen admin | more MongoDB shell version: 2.6.12 connecting to: admin { "host" : "iZ62sreab5qZ", "version" : "2.6.12", "process" : "mongod", "pid" : NumberLong(612), "uptime" : 852982, "uptimeMillis" : NumberLong(852982589), "uptimeEstimate" : 845317, "localTime" : ISODate("2016-11-23T07:02:42.899Z"), "asserts" : { "regular" : 0, "warning" : 0, "msg" : 0, "user" : 26, "rollovers" : 0 }, "backgroundFlushing" : { "flushes" : 14216, "total_ms" : 251465, "average_ms" : 17.688871693866066, "last_ms" : 7, "last_finished" : ISODate("2016-11-23T07:02:23.283Z") }, "connections" : { "current" : 16, "available" : 51184, "totalCreated" : NumberLong(566) }, "cursors" : { "note" : "deprecated, use server status metrics", "clientCursors_size" : 0, "totalOpen" : 0, "pinned" : 0, "totalNoTimeout" : 0, "timedOut" : 8 }, "dur" : { "commits" : 30, "journaledMB" : 0, "writeToDataFilesMB" : 0, "compression" : 0, "commitsInWriteLock" : 0, "earlyCommits" : 0, "timeMs" : { "dt" : 3068, "prepLogBuffer" : 0, "writeToJournal" : 0, "writeToDataFiles" : 0, "remapPrivateView" : 0 } }, --More--
cat > /etc/zabbix/zabbix_agentd.d/userparameter_mongodb.conf <<'EOF' ############################################################ # MongoDB - statistics # # Author: Neo Chen <[email protected]> # Website: http://www.netkiller.cn ############################################################ # Discovery # Return Redis statistics UserParameter=mongodb.status[*],/srv/zabbix/libexec/mongodb.sh $1 $2 $3 $4 $5 EOF
安装采集脚本,创建 /srv/zabbix/libexec/mongodb.sh 文件
cat /srv/zabbix/libexec/mongodb.sh #!/bin/bash ################################################## # AUTHOR: Neo <[email protected]> # WEBSITE: http://www.netkiller.cn # Description:zabbix mongodb monitor # Note:Zabbix 3.2 # DateTime: 2016-11-23 ################################################## HOST=localhost PORT=27017 USER=monitor PASS=chen index=$(echo $@ | tr " " ".") status=$(echo "db.serverStatus().${index}" |mongo -u ${USER} -p ${PASS} admin --port ${PORT}|sed -n '3p') #check if the output contains "NumberLong" if [[ "$status" =~ "NumberLong" ]];then echo $status|sed -n 's/NumberLong(//p'|sed -n 's/)//p' else echo $status fi # chmod +x /srv/zabbix/libexec/mongodb.sh # /srv/zabbix/libexec/mongodb.sh version 2.6.12 # systemctl restart zabbix-agent.service
[root@netkiller ~]# zabbix_get -s www.netkiller.cn -k mongodb.status[ok] 1 [root@netkiller ~]# zabbix_get -s www.netkiller.cn -k mongodb.status[version] 2.6.12
测试成功后导入模板
监控内容如下
链接数监控(当前连接数和可用连接数) mongodb current mongodb.status[connections,current] mongodb available mongodb.status[connections,available] 流量监控(每秒请求数,出站流量,入站流量) mongodb mongodb.status[network,numRequests] mongodb mongodb.status[network,bytesOut] mongodb mongodb.status[network,bytesIn] 命令统计(查询,更新,插入,删除......) mongodb query/s mongodb.status[opcounters,query] mongodb update/s mongodb.status[opcounters,update] mongodb insert/s mongodb.status[opcounters,insert] mongodb getmore/s mongodb.status[opcounters,getmore] mongodb delete/s mongodb.status[opcounters,delete] mongodb command/s mongodb.status[opcounters,command] 内存监控 mongodb mem virtual mongodb.status[mem,virtual] mongodb mem resident mongodb.status[mem,resident] mongodb mem mapped mongodb.status[mem,mapped] mongodb mem mappedWithJournal mongodb.status[mem,mappedWithJournal] 复制监控
mongodb repl mongodb.status[repl,ismaster] 锁监控 # zabbix_get -s www.chuangfu24.net -k mongodb.status[locks,admin,timeAcquiringMicros,r]