ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用logrotate 管理Linux日誌檔

使用logrotate 管理Linux日誌檔

原创 Linux操作系统 作者:tolywang 时间:2005-08-17 00:00:00 0 删除 编辑

使用logrotate 管理Linux日誌檔

编辑整理:王琦

2005/08/15

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件logrotate 还可以用来备份日志文件。 那么日志文件是如何管理及如何实现轮换的呢


Linux 的系统日志一般被记录在/var/log/ 目录下 。日志纪录配置文档为 /etc/syslog.conf .

/var/log/ 目录:

./var/log 记录了几乎所有的log , 但是没有记录ftp log , 我们可以通过 /etc/ftpaccess 设置及修改来达到这个目的

boot.log 启动信息

cron 纪录排程执行的log .

/var/log/messages messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

/var/log/XFree86.0.log 这个日志记录的是 Xfree86 Xwindows 服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。

/var/log/secure 纪录登陆的ip, 时间,登陆方式等

查看日志的工具

dmesg 使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。 dmesg | more 上面的命令将以分页的方式显示引导信息。 tail 有时,当某些行为发生时,您会希望密切关注一个日志文件。Tail 命令设计用于显示文本文件的最后几行。使用 -f 开关,当日志增加新的内容时,tail 将继续显示新的输出。 tail -f /var/log/messages

/etc/syslog.conf 日志配置文件内容

其中记录的内容,注意 # 后面的解释

# Log all kernel messages to the console. (纪录所有的内核信息到字符设备)

# Logging much else clutters up the screen.

#kern.* /dev/console

# Log anything (except mail) of level info or higher. (纪录除了mail信息之外的所有log)

# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access. (纪录受到限制的访问)

authpriv.* /var/log/secure

# Log all the mail messages in one place.

mail.* /var/log/maillog

# Log cron stuff (纪录cron排程执行的log)

cron.* /var/log/cron

# Everybody gets emergency messages

*.emerg *

# Save news errors of level crit and higher in a special file. (在一个专门的文件中保存)

uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log (记录启动信息)

local7.* /var/log/boot.log

二. Linux 的系统日志一般内容

日志文件记录例子(messages为例)

以下log messages 是从目前运行的SFC系统中摘录下来的 messages, messages.1, messages.2 , messages.3 , messages.4 ,纪录所有Linux系统相关变化及状态,用户登入信息等

[root@dmdii-node2 log]# pwd

/var/log

[root@dmdii-node2 log]#

[root@dmdii-node2 log]# vi messages.1

messages.1 文件内容

Aug 7 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

......

Aug 14 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.2 文件内容

Jul 31 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Aug 7 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.3 文件内容

Jul 24 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Jul 31 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.4文件内容

Jul 17 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Jul 24 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages 文件内容

Aug 14 04:03:02 dmdii-node1 syslogd 1.4.1: restart.

Aug 15 08:01:42 dmdii-node1 login(pam_unix)[7840]: session opened for user oracle by (uid=0)

Aug 15 08:01:42 dmdii-node1 -- oracle[7840]: LOGIN ON pts/0 BY oracle FROM 10.134.48.86

Aug 15 08:17:06 dmdii-node1 su(pam_unix)[8024]: session opened for user root by oracle(uid=500)

Aug 15 08:18:42 dmdii-node1 login(pam_unix)[8086]: session opened for user oracle by (uid=0)

大家通过观察上面每个日志最开始的一句和最后的一句的时间差, 注意到日志纪录是轮换的,而且是有规律的轮换 (这里是weekly轮换,即达到一周时间的messages文件中的log会转储到messges.1 或其他messages.2,…. 等文件中) syslogd 1.4.1: restart 表示重新初始化系统日志守护程序 syslogd

三. Logrotate 的配置

Logrotate顾名思义就是 log rotate , 即日志的轮换 LogrotateLinux系统自身带的一个日志轮循程序,它的执行程序所在的目录是/usr/sbin/logrotate ,是专门对各种系统日志(syslogdmail)进行轮循的程序。该程序是由运行程序的服务crond来每天凌晨4:02运行的(可以回过头看看上面二中的一些日志的开始发生时间都是04:03, 抱歉,这里我们在深圳的测试server比实际时间早了点,^_^) 可以在/etc/cron.daily目录下可以看到logrotate文件

Logrotate 用来将旧的日志文件删除,并创建新的日志文件, 叫做转储

我们可以根据日志文件大小,也可以根据天数来转储(比如上面的例子是一周转储一次) logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail

logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:参数 功能
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).

四. 默认Logrotate 的配置
logrotate
缺省的配置文件 /etc/logrotate.conf
Red Hat Linux
缺省安装的文件内容是

缺省的配置一般放在logrotate.conf 文件的最开始处,影响整个系统。在本例中就是前面12行。

weekly
指定所有的日志文件每周转储一次。 rotate 4 指定转储文件的保留 4份。
errors root
指定错误信息发送给root
create
指定 logrotate 自动建立新的日志文件,新的日志文件具有和原来的文件一样的权限。
#compress
指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

Include /etc/logrotate.d 告诉 logrotate 读入存放在/etc/logrotate.d 目录中的日志转储参数,当系统中安装了RPM 软件包时,使用include 选项十分有用。RPM 软件包的日志转储参数一般存放在/etc/logrotate.d 目录。 include 选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d 。典型的应用有:apache, linuxconf, samba, cron 以及syslog 这样,系统管理员只要管理一个 /etc/logrotate.conf 文件就可以了。

五. Logrotate 的运行

1 判断系统的日志文件,建立转储计划以及参数,通过cron daemon 运行下面的代码是 Red Hat Linux 缺省的crontab 来每天运行logrotate

#/etc/cron.daily/logrotate (/etc/cron.daily/logrotate 每天运行内容如下)

#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

详细内容可以参考:

http://industry.ccidnet.com/pub/article/c322_a180627_p1.html

http://www.juntuan.net/wgjs/luyou/n/2005-08-11/7063.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-84347/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle 优化经典
请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13378917