Zabbix应用八:Zabbix监控MongoDB
利用Zabbix监控MongoDB
一、首先介绍mongodb采集到的数据含义:
1、状态采集命令:
>db.serverStatus();
2、输出内容:
{ "host" : "localhost", "version" : "2.2.6", "process" : "mongod", "pid" : 55123, "uptime" : 18654536, "uptimeMillis" : NumberLong("18654536224"), "uptimeEstimate" : 18407100, "localTime" : ISODate("2017-07-10T08:06:17.628Z"), "locks" : { "." : { "timeLockedMicros" : { "R" : NumberLong(1203), #所有库全局读锁总微秒数 "W" : NumberLong(1607) #所有全库局写锁总微妙数 }, "timeAcquiringMicros" : { "R" : NumberLong(168), #所有库全局读锁的锁等待总微秒数 "W" : NumberLong(41) #所有库全局写锁的锁等待总微秒数 } }, "admin" : { "timeLockedMicros" : { }, "timeAcquiringMicros" : { } }, "local" : { "timeLockedMicros" : { "r" : NumberLong(4118711), "w" : NumberLong(0) }, "timeAcquiringMicros" : { "r" : NumberLong(2191541), "w" : NumberLong(0) } }, "org_center" : { "timeLockedMicros" : { "r" : NumberLong("13835793898"), "w" : NumberLong("20466120642") }, "timeAcquiringMicros" : { "r" : NumberLong(352664878), "w" : NumberLong("29283950076") } }, "org_centr" : { "timeLockedMicros" : { "r" : NumberLong(124236), "w" : NumberLong(180) }, "timeAcquiringMicros" : { "r" : NumberLong(10119), "w" : NumberLong(10) } }, "shopProduct" : { "timeLockedMicros" : { "r" : NumberLong(134997), "w" : NumberLong(0) }, "timeAcquiringMicros" : { "r" : NumberLong(14241), "w" : NumberLong(0) } }, "tb_shop" : { "timeLockedMicros" : { "r" : NumberLong(1405192), "w" : NumberLong(0) }, "timeAcquiringMicros" : { "r" : NumberLong(146122), "w" : NumberLong(0) } }, "test" : { "timeLockedMicros" : { "r" : NumberLong(3090622), "w" : NumberLong(2170) }, "timeAcquiringMicros" : { "r" : NumberLong(414040), "w" : NumberLong(130) } } }, "globalLock" : { "totalTime" : NumberLong("18654536224000"), "lockTime" : NumberLong(1607), "currentQueue" : { "total" : 0, "readers" : 0, "writers" : 0 }, "activeClients" : { "total" : 0, "readers" : 0, "writers" : 0 } }, "mem" : { "bits" : 64, #64位操作系统 "resident" : 238, #共占用屋里内存M "virtual" : 448, #占用虚拟内存 "supported" : true, "mapped" : 256 #映射内存 }, "connections" : { "current" : 16, #当前活跃连接数 "available" : 803 #剩余空闲连接数 }, "extra_info" : { "note" : "fields vary by platform", "heap_usage_bytes" : 30607592, "page_faults" : 200 }, "indexCounters" : { "btree" : { "accesses" : 24067164, #索引被访问次数 "hits" : 24067164, #索引命中量 "misses" : 0, "resets" : 0, "missRatio" : 0 } }, "backgroundFlushing" : { "flushes" : 310905, #数据库刷新写到磁盘的次数 "total_ms" : 214212, #数据库刷新数据到磁盘花费的微秒数 "average_ms" : 0.688995030636368, #执行单次刷新花费的平均微秒数 "last_ms" : 5, "last_finished" : ISODate("2017-07-10T08:05:26.598Z") }, "cursors" : { "totalOpen" : 0, "clientCursors_size" : 0, "timedOut" : 60 }, "network" : { "bytesIn" : 5150258135, #流入数据库总量 "bytesOut" : 10535203727, #从数据库流出总量 "numRequests" : 32203604 #数据库总请求数 }, "opcounters" : { "insert" : 6010564, #总insert数据量 "query" : 7507450, #总query数据量 "update" : 573085, #总update数据量 "delete" : 2563194, #总delete数据量 "getmore" : 308, #游标调用的getMore总次数 "command" : 16077462 #执行命令的总次数 }, "asserts" : { "regular" : 0, "warning" : 0, "msg" : 0, "user" : 37, "rollovers" : 0 }, "writeBacksQueued" : false, "recordStats" : { "accessesNotInMemory" : 0, "pageFaultExceptionsThrown" : 0, "org_center" : { "accessesNotInMemory" : 0, "pageFaultExceptionsThrown" : 0 }, "tb_shop" : { "accessesNotInMemory" : 0, "pageFaultExceptionsThrown" : 0 }, "test" : { "accessesNotInMemory" : 0, "pageFaultExceptionsThrown" : 0 } }, "ok" : 1 }
zabbix监控页面的主要数据开源就是这里。
3、利用zabbix用户自定义监控功能 userparameter 来监控MongoDB:
3.1、修改zabbix_agentd.conf,允许接受自定义参数:
UnsafeUserParameters=1
3.2、定义数据采集命令:
UserParameter=MongoDB.status[*],/bin/echo "db.serverStatus().$1" |/data/mongodb/bin/mongo admin | grep "$2" | awk -F ':' '{print $$2}' | awk -F ',' '{print $$1}'
注意:不同环境,请注意主机ip和端口号等。
4、zabbix监控页面新建监控模版、添加监控项、生成图形:
创建模版:Template App MongoDB(已经手动创建完毕,并创建监控项,需要者可自行下载)
由于监控项众多,本例只贴出其中一个监控项的配置,如下图:
需要注意的是 键值 项,需和 UserParameter 中定义的格式一致。
5、模版创建完成后,套用到被监控的主机即可。
最终效果如下图: