linux syslog + cron 构建log服务器

 

1. log生成原理

 采用系统的syslog服务,logrotate服务与cron功能,完成log生成,备份。

 首先,由syslog确定log记录需要写入哪个log文件。接着,由logrotate进行每天的log备份,生成log+时间戳的log文件,这样就生成了每天的log文件。logrotate的运行,由cron进行控制,就可以保证每天的运行。

2. syslog配置

 

2.1. 路径

 /etc/syslog.conf

2.2. 格式

 可以参考man [5] syslog.conf。这里是对syslog.conf的简单介绍。

syslog.conf文件行的基本语法是这样的(可参考上图):

[消息类型(规则)]     [处理方案(日记文件)]

两者之间必须用一个或者多个Tab字符分开。消息类型是由”消息来源“(facility)和”紧急程度“(priority)构成,中间点号连接。通配符*表示一切消息来源,或者所有紧急程度。

 消息来源与紧急程度

紧急程度包括指定的紧急程度与指定紧急程度以上的紧急程度。例如: 指定user.info的消息类型,消息来源即为user,紧急程度包括info,notice,warning, err, alert, emerg

在syslog函数设置第一个参数为LOG_USER | LOG_INFO,即可将日志写入user.info对应的处理方案(日记文件)。

 处理方案(日记文件)

日志的路径目录必须是存在的,日志文件可以是不存在的。例如:

日志文件路径为/tmp/logdir/log,其中/tmp/logdir/存在,而log文件不存在,则系统会在/tmp/logdir下创建log文件

若日志文件路径为/tmp/nodir/log, 其中/tmp/nodir/不存在, 则系统无法创建   log 文件

2.3. 启动syslog

 /etc/init.d/syslog start/stop/restart

 配置完/etc/syslog.conf后需要重启syslog服务

3. logrotate配置

 

3.1. 创建一个自己使用的logrotate配置文件

 在/etc/logrotate.d/目录下创建一个任意名字的文件,例如example,在其中写入规则

 参数格式

n  /full/path/to/file {

option(s)

}

 /full/path/to/file

n 确保这个log文件的路径是存在的,正确的

 options(s),具体请参看man logrotate

n daily 指定转储周期为每天

n rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份

n copytruncate 用于还在打开中的日志文件,把当前日志备份并截断

n dateext  切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号。此处附加的时间是执行logrotate时的日期

n olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统。注意:该目录必须是存在的目录

n prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

n postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

3.2. 示例

prerotate 命令指定转储以前的动作/usr/bin/chattr -a 去掉/var/log/message文件的“只追加”属性 endscript 结束 prerotate 部分的脚本postrotate 指定转储后的动作

/usr/bin/chattr +a /var/log/message

重新为 /var/log/messages 文件指定“只追加”属性,这样防治程序员或用户覆盖此文件。

最后的 endscript 用于结束 postrotate 部分的脚本

4. crontab文件

 在/etc/crontab中,/etc/cron.daily目录下,有个logrotate的脚本,系统每天会执行/etc/cron.daily内的脚本,这样只需我们按上述/etc/logrotate.d/example中的配置,即可保证每天日志的生成。

 若我们对/etc/cron.daily的执行时间不满意,而我们又 不愿修改其时间,我们可以将example文件写在别处(不放在/etc/logrotate.d目录下),例如:/tmp/log/example。之后在crontab中添加:

23 59 * * * root /usr/sbin/logrotate –f /tmp/log/example

但不是很推荐这样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值