zabbix监控mongodb
1、配置zabbix自定义用户key
vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=MongoDB.Status[*],/bin/echo "db.serverStatus().$1" | /usr/local/mongodb/bin/mongo admin | grep "\<$2\>"| awk -F : '{print $$2}'|awk -F , '{print $$1}'
上面是通过db.serverStatus()来获取服务器状态
其中$1表示第一个参数
grep $2的时候要加上锚地符 "\<" 和 "\>",因为有的对象名可能部分相同
重启zabbix客户端
2、使用自定义的命令测试获取的结果
[root@mongodb bin]# echo "db.serverStatus().opcounters" | mongo admin
MongoDB shell version: 2.6.3
connecting to: admin
{
"insert" : 6,
"query" : 138,
"update" : 1,
"delete" : 1,
"getmore" : 0,
"command" : 9884
}
bye
3、测试用户自定义key是否生效
./zabbix_get -s 127.0.0.1 -k MongoDB.Status[opcounters,query]
4、在zabbix上添加监控
新建一个模板
添加监控项
监控command,收集所有的命令数,包括插入,删除,查询,更新等所有命令,这里每过10秒取一次值
insert、query、update、delete、getmore、command等都用相同的设置
监控内存,virtual是虚拟内存,resident是无论内存
监控网络,bytesIN是进流量,bytesOut是出流量,numRequests是请求数
监控连接数,available是可用连接数、current是当前连接数
监控刷写数据到硬盘的次数
定义mapped的项目,单位是MB
5、监控locks项目,由于部分项目是多维数组,不能使用之前自定义的用户key获取,需要额外创建专门的key
[root@mongodb bin]# echo "db.serverStatus().locks" | mongo admin
MongoDB shell version: 2.6.3
connecting to: admin
{
"." : {
"timeLockedMicros" : {
"R" : NumberLong(572504),
"W" : NumberLong(480751)
},
"timeAcquiringMicros" : {
"R" : NumberLong(480946),
"W" : NumberLong(70198)
}
},
"admin" : {
"timeLockedMicros" : {
"r" : NumberLong(142364),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(15018),
"w" : NumberLong(0)
}
},
"local" : {
"timeLockedMicros" : {
"r" : NumberLong(271651),
"w" : NumberLong(271)
},
"timeAcquiringMicros" : {
"r" : NumberLong(120699),
"w" : NumberLong(5)
}
},
"test" : {
"timeLockedMicros" : {
"r" : NumberLong(93725),
"w" : NumberLong(114935)
},
"timeAcquiringMicros" : {
"r" : NumberLong(67411),
"w" : NumberLong(41)
}
}
}
bye
创建自定义key
UserParameter=MongoDB.Status.locks[*],/bin/echo "db.serverStatus().locks.$1.$2.$3" | /usr/local/mongodb/bin/mongo admin |/usr/bin/tail -n 2 | /usr/bin/head -n 1 | awk -F '(' '{print $$2}'|awk -F ')' '{print $$1}'