18.4.5. MongoDB
For the latest templates and scripts, please visit https://github.com/oscm/zabbix/tree/master/mongodb
Create monitoring user
[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
Install the acquisition script and create the /srv/zabbix/libexec/mongodb.sh file
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
Import the template after the test is successful
The monitoring content is as follows
Link count monitoring (current and available connections) mongodb current mongodb.status[connections,current] mongodb available mongodb.status[connections,available] Traffic monitoring (requests per second, outbound traffic, inbound traffic) mongodb mongodb.status[network,numRequests] mongodb mongodb.status[network,bytesOut] mongodb mongodb.status[network,bytesIn] Command statistics (query, update, insert, delete...) 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] memory monitoring 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] Replication monitoring
mongodb repl mongodb.status[repl,ismaster] lock monitoring # zabbix_get -s www.chuangfu24.net -k mongodb.status[locks,admin,timeAcquiringMicros,r]