前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日一技:使用 Linux 自带的 logrotate 管理你的所有日志

一日一技:使用 Linux 自带的 logrotate 管理你的所有日志

作者头像
青南
发布2019-10-28 17:29:32
1.4K0
发布2019-10-28 17:29:32
举报
文章被收录于专栏:未闻Code未闻Code

摄影:产品经理

吃饭:kingname & 产品经理

我们在开发的过程中,会创建非常多的日志,对日志进行 rotate 是一个基本要求。

所谓的rotate,可以理解为对日志按照一定的规则进行切分。例如,每天晚上0点生成一个新的日志文件,并把老的文件归档。又或者每个日志文件超过多少 MB 以后就自动切分,并把老的内容单独存档或者压缩。存档以后的日志文件保存多少个。超过数量以后先删除老日志再删除新日志。

如果我们使用的是 Python,那么我们可以使用自带的logging模块或者第三方的logoru来写日志。但如果我们使用像是 MongoDB这种第三方的软件,那么要对日志进行 rotate 就非常麻烦了。如果不加以管理,MongoDB 的日志很容易就达到几十GB。

还有其他软件,他们的日志散落在系统的各个位置,我们应该如何替他们 rotate 呢?

如果你的系统是 Linux,那么主流发行版一般都会自带一个软件,叫做logrotate,通过简单的配置,就能让它帮你管理系统中各个地方的日志。

我们以 MongoDB 为例来进行说明。

MongoDB 的日志默认放在/var/log/mongodb文件夹中,如下图所示:

如果不干涉,那么所有的日志内容会无限制追加到这一个mongod.log文件中。并且,如果你的 MongoDB 正在运行,即使你使用rm命令删除了这个文件,它占用的空间也不会释放。

但使用logrotate来管理这个文件以后,它能通过truncate操作清空这个文件,从而实现释放空间的目的。

logrotate的配置文件地址有两个,第一个主配置文件地址为/etc/logrotate.conf,其内容如下:

另一个专门用于存放配置文件的地址为/etc/logrotate.d/,它里面的每一个文件都是一个配置文件,如下图所示:

我们要使用logrotate来管理 MongoDB,所以就在/etc/logrotate.d/文件夹中创建一个mongodb文件(文件名可以任意取),内容如下:

代码语言:javascript
复制
/var/log/mongodb/*.log {
    rotate 5
    copytruncate
    missingok
    compress
    maxsize 200M
    daily
}

如下图所示:

这个配置文件的意义如下:

*第一行用于指定 MongoDB 日志文件的地址为/var/log/mongodb/文件夹下面所有以.log结尾的文件。

  • rotate 5表示保留5份日志文件
  • copytruncate 表示,日志满足要求以后,先复制一份,然后把原来的日志文件清空
  • missingok 表示如果这个文件夹下面为空,也没关系,自动忽略
  • compress 表示要把日志进行压缩
  • maxsize 200M 表示每个日志最多200MB,达到200MB 以后,就进行 rotate。
  • daily 表示每天检查一次

保存这个文件,logrotate将会每天自动检查 MongoDB 的日志文件,如果发现它大小达到了200MB,那么首先会把这个日志复制出来一份(此时将会占用400MB 空间),然后把原来的日志文件内容清空(此时恢复200MB 空间占用)。被复制出来的日志文件会被压缩,并存放在当前文件夹中。当日志数量达到5个的时候,第六个日志文件生成,最开始压缩的那个文件被删除。从而保证 MongoDB 的日志及其备份总共占用空间不超过1GB。

logrotate非常强大,还有非常多的配置参数用于实现各种日志管理的操作,大家可以执行命令man logrotate查看它的帮助文档。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 未闻Code 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档