部署运维

系统运维(一)日志文件管理工具Logrotate

2019-11-15  本文已影响0人  进击的阿黑

场景

对于业务系统,每天都会输出大量的日志,并且增长极快,久而久之在有限的容量内总会消耗完服务器的磁盘空间;

当我们遇到故障需要排查的时候,日志往往是第一选择,然而当日志日渐庞大的时候,排查成问题,空间也成问题;

线上埋点系统出现问题,排查发现硬盘被日志撑爆了。

。。。

logrotate帮我们解决了日志方面的繁琐问题,

简介

logrotate旨在简化对生成大量日志文件的系统的管理。它允许自动旋转,压缩,删除和邮寄日志文件。每个日志文件可以每天,每周,每月或当它变得太大时处理。通常,logrotate作为每天cron任务运行。

安装

主流的Linux系统一般都会自带logrotate包,如果没有,则使用以下命令安装

$ yum install logrotate crontabs 
$ logrotate -v
logrotate 3.8.6 - Copyright (C) 1995-2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License

Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail command] [-s|--state statefile]
        [-v|--verbose] [-l|--log STRING] [--version] [-?|--help] [--usage] [OPTION...] <configfile>

主配置文件

logrotate的默认配置文件放在 /etc/logrotate.conf,我们无需对它进行操作

自定义配置文件

logrotate有一个针对日志的自定义配置文件夹 /etc/logrotate.d/,可以看到系统已经默认配置了syslog、yum等日志管理配置

$ ll /etc/logrotate.d/
-rw-r--r-- 1 root root  76 Aug  2  2018 bootlog
-rw-r--r-- 1 root root 160 Sep 15  2017 chrony
-rw-r--r-- 1 root root 408 Aug  2  2018 psacct
-rw-r--r-- 1 root root 224 Aug  9  2018 syslog
-rw-r--r-- 1 root root 100 Aug 21  2018 yum

执行文件

logrotate的执行文件放在 /usr/sbin/logrotate

详细配置说明

/var/log/logback.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    size 30k
    yearly
    create 0600 root root
    postrotate
        # 输入指定的命令
    endscript
}

更多配置查看官方说明

运行

运行命令

运行方式

问题处理

  1. 强制模式不起作用

    删除记录状态的文件

    $ rm /var/lib/logrotate/logrotate.status
    
  2. 日志文件为空无法执行

    那就让它不为空呗

  3. 使用nohup进行日志输出,接着日志切割后,原日志大小不变

    改变nohup输出方式:nohup xxx.sh >> nohup.out &,要有两个>

大概就是这样,让我们尝试接入到我们的系统内吧!


Ending......

请关注微信公众号:进击的阿黑,谢谢。

上一篇 下一篇

猜你喜欢

热点阅读