MongoDB慢sql统计

为了防止mongodb的部分垃圾sql拖慢数据库,采集慢sql还是很有必要的。

 官方文档有些可供参考: https://docs.mongodb.com/manual/reference/method/db.currentOp/

cat /root/scripts/monit_mongo_slowlog.sh 

#!/bin/bash
# 检查mongodb上查询执行超过2s的操作,并发送邮件
# 官方文档 https://docs.mongodb.com/manual/reference/method/db.currentOp/

source /etc/profile

echo 'db.currentOp( { "active" : true, "secs_running" : { "$gte" : 2 } ,"op" : { "$in" : [ "insert", "update", "remove","query" ] } , "ns" : /^db1|db2|db3|db4\./ } )' | mongo 127.0.0.1:27017/admin -uroot -p123456 > /root/mongo_slowlog

[ `wc -l /root/mongo_slowlog | awk '{print $1}' ` -eq 4 ] && exit || cat /root/mongo_slowlog | mailx -v -s "$(hostname -s) 出现超过2s的慢查" [email protected]

然后,可以添加一个每2分钟一次的cronjob

*/2 * * * * sh /root/scripts/monit_mongo_slowlog.sh >/dev/null 2>&1

捕获到的慢sql 会自动通过邮件发送出来,类似如下:

猜你喜欢

转载自www.cnblogs.com/lirulei90/p/10405252.html