? ? ?前言:前面我們安裝了Zabbix Server和Zabbix Agent,可以監(jiān)測到一些服務(wù)器性能數(shù)據(jù)∝孕澹現(xiàn)在需要監(jiān)控mongodb的狀態(tài)以及配置報警事件囤官。
1.db.serverStatus()命令的使用
注:只有超級管理員賬號才有權(quán)限使用以下命令
1.1查看mongodb服務(wù)狀態(tài)
echo "db.serverStatus().ok" | mongo --port 27017 -u account -p password --authenticationDatabase admin
1.2 查看mongodb使用內(nèi)存情況
echo "db.serverStatus().mem" | mongo --port 27017 -u account -p password --authenticationDatabase admin
1.3查看mongodb連接數(shù)
echo "db.serverStatus().connections" | mongo --port 27017 -u account -p password --authenticationDatabase admin
1.4查看mongodb各種操作數(shù)量
echo "db.serverStatus().opcounters" | mongo --port 27017 -u account -p password --authenticationDatabase admin
2.創(chuàng)建監(jiān)控配置文件
2.1?編寫mongodb監(jiān)控配置文件
vim /etc/zabbix/zabbix_agentd.d/mongodb.conf
加入以下配置:
UserParameter=MongoDB.ok,/bin/echo "db.serverStatus().ok.$1" | /usr/bin/mongo --port 27017 -u account -p password --authenticationDatabase admin | sed -n '4p'
UserParameter=MongoDB.mem[*],/bin/echo "db.serverStatus().mem.$1" | /usr/bin/mongo --port 27017 -u account -p password --authenticationDatabase admin | sed -n '4p'
UserParameter=MongoDB.connections[*],/bin/echo "db.serverStatus().connections.$1" | /usr/bin/mongo --port 27017 -u account -p password --authenticationDatabase admin | sed -n '4p'
UserParameter=MongoDB.opcounters[*],/bin/echo "db.serverStatus().opcounters.$1" | /usr/bin/mongo --port 27017 -u account -p password --authenticationDatabase admin | sed -n '4p'
2.2?重啟zabbix-agent
systemctl restart zabbix-agent
2.3?在zabbix server端測試
此時可能會出現(xiàn) 報錯(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)需要在zabbix_agentd端執(zhí)行命令
chmod +s /bin/netstat
3.創(chuàng)建監(jiān)控模板
3.1添加模板
3.2?創(chuàng)建應(yīng)用集
3.3?創(chuàng)建監(jiān)控項
鍵值:
MongoDB.ok? ?
MongoDB.connections[available]
MongoDB.connections[current]
MongoDB.mem[resident]
MongoDB.mem[virtual]
MongoDB.opcounters[command]
MongoDB.opcounters[delete]
MongoDB.opcounters[getmore]
MongoDB.opcounters[insert]
MongoDB.opcounters[query]
MongoDB.opcounters[update]
3.4 創(chuàng)建觸發(fā)器
當(dāng)MongoDB.ok值為0的時候觸發(fā)報警
3.5 創(chuàng)建動作
選擇剛剛創(chuàng)建的模板里的觸發(fā)器
報警通知有很多種方式萌焰,也有第三方集成zabbix報警通知(要收費)。結(jié)合產(chǎn)品實際情況陕见,采用觸發(fā)后執(zhí)行curl命令,請求后臺系統(tǒng)地址味抖,后臺系統(tǒng)完成APP通知评甜,郵件發(fā)送及短信通知等。
恢復(fù)操作可以選擇在當(dāng)前主機上執(zhí)行mongo啟動命令
3.6?創(chuàng)建監(jiān)控圖形
選擇剛才創(chuàng)建的模板仔涩,添加監(jiān)控項忍坷。
4. 主機添加監(jiān)控模板
在被監(jiān)控的主機里添加模板,選擇模板后,一定要點擊添加佩研。
5. 監(jiān)控效果圖
6. mongo慢查詢?nèi)罩颈O(jiān)控
6.1 進入mongo柑肴,使用db.getProfilingStatus()命令可以查看慢查詢級別設(shè)置
我這里設(shè)置了大于50ms為慢查詢,可以通過db.setProfilingLevel(was,slowms)命令進行設(shè)置
was級別可以取0旬薯,1嘉抒,2 三個值,他們表示的意義如下:
0 – 不開啟
1 – 記錄慢命令 (默認為>100ms)
2 – 記錄所有命令
6.2?添加監(jiān)控項袍暴,一定要選Zabbix客戶端(主動式)
其中/var/log/mongodb/mongod.log為mongodb的日志路徑些侍,op_query為查找的關(guān)鍵字。