您的位置:首页 > 运维架构 > Linux

Linux系统使用logrotate进行日志备份

2015-03-28 22:37 926 查看
Linux系统上日志文件很多很多,系统日志message mail cron 等等以及应用程序的日志和访问日志,在大量的访问下,这些日志文件会飞速增长,占用大量私盘空间,同时消耗IO,目前线上使用shell脚本对nginx和tomcat的access_log以及catalina.out文件通过crontab进行日志分割。

今天偶然想起logrotate,小试了下,还是不错的,记录下。。。
查看下log目录下的日志,可以看到关于crontab的日志被分割了,我们没有定义这个,是什么实现的呢?就是logrotate咯。
ll /var/log/
-rw-------  1 root  root        0 2月  22 03:21 cron-20150301
-rw-------  1 root  root        0 3月   1 03:20 cron-20150308
-rw-------  1 root  root        0 3月   8 03:19 cron-20150315
-rw-------  1 root  root        0 3月  15 03:35 cron-20150322
-rw-------  1 root  root     5740 3月  28 22:10 cron-20150328
看下logrotate配置文件



配置文件非常简单,也通俗易懂,一会在说下每个参数的意思,可以看到include /etc/logrotate.d,看看这个目录下有个咩?
root@qa-qding-qdingnet. /var/log# ll /etc/logrotate.d/
总用量 40
-rw-r--r--. 1 root root  103 10月  3 2012 dracut
-rw-r--r--  1 root root  185 8月  15 2014 httpd
-rw-r--r--. 1 root root  173 6月  22 2012 iscsiuiolog
-rw-r--r--  1 root root  112 3月  28 22:05 market
-rw-r-----  1 root named 170 10月 15 21:28 named
-rw-r--r--  1 root root  136 8月  23 2010 ppp
-rwxr-xr-x  1 root root  452 11月  8 03:43 salt
-rw-r--r--  1 root root  210 12月 10 18:05 syslog
-rw-r--r--  1 root root  100 2月   4 2013 wpa_supplicant
-rw-r--r--  1 root root   87 10月 16 23:15 yum
关于crontab的log是写在syslog里得,所以我们继续看下syslog的配置文件吧


我们都知道syslog管理者cron mail message secure这些日志
貌似刚才logrotate的主配置文件截图没截完整 哈哈,那说一个实力吧 一个tomcat的日志分割,一个nginx的日志分割
vim /etc/etc/logrotate.d/tomcat
/data/market_tomcat/logs/catalina.out {   #定义日志的位置,当然也可以写多个就像syslog那样子
rotate 30                             #保留归档30天~不解释,你懂得 就是分割之后保留一个月
daily                                 #每天分割
copytruncate                          #表示此方法采用的是先拷贝再清空的方式
missingok                             #表示如果找不到log文件也没OK
notifempty                            #表示如果log文件是空的,就不进行rotate
}
保存退出,我们执行下/usr/sbin/logrotate -f /etc/logrotate.conf在看下tomcat目录下的日志文件
root@Py /data/market_tomcat/logs# ll catalina.out-20150328
-rw-r--r-- 1 root root 233079086 3月  28 22:05 catalina.out-20150328
nginx的例子:
/data/logs/qa.qding.qdingnet_accesslog {
daily
missingok
rotate 5
notifempty
sharedscripts
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
无非就是加了一个shell命令,重启nginx滴。你懂得

参数说明
参数 功能
  compress 通过gzip 压缩转储以后的日志
  nocompress 不需要压缩时,用这个参数
  copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
  nocopytruncate 备份日志文件但是不截断
  create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
  nocreate 不建立新的日志文件
  delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
  nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
  errors address 专储时的错误信息发送到指定的Email 地址
  ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
  notifempty 如果是空文件的话,不转储
  mail address 把转储的日志文件发送到指定的E-mail 地址
  nomail 转储时不发送日志文件
  olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
  noolddir 转储后的日志文件和当前日志文件放在同一个目录下
  prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
  postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
  daily 指定转储周期为每天
  weekly 指定转储周期为每周
  monthly 指定转储周期为每月
  rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
  tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
  size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

哦对了。我们可以看下/etc/cron.daily/logrotate脚本, 这个每天会主动帮忙进行日志的备份
本文出自 “秋小秋” 博客,请务必保留此出处http://heygirl32895.blog.51cto.com/7623150/1626043
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: