syslog-ng详解——日志备份

目录
  1. logrotate开源软件
    1. logrotate配置文件
    2. logrotate源码获取
  2. syslog-ng-ctl
  3. 使用logrotate对syslog-ng进行日志备份

logrotate开源软件

logrotate为日志备份开源软件,其开源license为GPL。在Linux系统下,一般都默认安装好,配合syslog使用,可以使用man logrotate查看帮助信息:

NAME
   logrotate - rotates, compresses, and mails system logs

SYNOPSIS
   logrotate [-dv] [-f|--force] [-s|--state file] config_file ..

logrotate使用的主要在于掌握其配置文件语法,命令中常用选项为-f,表示强制执行备份动作(忽略触发备份的条件)

logrotate配置文件

一个典型示例配置文件如下:

# sample logrotate configuration file
   compress

   /var/log/messages {
          prerotate
                  sh  prerotate.sh #"execute prerotate script"
          endscript
          compress #compress the log
          create mode owner group #specify the log's owner and file mode
       rotate 5  #max rotate count
       size 100k #rotate begin when the file size excess 100k
       postrotate
           sh  postrotate.sh #"execute prerotate script"
       endscript
   }

其中,prerotate和postrotate用于指定当触发备份时执行的动作(相当于初始化和退出清理动作);
更多的选项可以参考man

logrotate源码获取

可以从Logrotate-3.11.0下载,依赖popt
logrotate的源码不多,也比较容易看懂,有兴趣的可以自行了解,一般在需要增加另外的配置选项时才会去修改源码。

syslog-ng-ctl

syslog-ng-ctl是和syslog-ng配套的软件,其源码也在syslog-ng源码包中,其使用unix-socket和syslog-ng进行通信,用于控制syslog-ng的一些行为,比如重新加载配置文件(syslog-ng-ctl reload,适用于在配置文件发生变化时,通知syslog-ng重新解析配置文件并用新的配置运行)等,具体可以通过syslog-ng-ctl -h查看。

使用logrotate对syslog-ng进行日志备份

有了logrotate和syslog-ng-ctl工具,下面说说如何对syslog-ng进行日志备份:
1、 写个小程序(类似cron定时任务的),定时执行下logrotate
其中logrotate配置中可以使用文件大小或者时间条件,当日志满足条件的时候触发备份;
记得在logrotate配置文件(logrotate.conf)中的加上

postrotate
    syslog-ng-ctl reload
endscript

让syslog-ng重新加载下配置。这是因为当触发日志备份时,syslog-ng的输出文件被移除了,需要重新reload下,syslog-ng才会重新生成输出文件。

本站总访问量