MongoDB日志切换(旋转日志文件)实战

  

MongoDB日志切换(旋转日志文件)实战

,

<强> 1。在mongo shell下,执行logRotate命令:,,

use  admin ,,,   db.runCommand ({logRotate: 1})


需要在蒙戈,mongod,配置服务器运行。


该方式的变种:

)在unix shell下运行:,

mongo  localhost/admin  -eval “dbo.runCommand {logRotate: 1} "

,

b) bash脚本:,
 db.getMongo () .getDB (“admin”) .runCommand ({logRotate: 1}) 


创建脚本logRotate。承宪:,,

# !/bin/sh ,,,   #,Clear  old  logs ,,,   rm /var/log/mongodb/mongod.log。*,,,,   #,Rotate  logs ,,,   mongo  logRotate.js

,

d) logRotate。sh//写到计划任务crontab即可(需要期待软件包),

# !/usr/bin/expect  -f ,,,   spawn /usr/地方/mongodb/bin/mongo  admin  -udev  -ptest  -quiet ,,,   expect “在”,,,,   send  db.runCommand (“logRotate”),,,,   send “\ r \ n”,,,,   expect “在”,,,,   send “退出”

,

<强> 2。使用SIGUSR1信号:,,

kill  -SIGUSR1  & lt; mongod  process  id>,,,,   find /var/log/mongodb/mongodb.log。*, -mtime  + 7,删除


该方法的变种:

)用python写的定时脚本,每天产生一个新的日志,超过7天的日志自行删除。

# !/bin/env  python   import 系统   import 操作系统   import 命令   import  datetime,时间   # get  mongo  pid   时间=mongo_pid  commands.getoutput (“/sbin/pidof  mongod”)   print  mongo_pid   # send  Sig 用mongo   if  mongo_pid  !=,”:   cmd =, "/bin/kill  -USR1  % s”, % (mongo_pid)   print  cmd   时间=mongo_rotate  commands.getoutput (cmd)   其他:   print “mongod  is  not 运行……”   # clean  log  which 祝辞,7天   Y=str_now  time.strftime (“% - % - % d”)   时间=dat_now  time.strptime (str_now“Y % - % - % d”)   时间=array_dat_now  datetime.datetime (dat_now [0], dat_now [1], dat_now [2])   lns =, commands.getoutput (“/bin/ls ——full-time /var/log/mongodb/| awk “{print  6美元,9美元}’”)   for  ln  lns.split拷贝(“\ n”):   时间=ws  ln.split ()   if  len (ws), !=, 2:   继续   时间=ws1  time.strptime (ws [0],“Y % - % - % d”)   时间=ws2  datetime.datetime (ws1 [0], ws1 [1], ws1 [2])   if  (array_dat_now 作用;ws2) .days 祝辞,7:   v_del =, commands.getoutput (“/bin/rm  -rf /var/log/mongodb//% s”, %, (ws [1]))

,

在根下crontab - e编辑定时任务

0,2,*,*,*,/根/mongo_log_rotate.py 祝辞/根/null  2祝辞,1

,

<强> 3。日志管理工具logrotate

自动化的最好方式是使用logrotate,其中copytruncate参数能更好工作。

拷贝以下代码到/etc/logrotate。d/mongodb文件中,确保脚本中的路径和文件名正确。

#,vi /etc/logrotate.d/mongodb/var/log/mongodb/* .log  {   每天   rotate  7   压缩   dateext   missingok   notifempty   sharedscripts   copytruncate   postrotate/bin/kill  -SIGUSR1  cat /var/lib/mongo/mongod.lock  2祝辞,/dev/null”, 2祝辞,/dev/null  | |,真的   endscript   }   #,logrotate  -f /etc/logrotate.d/mongodb

,

<强> 4。Mongodb bug ,,
mongodb稳定性差强人意。在切换过程中也会导致mongodb进程终止。,,
具体内容可以查看下mongodb虫系统:服务器- 4739,服务器- 3339。

MongoDB日志切换(旋转日志文件)实战