在logrotate之后,我使用mtools来过滤慢速查询,并通过脚本将它们插入slowqueries集合中。
# rotate log
mongo admin -eval "db.runCommand({logRotate:1})"
# insert slow queries in database
mlogfilter /var/log/mongodb/mongod.log.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T* --slow --json | mongoimport -d pllogs -c slowqueries
# compress roatated logs
for f in /var/log/mongodb/mongod.log.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T*;
do
echo "$f"
7za a "$f.z" "$f"
wait
rm -f "$f"
done
# remove files older than 20 days
find /var/log/mongodb/'*.z' -ctime +20 | xargs rm -rf
当我手动运行脚本时脚本工作正常,但是当我使用crontab时,压缩日志就在那里,但我无法在数据库中找到慢查询。