博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB日志轮转和日志级别
阅读量:2497 次
发布时间:2019-05-11

本文共 2212 字,大约阅读时间需要 7 分钟。

OverView

    MongoDB可使用标准的方法实现日志轮转,即获取到当前日志并开启一个新的。为了实现它,mongod实例通过在 文件名称末尾添加UTC(GMT)时间戳的方式重命名当前的日志文件,然后打开这个新的log文件,关闭之前旧的log   文件,并发送所有新的日志信息到新的log文件中。

Rotation Setps

    MongoDB标准的日志轮转方法有两种,一种是通过日志轮转命令,或者让mongod进程接受到一个SIGUSER1信号,以下具体的实现方法

   1 开启mongod进程,保证appending enabled

      mongod -v --logpath /var/log/mongodb/server1.log --logappend

   2 在终端查看是否有mongo日志文件

      ls /var/log/mongodb/server1.log*

   3 如果是Windows系统,打开mongo shell,进入admin数据库并敲入轮转命令,即

      use admin

      db.runCommand( { logRotate : 1 } )

      如果是Linux系统,则在终端运行 kill -SIGUSR1 <mongod process id>

   4 再次查看结果是否有新的mongo日志文件生成

      ls /var/log/mongodb/server1.log*

     另外一种是登陆admin数据库,执行db.runCommand("logRotate")即可实现日志轮转,默认格式是

-
-
T
-
-

My auto script and crontab

    以下是我用python写的定时脚本,每天产生一个新的log,超过10天的log自行删除,我发现在脚本中写成kill -SIGUSR1 <mongod process id>不会有效果,后来改成kill -USR1 <mongod process id>就可以了。

#!/bin/env python

import sys
import os
import commands
import datetime,time
#get mongo pid
mongo_pid = commands.getoutput("/sbin/pidof mongod")
print mongo_pid
#send Sig to mongo
if mongo_pid != '':
    cmd = "/bin/kill -USR1 %s" %(mongo_pid)
    print cmd
    mongo_rotate = commands.getoutput(cmd)
else:
    print "mongod is not running..."

#clean log which > 10 days

str_now = time.strftime("%Y-%m-%d")
dat_now = time.strptime(str_now,"%Y-%m-%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 in lns.split('\n'):
    ws = ln.split()
    if len(ws) != 2:
        continue
    ws1 = time.strptime(ws[0],"%Y-%m-%d")
    ws2 = datetime.datetime(ws1[0],ws1[1],ws1[2])
    if (array_dat_now - ws2).days > 10:
        v_del = commands.getoutput("/bin/rm -rf /var/log/mongodb//%s" % (ws[1]))

    在root下crontab -e查看定时任务

    0 2 * * * /home/jiangjianjian/mongo_log_rotate.py >/home/jiangjianjian/null 2>&1

verbose&&quiet

     mongodb默认情况下日志文件非常大,每秒都会记录大量的connection等调试信息,这对于我们管理日志和定位        错误有很大影响,需要修改它的默认日志级别。
     mongodb的日志级别在配置文件中的verbose和quiet参数决定。verbose表示会打印debug信息,
范例配置如下
     verbose=true
     vv=true
     注:这里的vv表示debug级别,有vv-vvvvv,v越多则记录的日志信息越详细。
     而如果设置了quiet=true参数,表示安静地输出,即不会再有debug信息,日志中只会打印一些关键的信息,比如        自动故障切换,系统错误等信息,相当于error log。这时需要注释掉verbose参数。范例配置如下:
     #verbose=true
     quiet=true
     

转载地址:http://yybgb.baihongyu.com/

你可能感兴趣的文章
Arcsde报ora-29861: 域索引标记为loading/failed/unusable错误
查看>>
记一次断电恢复ORA-01033错误
查看>>
C#修改JPG图片EXIF信息中的GPS信息
查看>>
从零开始的Docker ELK+Filebeat 6.4.0日志管理
查看>>
How it works(1) winston3源码阅读(A)
查看>>
How it works(2) autocannon源码阅读(A)
查看>>
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>
echarts 为例讲解 uni-app 如何引用 npm 第三方库
查看>>
uni-app跨页面、跨组件通讯
查看>>
springmvc-helloworld(idea)
查看>>
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>
数据结构和算法7-搜索
查看>>
数据结构和算法8-排序
查看>>
windows缺少dll解决办法
查看>>